其他分享
首页 > 其他分享> > IP网际协议

IP网际协议

作者:互联网

IP协议简介

IP是TCP/IP协议族中最为核心的协议。所有的 TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。

IP协议提供不可靠、无连接的数据报传送服务。

不可靠的意思是它不能保证 IP数据报能成功地到达目的地。 IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, IP有一个简单的错误处理算法:丢弃该数据报,然后发送 ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。

无连接这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。IP数据报可以不按发送顺序接收。

IP首部各个字段介绍

普通IP首部长度为20个字节,除非包含选项字段。一个IP数据报的头部如下:

在首部中最高位记为0bit,最低位记为31bit。

4个字节32bit的值以下面的次序进行传输:首先是0~7bit,其次是8~15bit,然后是16~23bit,最后是24~31bit。这种传输次序称作big endian字节序

分析一下IP数据报中首部的各个字段

4位版本号:代表着IP数据包的协议版本号,可以为4或者6,分别代表IPv4和IPv6。

4位首部长度:首部长度指的是IP首部占 32 bit字的数目,包括任何选项。由于它是一个 4比特字段,因此首部最长为60个字节。 

8位服务类型(TOS):服务类型(TOS)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。

不同应用建议的TOS值。

16位总长度(字节数):总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段。可以知道IP数据报中数据内容的起始位置和长度。由于该字段长为16bit,所以IP数据报的最长可达65535字节。但是大多数的链路层会对IP数据报进行分片,主机要求不能结束超过576字节的数据报。

标识:标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1。

3位标志字段:一位保留位RB;一位表示MF,更多的分片,如果此位置为1,则表示后面还有分片;一位DF,表示不分片位。如果将这一比特置 1,IP将不对数据报进行分片。

13位片偏移字段:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。

8位TTL生存时间:TTL生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。T T L的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送 ICMP报文通知源主机。

8位协议:协议字段是IP协议根据此字段对数据报进行分用。

16位首部校验和字段:首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。

为了计算一份数据报的 IP检验和,首先把检验和字段置为 0。然后,对首部中每个 16 bit进行二进制反码求和(整个首部看成是由一串 16 bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部中每个 16 bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么IP就丢弃收到的数据报。

32位源IP地址32位目的IP地址:表示IP数据报的发送端源地址和接收端源地址。

最后一个字段是任选项,是数据报中的一个可变长的可选信息。这些任选项的定义如下:

• 安全和处理限制(用于军事领域)

• 记录路径(让每个路由器都记下它的 IP地址)

• 时间戳(让每个路由器都记下它的 IP地址和时间)

• 宽松的源站选路(为数据报指定一系列必须经过的 IP地址)

• 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址)。

说起来比较抽象,找wireshark抓个包看一下:

这是一个IPV4的报文,里面是IPV4的具体内容,包含上面介绍的所有部分。TOS就是其中的DSCP,是区分服务字段拥塞表示符字段的组合。

标签:字节,首部,IP,网际协议,分片,bit,数据
来源: https://www.cnblogs.com/longlyseul/p/12926542.html