【IP协议】IP协议报头结构

简介: 【IP协议】IP协议报头结构

IP 协议报头结构

4位版本

实际上只有两个取值

  • 4 ==> IPv4(主流)
  • 6 ==> IPv6

IPv2IPv5 在实际中是没有的,可能是理论上/实验室中存在

4位首部长度

IP 协议报头也是变长的,因为选项个数不确定,所以报头长度也不确定。因此就需要使用 4 位首部长度进行区分

4 位首部长度范围:0~15,所以报头长度 *4 才是实际的长度

  • 当报头长度为 15,则实际报头长度为 15*4=60

8位服务类型

type of service

3位优先权字段(已经弃⽤),4位 TOS 字段,和 1位保留字段(必须置为 0)。4位 TOS 分别表⽰:

  • 最⼩延时:从 A 到 B 的时间消耗更少
  • 最⼤吞吐量:从 A 到 B,单位时间内传输的数量更多
  • 最⾼可靠性:数据丢包概率更小(IP 协议并不想 TCP 那样有严格的可靠性)
  • 最⼩成本:设备上消耗的资源更少
    这四者相互冲突,只能选择⼀个。其中一个为 1,那么其他的都得为 0。IP 协议拥有变身技能!

16位总长度

IP 数据报的长度

UDP 也是 16 位(2 个字节,64KB)。但并非 IP 协议报头最多能携带的数据就是 64KB

IP 协议内置了拆包组包机制,单个 IP 数据报确实没法超过 64KB,但是不代表 IP 协议不能传输超过 64KB 的数据。IP 协议会自动把大的数据包,拆成多个 IP 数据报携带传输,在接收方再进行拼装

装修的时候,装柜子/床,进不了电梯,也进不了房门,怎么办?

  • 厂家发的货就不是拼装好的柜子和床,而是零件
  • 我们就可以先把零件搬进去,然后再组装起来

16位标识、3位标志、13位片偏移

IP 协议会自动拆包,统一个载荷的数据,会被分成多分,交给多个 IP 数据报来携带。多个 IP 数据包之间:

  • 16位标识 是相同的数值,
  • 13位片偏移决定组包时候数据报的位置
  • 网络传输数据的时候会存在后发先至的情况,所以不能按照发送顺序就确定接受顺序
  • 3位标志只有两位有效(有一位是保留位,现在不用,以后可能用,先占个位置)
  • 其中一个标识这个包是否需要组包(是否是拆包的一部分)
  • 另一个表示当前包是否是组包中的最后一个单位

最后组包的时候,根据 16 位标识 确定哪些数据包放在一组,然后根据 13位片偏移 决定顺序,最后根据 3位标志位 决定是不是最后一个

如果就是想使用 UDP 实现传输找过 64KB 的数据,该怎么做呢?

  • 此处参考 IP 协议
  • 在应用层编写代码的时候
    - 引入“标识”,约定标识相同的数据,就应该进行组包
    - 引入“片偏移”,约定组包的时候的先后顺序
    - 引入“标志位”,区分是否需要组包,标识最后一个包

8位生存时间

描述了一个数据包在网络上存活的最长时间

  • 假设构造一个 IP 数据报,目的 IP 写错了(不存在的 IP 地址),结果这个数据包就在网络上传输了很久,也没有达到目的地。
  • 如果让这样的数据包无限传输的话,就会消耗很多网络资源
  • 这样的数据包存在一个两个还好,要是存在很多呢?总不能让这些数据包把路全部堵死了吧

TTL 就是约定了一个传输时间的上限,当达到上限之后,数据包就会被自动丢弃掉

  • 它的单位不是 s 或者 min,而是次数(经过路由器转发的次数)

发送一个 IP 数据报的时候,会有一个初识的 TTL 的值(32,64,128…)。数据包每次经过一个路由器转发,TTL 就会 -1(经过交换机不减)。一旦 TTL 减到 0 了,此时这个数据包就会被当前的路由器直接丢弃掉


  • ping命令:用来检测网络的连通性
  • 输入命令后,我们的电脑就会给百度发送一个数据包,百度收到这个 ping 命令的数据包之后,就会返回一个响应
  • 我们发送了四次 32 字节的数据包
  • 几十毫秒,说明网络比较好;上百,上千毫秒说明网络比较卡
  • 咱们初始 TTL 应该是 64,中间经过了 12 个路由器的转发,最终到达了百度

64 这样的 TTL 够用吗?

  • 正常情况下,64这样的TTL非常充裕
  • 六度空间理论(社会科学中的理论)
  • 而且发送数据的时候,还有 128 这样的 TTL

8位协议

IP 数据包中,携带的载荷,是哪种传输层协议的数据包

通过这里的不同数值,感知到接下来要把数据给 TCP 解析,还是 UDP 解析,还是其他协议解析

  • 类似于 TCP/UDP 报头中的“端口号”,决定要将这个数据交个哪个应用程序,也就是要将这个数据交给哪个应用层的具体协议进行处理
    现在 IP 协议要先交给传输层,交给哪个传输层协议进行处理,就通过 8位协议 进行标识

具体的数值这里不谈,这里暂时只聊作用

16位首部校验和

验证数据在传输中是否出错(只是针对首部,IP 报头)

  • 载荷部分 TCP/UDP 都有自己的校验和,此处就不需要再次进行验证了

32源 IP 地址、32位目的 IP 地址

IP 数据报中最关键的信息:数据包从哪里来,到哪里去


  • 输入:ipconfig,就可以看到当前机器的 ip 地址
  • IP 地址是 32 位的整数
  • 这是一个很大的数字,不方便人进行阅读和理解
  • 就把 32 位(4 字节)通过 3 个圆点分隔开,每个部分是一个字节,范围 0-255(只要有一个部分不在这个范围,就可以认为是一个非法/错误的 IP)
  • 这就是“点分十进制”写法
  • 但计算机在底层处理这些数据的时候,都是当成 32 位的 IP 地址来处理的

IP 地址,用来标识网络上的一个设备。期望 IP 地址是唯一的

  • 32 位表示的范围:0—42亿9千万
  • 在现在的社会背景下,所存在的需要 IP 地址的设备肯定是超过了这个范围的


相关文章
|
XML 物联网 API
Android Ble蓝牙App(五)数据操作
Android Ble蓝牙App(五)数据操作
1773 0
|
消息中间件 存储 Java
kafka零拷贝
kafka零拷贝
348 0
|
数据可视化 数据挖掘 开发者
import有什么用,python中怎么使用import
import有什么用,python中怎么使用import
1555 1
|
8月前
|
网络协议 网络安全 网络架构
开发者急盼!Cisco Packet Tracer超详细下载安装教程,附中文版插件使用步骤!
Cisco Packet Tracer是思科推出的专业路由器模拟器,适用于学习IOS配置、故障排查及网络拓扑构建。支持多种协议(STP、OSPF等),含无线功能与安全设备。本文提供下载链接、安装教程及高级功能介绍,如复杂网络仿真、可视化调试、自动化脚本和行业场景模拟等,助你高效学习网络技术并启用中文语言包。
3912 17
开发者急盼!Cisco Packet Tracer超详细下载安装教程,附中文版插件使用步骤!
|
人工智能 Rust Apache
|
机器学习/深度学习 人工智能 自然语言处理
360Zhinao2-7B:360推出自研360智脑大模型的升级版
360Zhinao2-7B是360自研的AI大模型360智脑7B参数升级版,涵盖基础模型及多种上下文长度的聊天模型。该模型在语言理解与生成、聊天能力、数学逻辑推理等方面表现出色,支持多语言和多上下文长度,适用于多种商业应用场景。
468 23
360Zhinao2-7B:360推出自研360智脑大模型的升级版
|
数据采集 存储 大数据
数据治理:数据孤岛是企业信息化发展中难以避免的阶段
数据孤岛是企业信息化发展中难以避免的阶段。企业需要正视这一现象,通过完善数据治理体系、加强部门协作、采用先进技术手段等措施,逐步消除数据孤岛,实现数据的有效整合和利用。只有这样,企业才能在激烈的市场竞争中立于不败之地。
1036 0
|
12月前
|
机器学习/深度学习 人工智能 监控
AI视频监控技术的核心优势与实践
AI视频监控技术结合了计算机视觉、深度学习和大数据分析,能够实时分析监控画面,识别异常行为和场景变化。其核心在于从“被动记录”转型为“主动识别”,提升监控效率并减少安全隐患。主要应用场景包括泳池管理、健身器械区域、人员密度预警和异常事件检测。系统架构支持多种摄像头设备,采用边缘计算和Docker部署,具备实时性、高准确率和扩展性等优势。未来将优化复杂场景适应性和实时计算负载,进一步提高系统性能。
2803 7
|
网络协议 安全 网络安全
常见的网络传输协议有几种
常见的网络传输协议涵盖多个层次,包括传输层(如TCP、UDP、SCTP)、应用层(如HTTP/HTTPS、FTP、SMTP、DNS、SSH)、网络层(如IP、ICMP、ARP)、数据链路层(如Ethernet、PPP、Wi-Fi)及安全协议(如SSL/TLS、IPSec)。这些协议各具特色,适用于不同场景,如TCP用于可靠传输,UDP适合实时应用,而HTTP/HTTPS则服务于网页浏览和数据交换。通过这些协议的协同工作,现代互联网和局域网得以实现多样化的应用和服务。
|
机器学习/深度学习
【机器学习】准确率、精确率、召回率、误报率、漏报率概念及公式
机器学习评估指标中的准确率、精确率、召回率、误报率和漏报率等概念,并给出了这些指标的计算公式。
3328 0