博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LWIP学习笔记3——IP协议
阅读量:4091 次
发布时间:2019-05-25

本文共 1849 字,大约阅读时间需要 6 分钟。

1 IP协议

IP 协议是一种无连接的不可靠数据报交付协议,协议本身不提供任何的错误检查与恢复机制。它是整个TCP/IP 协议栈的核心协议,上层协议都要依赖 IP 协议提供的服务, IP 协议负责将数据报从源主机发送到目标主机,通过 IP 地址作为唯一识别码。

1.2 IP 地址

IP 地址划分为 5 大类,分别为 A、 B、 C、 D、 E 五类,每一类地址都觉定了其中 IP 地址的一部分

组成。
在这里插入图片描述
在这里插入图片描述
受限广播地址:
限广播地址用于定义整个互联网, 如果设备想使IP 数据报被整个网络所接收,就发送这个目的地址全为 1 的广播包,但这样会给整个互联网带来灾难性的负担, 所以在任何情况下,路由器都会禁止转发目的地址为
255.255.255.255 的广播数据包, 因此这样的数据包仅会出现在本地网络中(局域网) ,255.255.255.255 这个地址指本网段内的所有主机。
直接广播地址:
受限广播地址是网络号与主机号都为 1 的地址,但是直接广播地址是主机号全为 1 而得到的地址,广播地址代表本网络内的所有主机,使用该地址可以向网络内的所有主机发送数据。
在这里插入图片描述
多播地址:
多播地址用在一对多的通信中,即一个发送者,多个接收者, 不论接受者员数量的多少, 发送者只发送一次数据包。 多播地址属于分类编址中的 D 类地址, D 类地址只能用作目的地址,而不能作为主机中的源地址。
环回地址:
127 网段的所有地址都称为环回地址,主要用来测试网络协议是否工作正常的作用。比如在电脑中使用 ping 命令去 ping 127.1.1.1 就可以测试本地 TCP/IP 协议是否正常。
本网络本主机:
IP 地址 32bit 全为 0 的地址(0.0.0.0)表示的是本网络本主机, 这个 IP 地址在 IP 数据报中只能用作源 IP 地址,这发生在当设备启动时但又不知道自己的 IP 地址情况下。在使用 DHCP 分配 IP 地址的网络环境中,这样的地址是很常见的, 主机为了获得一个可用的IP 地址,就给 DHCP 服务器发送 IP 数据报,并用这样的地址(0.0.0.0) 作为源地址,目的地址为 255.255.255.255(因为主机这时还不知道 DHCP 服务器的 IP 地址) ,然后 DHCP服务器就会知道这个主机暂时没有 IP 地址,那么就会分配一个 IP 给这个主机。

1.3 IP 数据报

整个 IP 数据报的理论最大长度为 65535 字节然而,数据报很少有超过 1500 字节的,这是因为底层链路硬件不允许那么大的数据报出现在链路上,以太网数据帧的最大长度为 1500 个字节,当有一个很大的 IP 数据报出现的时候,就需要进行分片处理;而如果 IP 数据报的数据很少的时候,比如少于 46 个字节,那么在以太网进行发送数据的时候会填充一定的字节以满足以太网帧最小度,那么在接收方就要根据这个字段的内容进行提取有效数据。

在这里插入图片描述
在这里插入图片描述

1.4 IP 数据报分片

分片处理是将 IP 数据报中的数据分片成两个或更多个较小的 IP 数据报,用单独的链路层帧封装这些较小的 IP 数据报;然后向输出链路上发送这些帧, 每个这些较小的数据报都称为分片,由于 IP 数据报的分片偏移量是用 8 的整数倍记录的,所以每个数据报中的分片数据大小也必须是 8 的整数倍。每个数据分片到达目标 IP 地址的主机时间是不一样的。

在发送主机中,它会把需要分片的数据进行切割(分片) ,按照数据的偏移量进行切割,切割后形成的每个 IP 数据报(即分片)具有与初始 IP 数据报几乎一样的 IP 数据报首部,为什么说是几乎一样而不是全部一样呢,因为 IP 数据报首部的标志、分片偏移量这两个字段与分片有关,不同的分片,这些信息可能不一样,不同的分片数据报长度也是不一样的,校验和字段也是不一样的。 但是源 IP 地址、目标 IP 地址与标识号肯定是一样的,每个分片上的分片偏移量字段是不一样的。
IP 是一种不可靠的服务,一个或多个分片可能永远到达不了目的地。因为这种原因,为了让目标主机相信它已经收到了初始 IP 数据报的最后一个分片,其最后一个分片上的标志字段(最后一位)被设置为 0。 而所有其他分片的标志被设为 1。另外,为了让目的主机确定是否丢失了一个分片(且能按正确的顺序重新组装分片),使用偏移字段指定该分片应放在初始 IP 数据报的哪个位置。
在这里插入图片描述

1.5 IP 数据报发送

在这里插入图片描述

1.6 IP 数据报接收

在这里插入图片描述

转载地址:http://mdnii.baihongyu.com/

你可能感兴趣的文章
ES7的Async/Await
查看>>
React Native WebView组件实现的BarCode(条形码)、(QRCode)二维码
查看>>
每个人都能做的网易云音乐[vue全家桶]
查看>>
JavaScript专题之数组去重
查看>>
Immutable.js 以及在 react+redux 项目中的实践
查看>>
Vue2.0全家桶仿腾讯课堂(移动端)
查看>>
React+Redux系列教程
查看>>
react-native 自定义倒计时按钮
查看>>
19 个 JavaScript 常用的简写技术
查看>>
ES6这些就够了
查看>>
微信小程序:支付系列专辑(开发指南+精品Demo)
查看>>
iOS应用间相互跳转
查看>>
iOS开发之支付宝集成
查看>>
iOS开发 支付之银联支付集成
查看>>
iOS开发支付集成之微信支付
查看>>
浅谈JavaScript--声明提升
查看>>
React非嵌套组件通信
查看>>
Websocket 使用指南
查看>>
浏览器兼容性问题解决方案 · 总结
查看>>
一个很棒的Flutter学习资源列表
查看>>