9.2.7 本网络本主机地址IP 地址 32bit 全为 0 的地址(0.0.0.0)表示的是本网络本主机,只能做源IP地址 。
在当设备启动时但又不知道自己的 IP 地址情况下常见 。
9.2.8 子网子网掩码 & 判断是否在同一子网:IP 与 子网掩码 做 按位与,就可以得出该 IP 的子网网段 。如:
- 子网掩码:255.255.255.0
- IP-1: 192.168.1.2 & 255.255.255.0 = 192.168.1.0
- IP-2: 192.168.1.123 & 255.255.255.0 = 192.168.1.0
- IP-3: 192.168.2.123 & 255.255.255.0 = 192.168.2.0
- 因为 192.168.1.0 = 192.168.1.0,所以IP-1与IP-2处于同一子网 。
- 因为 192.168.1.0 != 192.168.2.0,所以IP-1与IP-3不在同一子网 。
- 若源IP和目标IP在同一子网:直接获取目标IP主机的MAC,然后把数据包丢出去 。
- 若源IP和目标IP不在同一子网:获取默认网关的 MAC ,然后把数据包丢给默认网关那边 。
当前只需要知道NAT就是网络地址转换的作用即可,详细技术细节自行百度 。
9.3 IP数据报
文章插图
9.3.1 版本号字段占用4 bit 。
这个字段规定了数据报的 IP 协议版本 。
如:
- IPv4:值为4 。
- IPv6:值为6 。
用于记录 IP 首部的数据的长度 。
单位,字 。最大可以表示15*4=60字节 。
IP首部的长度默认是20 byte , 但是如果有选项字段,就不止20 byte了 。
9.3.3 服务类型(TOS:type of service)字段占用8 bit 。
该字段用于描述当前IP数据报急需的服务类型,如:
- 最小延时;
- 最大吞吐量;
- 最高可靠性;
- 最小费用等 。
9.3.4 总长度字段占用16 bit 。
是 IP 数据报的总长度(IP首部+数据区) 。
单位,字节 。最大能表示65535字节 。
数据报很少有超过1500字节的 , 因为以太网数据帧的数据最大长度为1500字节 。
如果一个IP数据报过大时,需要进行分片处理 。
9.3.5 标识字段标识字段、标志字段和13位偏移字段常在IP数据报分片时使用 。
占用16 bit 。
用于标识IP层发出去的每一份IP数据报,每发送一份 , 该值+1 。
如果IP数据报被分片,该字段在每个分片的IP数据报上是一致的,表示属于同一个IP数据报 。
在接收端会根据该字段识别同一个IP数据报进行重装 。
9.3.6 标志字段占用3 bit 。
第一个bit保留未用 。
第二个bit是不分片标志位:
- 0:则表示 IP 层在必要的时候可以对其进行分片处理 。
- 1:则表示 IP 数据报在发送的过程中不允许进行分片 , 如果这个 IP 数据报的大小超过链路层能承载的大小,这个 IP 数据报将被丢弃 。
- 0:后续没有更多分片 。即是当前分片的IP数据报是最后一个分片 。
- 1:表示后续还有分片 。即是当前分片的IP数据报不是最后一个分片 。
表示当前分片所携带的数据在整个 IP 数据报中的相对偏移位置 。
单位,8字节(2个字) 。
目标主机要接收到从0分片偏移量到最高分片偏移量的所有分片才能进行组装出完整的IP数据报 。
9.3.8 生存时间(Time-To-Live,TTL)字段占用8 bit 。
该字段用来确保数据报不会永远在网络中循环 。
IP数据报没经过一台路由器处理,该值-1 。
如果TTL字段下降到0 , 则路由器会丢弃该数据报 , 且会返回一个 ICMP 差错报文给源主机 。
9.3.9 协议字段占用8 bit 。
表示上层协议类型 。即是表示数据区的数据是哪个协议的数据报 。如:
- 6:表示TCP协议 。
- 17:表示UDP协议 。
- 其它值可以自行度娘 。
只针对IP首部做校验,并不关系数据区在传输过程中是否出错,所以对于数据区的校验需要由上层协议负责 。
路由器要对每个收到的 IP 数据报计算其首部检验和,如果数据报首部中携带的检验和与计算得到的检验和不一致,则表示出现错误,路由器一般会丢弃检测出错误的 IP 数据报 。
推荐阅读
- 【第5篇】AI语音简介
- 原神3.0陵薮市朝什么时间开启
- 【Azure 环境】把OpenSSL生产的自签名证书导入到Azure Key Vault Certificate中报错
- 常用类.String类
- cf如何跳上高箱子(cf开什么箱子赚cf点)
- macos monterey描述文件下载_macos monterey描述文件下载地址
- 浏览器怎样清除缓存(浏览器历史清空了怎么恢复)
- 我的世界豹猫怎么驯服,为什么给豹猫喂鱼之后不变成猫
- 支付宝蚂蚁庄园每日答题答案
- 原神90级提纳里毕业面板数值怎么样