网络及TCP/IP简明快速基础-阿里云开发者社区

开发者社区> leshami> 正文

网络及TCP/IP简明快速基础

简介: 网络基础知识,除了网络管理人员必须掌握之外,对于系统运维人员,数据库管理员以及程序员等多了解和掌握是有百利而无一害。
+关注继续查看

网络基础知识,除了网络管理人员必须掌握之外,对于系统运维人员,数据库管理员以及程序员等多了解和掌握是有百利而无一害。本文简明扼要介绍了网络常见的名词及术语以及TCP/IP模型,并列出了几个网络相关的常见问题,旨在快速了解或者用于归纳型回顾这些知识。供大家参考。

一、常规名词术语

MAC地址:
  媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。

CSMA/CD:
  基带冲突检测的载波监听多路访问技术(载波监听多点接入/冲突检测),是一种争用型的介质访问控制协议。在传统的共享以太网中,所有的节点共享传输介质。如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。CSMA/CD应用在 OSI 的第二层数据链路层。

Token Ring令牌环:
  令牌环网(Token Ring)是一种 LAN 协议,定义在 IEEE 802.5 中,其中所有的工作站都连接到一个环上,每个工作站只能同直接相邻的工作站传输数据。通过围绕环的令牌信息授予工作站传输权限。

冲突域:
  所有在底层设备上能发生冲突的集合,可以使用以下方式解决冲突域
  网桥:是用来分割冲突域的设备
  多接口:交换机

广播域:
  指网络中所有能接收到同样广播消息的设备的集合

单播
  网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一般网络用户不知道而已。例如,你在收发电子邮件、浏览网页时,必须与邮件服务器、Web服务器建立连接,此时使用的就是单播数据传输方式。但是通常使用“点对点通信”(Point to Point)代替“单播”,因为“单播”一般与“多播”和“广播”相对应使用。补充@20170907

多播
  “多播”也可以称为“组播”,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为如果采用单播方式,逐个节点传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的。采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的。IP网络的多播一般通过多播IP地址来实现。多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址。补充@20170907

物理网络介质:
  物理层,物理层协议:
  数据链路层,数据帧,链路层协议
  网络层:数据包,ip协议
  传输层:ip内部多一个端口,传输层协议 TCP.UDP
  TCP:0-65535
  UDP:0-65535
  应用层:标记资源

  端口:用于标记进程的
  0-65535:

Socket(套接字):ip:port
  源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。
  网络通信必需的五种信息:
    连接使用的协议
    本地主机的IP地址
    本地进程的协议端口
    远地主机的IP地址
    远地进程的协议端口
  套接字分类
    流套接字(SOCK_STREAM),提供面向连接、可靠的数据传输服务,即TCP(The Transmission Control Protocol)协议
    数据报套接字(SOCK_DGRAM),该服务并不能保证数据传输的可靠性,数据报套接字使用UDP(User Datagram Protocol)协议进行数据的传输。
    原始套接字(SOCK_RAW),允许对较低层次的协议直接访问,比如IP、 ICMP协议

MTU:Maximum Translater Unit
  最大传输单元,指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位,通常为1500)。
  最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。
  对于大于MTU单位的数据库传输,则需要进行分片(Fragment:IP分片)。
  MTU越大,则一个协议数据单元的承载的有效数据就越长,通信效率也越高。MTU越大,传送相同的用户数据所需的数据包个数也越低。
  反过来,MTU越大也容易导致数据包的延迟也越大,数据包中 bit位发生错误的概率也越大。

有限状态机(FSM:Finite State Machine)

协议栈:在内核实现
  TCP/IP协议簇

二、TCP/IP模型及IP地址、路由

  物理层: 利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。常用设备有(各种物理设备)网卡、集线器、中继器、调制解调器、网线、双绞线、同轴电缆
  链路层:从设备到设备主机通信,MAC地址,MAC<–>IP(RARP/ARP),解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧
  网络层: 从源主机到目标主机之间通信,IP地址,IP报文,解决如何使数据包通过各结点传送的问题
  传输层:从源主机进程到目标主机特定进程之间通信,tcp/udp,即提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题
  应用层: 向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等

ISO/OSI模型:七层
  1-4层:通信子网
  5-7层:资源子网(对应到TCP/IP模型的应用层
  会话层
  表示层
  应用层

TCP:有连接协议,建立逻辑链接
  SYN,ACK,FIN,RST,PSH,URG

  三次握手:
    SYN=1 ACK=0,FIN=0
    SYN=1 ACK=1 FIN=0
    SYN=0 ACK=1 FIN=0
    四次断开:

主机名:FQDN(Full Qulified Domain Name)
  唯一表示因特网上一台主机的名称,通常形式为computer_name.domain.com

IP地址:
  用于为互联网上的每一个网络和每一台主机分配的一个逻辑地址,用于屏蔽物理地址差异(MAC地址为十六进制,难以记忆)
  IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
  例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
  IP地址由网络ID和主机ID组成,即32位二进制中包含了网络ID和主机ID。同一物理网络网络ID相同,主机ID不同。
  由于使用的场景不同,因此,按使用情形分为大中小型网络,大型网络即子网少,主机多,小型网络则子网多,主机数少

类别  最大网络数      IP地址范围               最大主机数  私有IP地址范围              备注
---- ------------   ------------------------  -----------  ----------------------    --------------------------
A   126(2^7-2)    0.0.0.0-127.255.255.255  16777214    10.0.0.0-10.255.255.255   使用8位表示网络ID,大型网络
B   16384(2^14)    128.0.0.0-191.255.255.255  65534    172.16.0.0-172.31.255.255  使用16位表示网络ID,中型网络
C   2097152(2^21)  192.0.0.0-223.255.255.255  254      192.168.0.0-192.168.255.255 使用24位表示网络ID,小型网络
D                    224.0.0.0-239.255.255.255                               多播(组播)地址(multicast address)

D类IP地址在历史上被叫做多播地址(multicast address),即组播地址。
在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。
多播地址的最高位必须是“1110”,范围从224.0.0.0到239.255.255.255。    

特殊的网址
每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;
IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;
IP地址中凡是以“11110”开头的E类IP地址都保留用于将来和实验使用。
IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试,
    如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的Web服务器。
网络ID的第一个8位组也不能全置为“0”,全“0”表示本地网络。
全0:网络地址
全1:广播地址

子网掩码(subnet mask)
  又叫网络掩码、地址掩码、子网络遮罩,主要用于指明一个IP地址的哪些位标识的是主机所在的子网ID,以及哪些位标识的是主机ID。
  子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
  缺省的子网掩码
    A类:255.0.0.0
    B类:255.255.0.0
    C类:255.255.255.0

子网划分
  比如B类私有网络172.16.0.0/255.255.0.0现在需要将其划分子网,设定子网掩码为255.255.255.0
  由于全1的掩码在同IP地址做与运算时得到网络ID,即原来的网络ID由172.16变成了172.16.255
  则该地址的范围如下
    172.16.0.0/255.255.255.0 – 172.16.255.0/255.255.255.0

子网合并
  假定C类私有网络192.168.0.0/255.255.255.0 – 192.168.255.0/255.255.255.0进行如下合并
    192.168.0.0/255.255.0.0 则变成大网络

路由表:
  对于跨网络主机直接的通信与访问,借助于路由表来实现。
  路由表保存了到达特定网络终端的地址,其表项通常包括以下内容
    目标地址或目标网络(destination mask pre costdestination)
    子网掩码(netmask mask) ### Author : Leshami
    优先级(pre) ### Blog : http://blog.csdn.net/leshami
    路由开销(cost) ### QQ/Weixin : 645746311
    输出接口(interface)
    下一跳(nexthop)

  路由表生成方式
    静态设置
    动态生成(通告):

  cost:开销,成本
    经过的跳数越少就越小
  时长
  路由协议:RIP,OSPF,EIGRP
  可路由协议:IP协议 MAC协议

三、常见问答

如何判断目标主机与本机是否位于同一网段?
  利用子网掩码的功能来实现。基于二进制的特性, 1逻辑与任何数的结果为任何数,0逻辑与任何数结果为0
  首先本机利用子网掩码来与本机IP地址做逻辑与运算,即可以得到本机的网络ID以及主机ID
  其次将目标主机与本机的子网掩码做同样的运算,如果得到的网络ID相同,即位于同一个网络段。否则位于不同的网络段
  子网掩码连续全1的是网络地址,后面的是主机地址。
  对于不同的网络段IP地址通信,应通过路由器的路由表(或缺省网关)记录的网络段转发到不同的子网中去

根据IP地址及子网掩码如何计算得到子网ID,广播地址,地址范围,可容纳主机数目?

假如给定IP地址    IP: 58.61.29.11 Netmask:255.255.255.248

网络类型:58小于127,因此当前属于A类网络IP,缺省的掩码应当为255.0.0.0,当前使用非缺省掩码即255.255.255.248

    计算子网ID
          IP地址:    00111010.00111101.00011101.00001 011    //使用IP地址与子网掩码做与运算(换算成二进制)
          子网掩码:  11111111.11111111.11111111.11111 000  //留空列前为全1,即为子网地址,子网之后为主机地址 
          与运算结果:00111010.00111101.00011101.00001 000 
          网络ID:        58      61      29      8

          子网掩码全是1的为网络地址,也就是29位,如果用点分十进制表示,原IP地址可表示为58.61.29.9/29                

    计算广播地址
          与运算结果:00111010.00111101.00011101.00001 111 //将子网地址之后的主机地址变为全1,即为广播地址
          网络ID:       58      61      29      15

    计算IP范围
          地址范围是: 网络地址+1至广播地址-1 (网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址)
          地址范围:58.61.29.9 - 58.61.29.146个IP地址
          主机数量:2^3-2=6个IP地址

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一3.3.2 实验室小结
本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第3章 ,第3.3.2节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1107 0
Nodejs基础:路径处理模块path总结
在nodejs中,path是个使用频率很高,但却让人又爱又恨的模块。部分因为文档说的不够清晰,部分因为接口的平台差异性。 将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了。
3948 0
解决TCP网络传输“粘包”问题
当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。
1160 0
《C++语言基础》实践项目——异常处理和命名空间
返回:贺老师课程教学链接 【项目1-平方根中的异常】 编写一个程序,求输入数的平方根。设置异常处理,当输入负数时采用异常处理机制给出提示。 [参考解答] 【项目2-有些数的阶乘不算了】 求n!的函数,当用户的输入为负数,以及输入数太大时(例如大于12),使用异常处理机制予以拒绝,并给出恰当的提示。 [参考解答] 【项目3-max带来的冲突】 分析下面程序出现的
820 0
+关注
leshami
传播知识,分享快乐!十年以上数据库,系统运维与管理,性能优化经验。全部文章,欢迎扩散,转载请注明出处!
639
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载