TCP/IP网际层协

来源:百度文库 编辑:神马文学网 时间:2024/04/25 23:50:06
TCP/IP网际层协议
TCP/IP协议栈的网际层提供寻址和路由选择协议,路由器主要工作在该层。TCP/IP协议栈
的网际层对应OSI参考模式的网络层,该层主要运行几个协议。
网际协议(IP):对数据包进行非连接的最佳路由选择,它不关心数据包的内容,只选择一个
路径将数据包送到目的地。
网际控制报文协议(ICMP):提供控制和传递信息的功能。
地址解析协议(ARP):由已知的IP地址确定数据链路层的MAC地址。
反向地址解析协议(RARP):有已知的数据链路层确定IP地址。
动态主机配置协议(DHCP):将IP地址和一些TCP/IP配置分配给网络中的计算机的一向服务
协议。
IP
在TCP/IP协议栈,IP主要负责逻辑寻址。通过相应管理机制。可以使不同设备之间利用IP
地址进行通信。
IP头格式
IP数据包由IP头和数据组成。
名称
描述
版本
表明了一个数据包采用的是因特网协议的那个版本。对于IPv4,这个值为4
头长度
以字节为单位的报头长度
服务类型
数据包的处理方式,前三位是优先级
总长度
报头和数据的总长度
标识
惟一的IP数据包,可以理解为IP报文的序列号,用于识别潜在的重复报文等
标志
指出数据包是否存在
段位移
段位移也称为片位移,它是指对数据包分片以允许互联网上的不同MTU
生存期
报头的存活时间,一旦该计算值减为0,该报就丢弃。TTL用于限制一
个IP包做敬礼的站点数。正常设为64,最大设为255,TTL每经过一
个路由器便减1.当值为0时,数据包被丢弃。同时,路由器向发送者
返回一个ICMP超时信息。通常数据包只会由于网络回路而被丢弃。
例如:当第一台路由器认为到达某一目的端的路径要经过第二台路由
器,而第二台路由器认为到达某一目的端的路径要经过第一台路由器,
这时会发生什么情况呢?当第一台路由器接收到一个发往给目的地地
址的数据包时,它会将数据包转发给第二台路由器,而第二台路由器将会数据包重新转发给第一台路由器,然后第一台路由器有又将包转
发给第二台路由器。如果没有TTL,这个包就会在这两台路由器构成的
回路中永远转下去。这样的回路在大的网络中经常会出现。
协议
发送数据包的上层(第四层)协议
头检验和
报头上的完整性检查。头检验用来确认接收到的IP报头中有没有差错
头校验和只由IP报头的各个域计算得来,而与IP包的净荷无关,IP
包净荷的校验则是高层协议的工作。如果目的地计算的校验和与报文
所含的检验和不同,那么这个数据包就会被丢弃。
源IP地址
标识通信终端设备的IP地址
目的IP地址
标识通信中断设备的IP地址
IP选项
网络测试、调试、安全等功能
数据
需要传输的数据
数据包的的大小、网络MTU及TCP最大报文段长度
下面介绍数据包分片、网络MTU、TCP最大报文段长度等概念,以加深读者对TCP/IP协议
栈的理解。
数据包的分片
数据包是被封装在物理帧中传输的,对于网络硬件来说,他们对一个物理帧的可传输数据
量都规定了一个上限值,这个上限值就是最大传输单元,即数据包的MTU(Maximum Transfer
Unit)。例如,源于令牌环网的数据包最大传输单元(MTU)为4500字节,而以太网的数据包
最大传输单元为1500字节,FDDI的数据包最大传输单元为4770字节。如果数据包的大小
比互联网中最大的MTU要大,它是无法被封装到帧中去的;相反如果数据包的大小被限制
为互联网中最小网络的MTU,这种做法也是很不经济(因为在大MTU的网络上,会造成带宽
浪费)。
TCP/IP泽洋选择数据包的MTU呢?主要有一下两点。
TCP/IP选择接近相连网络的MTU值为初始数据包大小,例如,某台主机连接在以太网上,
那么TCP/IP会选择某个接近1500字节的值为初始数据包(如1400、1440、1480等)。
为什么会选择诸如1400这样的数值呢?因为IP数据包以8倍数的字节数表示数据包的段位
移所以数据包大小肯定是8的倍数。
TCP/IP同时也提供了一种机制:在MTU较小的网络上,可以把大数据包划分成更小的数据
包片(分片),即如果TCP选择初始数据包大小为1500字节,在中途有个MTU为620的网络
处于两种网络薄片(分片),处于两种网络分界处的路由器会对数据包进行分片操作。
IP报头中的标志和段位移就是用于将大IP包分割成几个称为片的小块,以保证它可以顺利
通过物理处理大IP包的网络。其中,标识是发送端填写的值,以便接收端重组那些不得不
分成几个片的包;段位移可以标识出每个分段偏移量,从而使目的的系统可以正确地重组
原来数据包。
这种分片不一定要把数据包分成限制大小的片,首先选择最接近网络MTU的8倍数的字节数
为数据包大小;一般最后一片是前面分下来的零头,所以最后一片往往比其他片小。
分片以后所得的每个数据包的格式都与原来的数据包相同,都包含了原来数据包的IP报头
数据包片的总长度(报头+数据)小于网络MTU。
源站点选择了1500字节作为数据包大小(20+1480,其中20为IP报头长度),每个数据包
经过两种网络的边界路由器时,被分成3片,每片的大小都小于或等于620字节,这样数据
包就可以顺利地通过整个网络。那么数据包分片以后怎样重组呢?下面就来讨论这个问题。
数据包分片后的重组
首先强调一点,数据包分片后的重组是发生分片到达目标主机之后,而不是在通过MTU
较小的网络之后的网络,重组依然发生在分片到达目标主机之后。如果在传输过程中某个
分片丢失了,目标主机将丢弃整个包,所以分片增加了数据包丢失的概率,应尽量避免数
据包分片。
虽然在目标主机上重组数组包片存在一些缺点,但是每个数据包片可以像数据包一样选择
路由(可以在多路坏境了实习那覆载平衡),即数据包的一部分分片走链路1。另一部分走
链路2,而且路由器不负担数据包片的重组工作也有利于减轻路由器负担。
TCP最大报文段长度
前面讲到传输层的TCP要对应用层生成的数据流进行分段,通信双方必须协商一个最大的
报文段长度(Maximum Segment Size)。一帮情况下TCP自动计算机选择合适的报文段长度,
使IP数据包与网络MTU相适应。
在互联网中选择合适报文段长度是很困难的,过大或者过小都会是网络性能变坏。一方面,
报文段太小会减低网络利用率。因为TCP报文段是封装在IP数据包又被封装在帧中,每一
层的封装都要加上自己的头部信息或尾部信息,如果报文段很小,每一层的头部或尾部信息
在数据帧中所占有的比重就大,这势必造成带宽的浪费。
另一方面,报文段也会降低网络性能。大的报文段产生了大的数据包,如果网络中存在MTU
较小的网路,TCP/IP就会对数据包进行分片。由于数据包片并不像数据段那样能进行与重
传,如果某个数据包在传输过程中丢失了,那么整个数据包就要被重传,如果数据包分片
太多,势必会影响网络性能。
理论上讲,TCP报文段最佳长度的要求是;尽可能携带更多的数据,而且IP数据包在传输
过程中尽量不要分片。这个要求只是理论要求,在真正实现时,还会遇到更多问题。