《TCP/IP详解》_卷一_IP与路由的选择

毫无疑问,IP是整个TCP/IP体系中最为重要的,也是最核心的协议。在体系中,IP直接连接硬件接口,对上,所有的TCP、UDP、ICMP、IGMP数据都以IP数据报格式传输。

 

IP的传输有两大特征:不可靠和无连接。不可靠性意味着它不能保证IP数据报一定会成功的达到目的地,只负责传输,而不保证什么。记住,任何可靠性的保证都要由上层服务来提供,如TCP。无连接这个术语的意思是IP并不维护任何关于后续数据报的状态信息。对IP来说,每个IP数据报的地位都是相等的。所以,当你向某个目的方依次发送2个IP报A和B(先A后B),B可能先于A到达。

 

 

 

IP首部:

一般来说,若不包括可选项的话,IP首部一共有20字节。

 

版本号及首部长度:第一个字节Byte包括2部分,前4bit表示版本号,现在我们用的版本叫IPv4,其值为4固定不变.后4bit表示首部长度,需要注意的是,其单位为4byte,也就是说一般的IP报文(即没有可选项)的首部长度值为5(4byte)

 

服务类型(TOS):一共一个byte,包括3bit的优先权子字节(现在已被忽略,你不用管它),4bit的TOS子字段和1bit的未用位。4bit的TOS分别表示:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中一个为1,或者全为0.未用位必须置0.

 

IP报总长度:占2byte,指整个IP数据报的总长度,以字节为单位。理论上说,IP报文一共可达65535字节,但实际上,IP报文的长度远远小于这个值的。IP报文在以太网,也就是我们一般用的网,最小报文长度为46字节。

 

16bit的标识字段,3bit的标志,13位片偏移:这三个值我在前面的TCP协议简介中简单讲到过。以后若讨论到IP的分片和 重组的时候再详细讨论。

 

TTL(Time-to-live)生存时间字段:占1个byte这个字段限定了数据报可以经过的最多路由器个数,指定了数据报的生存时间。其初始值由源主机设置(通常为32或64),IP报没进过一个路由,其值就减一。当TTL的值减至0时,该IP报文就会被丢弃。

 

协议字段:占1byte。这个值可以识别是哪种协议向IP发送报文。

 

首部检验和:占3byte,即16bit。在前面讲TCP时讲过,检验和是路由或主机判断IP报文有没有被修改或者错误的一个保证。注意,这里的检验和只对IP首部进行检验,而不涉及IP报文中的数据。TCP、UDP等报文首部有各自的首部检验和保证其正确性。

 

源IP地址和目的IP地址:这个理解起来应该简单吧。都是32bit的。

 

 

PS,关于检验和的求法:首先将首部检验和置0,然后对IP报文中每16bit进行二进制反码求和,结果存在检验和中。当接收方在接收到一个IP数据报时,同样对首部进行16bit反码求和,由于接收方在计算的时候算进了首部的检验和,因此结果将是全1的。若结果不全是1,IP报文将被丢弃。还要注意的是,由于TTL在经过路由器时会减1,因此,检验和要相应加1,而不用重算。

 

 

 

 

IP路由选择:

从概念上来讲,IP路由选择是简单的,特别是对主机来说。

 

IP的路由选择其实就类似于递归算法,它简单的将IP寻路分为2种情况:主机和目的主机直接相连,或者,数据报将发送到默认的路由器,并假定此路由与目的主机相连,由它来寻路。

 

 

IP路由选择是一个逐跳式的过程。IP层会在内存中存储一个路由表,这个表保存了与该主机相连的路由信息。当一个IP达到,IP层会搜索路由表,并在其中找到最合适的下一站路由来发送信息。这个算法是复杂的,这里也就不详细讨论了,等我弄懂了再说。

你可能感兴趣的:(IP层,路由选择)