网络层(一)—— IP协议
网络层
IP协议
IPv4报文格式
- 版本号: IPV4 就是 4,IPV6 就是 6 (4)
- 首部长度: 首部的长度,一般的IP数据报没有选项部分,因此一般为20 (4)
- 服务类型: 区分优先度,Qos 用,目前不怎么使用。(8)
- 总长度: IP数据报的总长度(首部+数据)。理论最多可以传送 65535 字节的 IP 数据包,然而一般很少有超过1500字节的(受限于MTU)。(16)
- 标识字段(16) 标志 (3) 段偏移(13)与分片有关。
- 生存时间 TTL:经过一个路由器减一。 字段为 0 时,数据报被丢弃,并且发送 ICMP 报文 通知源主机。目的是防止数据报在选路时无休止地在网络中流动。(8)
- 协议:指示IP数据报的数据部分应当交给哪个应用层协议(如6为TCP,17为UDP),将网络层与运输层粘合在一起。 (8)
- 首部校验和:仅对首部进行校验。
- 源地址:(32)
- 目的地址:(32)
IPv4数据报分片
-
由于不同链路层协议的MTU不同,因此有可能一个IP分组要大于该数据链路的MTU,这就要求将IP数据报中的数据分片成两个或更多个较小的IP数据报,用单独的链路层帧封装这些较小的IP数据报,然后通过输出链路发送这些帧。每个这些较小的数据报都称为片。
-
片的组装都在端系统中进行,为了能够按原顺序组装,IP数据报中有标识,标志和片偏移字段。
-
分片后的IP数据报,数据区是原IP数据报数据区的一个连续部分,头部是原IP数据报头部的复制,
-
在IP头里面,16位识别号唯一记录了一个IP包的ID,具有同一个ID的IP分片将会重新组装;13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位标志则标志着该分片后面是否还有新的分片。
R:保留未用;DF:Don’t Fragment,“不分片”位,如果将这一比特置1,IP 层将不对数据报进行分片;MF:More Fragment,“更多的片”,除了最后一片外,其它每个组成数据报的片都要把比特置1;Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8。
不分片DF(Do not Fragment)标志如果被置1,则数据报在
重组:
当分了片的IP数据报到达最终目标主机时,目标主机对各分片进行组装,恢复成源主机发送时的IP数据报,这个过程叫做IP数据报的重组。
在IP数据报头部中,标识用16位二进制数表示,它唯一地标识主机发送的每一份数据报。在一个数据报被分片时,每个分片仅把数据报“标识”字段的值原样复制一份,所以一个数据报的所有分片具有相同的标识。
目标端主机重组数据报的原理是:
(1)—根据“标识”字段可以确定收到的分片属于原来哪个IP数据报;
(2)—根据“标志”字段的“片未完MF”子字段可以确定分片是不是最后一个分片;
(3)—根据“偏移量”字段可以确定分片在原数据报中的位置。
关于IP协议的常见问题
如何理解 IP 的不可靠和无连接。
- 不可靠:指的是不能保证数据报能成功地到达目的地。 发生错误时候,丢弃该数据包,发送 ICMP 消息给信源端。 可靠性由上层提供。
- 无连接:IP 不维护关于后续数据报的状态信息。
体现在,IP 数据可以不按顺序发送和接收。A 发送连续的数据报,到达 B 不一定是连续的, 来回路由选择可能不一样,路线也不一样,到达先后顺序也不一样。
为什么 IP 首部中要有总长度字段?
- 因为一些数据链路(以太网)需要填充一些数据以达到最小长度。因为以太网帧的最小长度 是 46 个字节,但是 IP 长度可能更短,所以需要总长度来确定 IP 数据部分的内容。(区分哪些是填充位)
首部校验和怎么计算的,与 ICMP,IGMP,TCP,UDP 的首部校验和有什么区别与共同点?
(1) 先把校验和字段置 0。
(2) 对首部中每个 16 位比特进行二进制反码求和。
(3) 结果存在检验和字段中。
(4) 收到一份 IP 数据包后,同样对首部中每个 16bit 二进制反码求和。
(5) 最后结果全为 1,表示正确,否则表示错误。
(6) 如果是错误的,IP 就丢弃该数据报,但是不生成差错报文,由上层去处理。
共同点:用到的算法都是一样的。
区别:IP 计算的时候没有将数据包括在内。 ICMP,IGMP,TCP,UDP 同时覆盖首部和数据检验码。
IP 路由选择的特性有什么?
- IP 路由选择是逐跳进行的。
IP 并不知道到达任何目的的完整路径,只提供下一跳地址。 - 为一个网络指定一个路由器,而不是为每个主机指定一个路由器。 这样可以缩小路由表规模。
IP搜索路由表的步骤
- 搜索匹配的主机地址 ---->搜索匹配的网络地址 ---->搜索默认选项
- IP 层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。
如果路由表中没有默认项,而又没有找到匹配项,这时如何处理?
结果取决于该 IP 数据报是由主机产生的还是被转发的。 如果数据报是由本机产生的,那么就给发送该数据报的应用程序返回一个差错,或者是“主机不可达差错”或者是“网络不可达差错”。
如果是被转发的数据报,就给原始发送一份 ICMP 主机不可达的差错报文
IP 地址的分类,如何划分的,及会计算各类地址支持的主机数
- A 类地址:首位为 0,1.0.0.1~~126.255.255.254;主机号 24 位
- B 类地址:首位为 10,128.0.0.1~~191.255.255.254;主机号 16 位
- C 类地址:首位为 110,192.0.0.1~~223.255.255.254;主机号 8 位
- D 类地址(多播地址,也叫做组播地址):首位为 1110,224.0.0.1~~239.255.255.254
- E 类地址:此类地址是保留地址,首位为 11110,240.0.0.1~~254.255.255.254