起序:本文摘录于《计算机网络(第七版)- 谢希仁》,里面也有自己对 IP 数据报
的理解。
五层协议体系结构 | 数据单元(数据单位) |
---|---|
应用层 | message(消息) |
运输层 | segment(TCP 报文段) 或 datagram(UDP 用户数据报) |
网络层 | packet(IP 数据报(或简称数据报、分组或包)) |
数据链路层 | frame(帧) |
物理层 | bit(比特流) |
一、IP 层的 IP 地址
在学习
IP 地址
之前,首先要理解IP 地址
和MAC 地址
(硬件地址)的区别。
从层次的角度看,硬件地址是
数据链路层和物理层
使用的地址,而 IP 地址是网络层和以上各层
使用的地址,是一种逻辑地址
(称IP地址为逻辑地址是因为IP地址是用软件实现的)。
层级 | 地址类型 |
---|---|
网络层 [及以上](IP 层) | IP 地址 |
数据链路层 [及以下](MAC 层) | MAC 地址(硬件地址、物理地址) |
# 查看自己的 IP 地址,命令行输入 cmd
ipconfig
可以看到图片上的内容:IPv4 地址 192.168.1.101,这就是自己电脑的 IP 地址。
二、IP 数据报的格式
在《计算机网络(第七版)- 谢希仁》课本上,
数据报
的格式是按图片上显示的,但实际上数据报
的格式是一个20 ~ 60
字节的长串,为了更好的认识数据报,作者才采取 “格式化” 数据报的形式。
字段 | 表示意义 |
---|---|
版本 | 占 4 位,指 IP 协议的版本。标识 IPv4 或 IPv6。 |
首部长度 | 占 4 位,可表示的 最大十进制 数值是15(二进制 1111),规定 最小十进制 数值是 5(二进制 0101)。首部长度字段所表示数的单位是 32 位字 (注:不是 32 位字节,也不是 32 位),一个 32 位字 长是 4 字节 。因为首部长度占 4 位,就可以知道 数据报 最大是 60字节(15 个 32 位字) ,最小是 20字节 (5 个32 位字) 。最常用的首部长度是 20 字节(即首部长度为 0101)。 |
区分服务 | 占 8 位,运营商(移动、联通、电信等)一般会使用,还有一些卖专线的运营商,为了提高服务质量,提升客户的体验感,运营商会使用。 |
总长度 | 占 16 位,指 首部 和 数据部分 的长度,单位是字节。最常用的以太网规定 最大传输单元 (MTU)值是 1500 字节 。若所传送的数据报长度超过数据链路层的 MTU 值,就必须把过长的数据报进行 分片处理 。(这里不介绍 分片处理 )。总长度的计算方式: IP 数据报 的长度 + 数据部分 的长度。(也就是从 网络层及以上 的数据长度之和) |
标识 | 占 16 位,用来区分不同的 IP 分片数据流。 |
标志(flag) | 占 3 位,目前只有两位有意义。 第一位保留; 第二位为 1 代表为分片,为 0 代表已分片; 第三位为 0 代表最后一个分片,为 1 代表还有后续分片。 |
片偏移 | 占 13 位,用来确定IP分片 在 IP 包 的位置 (先后顺序)。片偏移的单位是 8 个字节 ,每个分片的长度一定是 8字节(64位) 的整数倍。 |
生存时间(TTL: Time To Live) | 占 8 位,指数据报在网络中的寿命。目的:防止 无法交付的数据报 在网络上 无限循环 。 |
协议 | 占 8 位,作用:用来区分上层协议,以便使 目的主机的 IP层 知道将 数据部分 上交给哪个协议进行处理。表格下 有对常用 协议及字段值 的简介。注:TCP: 6 和 UDP: 17 对应的字段请熟记。 |
首部校验和 | 占 16 位,这个字段只校验 数据报的首部 ,但不包括数据部分。也就是 当前介绍的内容 。作用:防止数据报在传输过程中可能由于外力干扰,比如:电磁波、雷电或者是信号本身的衰减等使得信号发生错误。 |
源地址 | 占 32 位,发送请求的源主机的 IP 地址。 |
目的地址 | 占 32 位,接收请求的目的主机的 IP 地址。 |
可选字段(长度可变) | 长度可变,1 ~ 40 个 字节 (这里单位是字节),目的:为了增加 IP 数据报的功能。 |
协议及对应的字段值(我说话算法,说在表格下有对常用协议及对应字段的简介,没骗你吧)
协议名 | ICMP | IGMP | IP | TCP | EGP | IGP | UDP | IPV6 | ESP | OSPF |
---|---|---|---|---|---|---|---|---|---|---|
协议字段值 | 1 | 2 | 4 | 6 | 8 | 9 | 17 | 41 | 50 | 89 |
如果对您有帮助,点个赞再走吧。