分享

TCP/IP网际层协议——IP

 wangxuqin 2010-10-11

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数据包在传输

过程中尽量不要分片。这个要求只是理论要求,在真正实现时,还会遇到更多问题。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多