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