文章目录

  • 一 网络层简述
  • 二 网络层首部--版本,首部长度,区分服务,总长度
  • 三 网络层首部--标识,标志,片偏移
  • 四 网络层首部--生存时间,协议,首部检验和
  • 五 可选字段,填充字段,源IP,目标IP,
  • 六 总结

一 网络层简述


一个IP数据包的首部至少是20个字节!


二 网络层首部–版本,首部长度,区分服务,总长度


版本:
就是指出IP数据包是什么版本;常见的版本就是0100 IPV40110 IPV6


首部长度:
整个IP数据包的首部长度,不包括数据部分;
但是首部长度只用4个bit存储,表示最大值也是1111,即15;
而我们实际上首部长度还需要乘于5才可以得到实际答案;
假如首部长度为0101,也就是4,那么实际的首部长度为4×5=20;
假如首部长度为1111,也就是15,那么实际的首部长度为15×4=60;
常见的首部长度一般都是20字节,因为IP数据包至少需要20字节


区分服务:
整个字段主要是用来提高网络服务质量的,至于细节我们不用深究!举个例子描述以下它是如何提高网络服务质量的,比如说我们有一个客户端要给服务器发数据包,这中间过程需要经过路由器,而路由器接收到这个IP数据包时候,会检查它的首部字段的区分服务是否有设置什么值,这些值是可以提高网络服务的,比如可能会优先传送该IP数据包,大概就是这样!!!


总长度:

总长度表示IP数据包整个大小;
总长度占两个字节,也就是说有16个bit可以表示总长度,也就是说总长度的范围是0-65535数据范围;
但是我们知道网络层的数据包需要传输给数据链路层的帧数据部分,而数据链路层帧的数据部分长度不可以超过1500;也就是IP假如是65535那么大的话,是无法传输给数据链路层的帧部分的,那么我们就需要对IP数据包进行分片,拆分成小于1500的数据包再传输给数据链路层;至于如何分片,分片后如何找到那些片段是同一个数据包,传输过去后,如何正确的拼回原来的数据包都是未解决的问题。接下来都会讲到这几个问题。


三 网络层首部–标识,标志,片偏移


标识:
就是标识该数据包是某一个大的IP包的分片包,标识一样的数据包都是属于同一数据包的分片中的某一片;
比如有一个IP包很大:3800字节,很明显,传输给数据链路层是无法接收的,那么就需要分片,假设分了3片,那么这三片数据包的标识都是一模一样的,因为这三片数据包都是同一个大的IP数据包分片出来的;
标识的字段也解决了一个问题,就是分片后的数据包,是如何找回来的拼接成为原来的大IP数据包的问题


片偏移:

片偏移字段主要是说明:该数据包被分片后,相对于第一片偏移了多少个字节;
但是实际上我们在IP数据包看到的片偏移字段结果不是实际的结果,实际的结果还是需要片偏移的值×8,也就是字节偏移
如上图:我们IP数据包3800字节,被分了三片!
片偏移字段的主要作用是:说明该IP数据包是分片后的具体位置在哪一片中,根据片偏移可以一个一个的拼凑成一个完整的包,相当于拼会成原来大的IP数据包有了参考一样;
比如上图:当我们在服务器的网络层拿到了三个分片的IP数据包后,我们是可以根据每个包的标志位,和片偏移位组合成为一个完整的IP数据包!标志位相同说明上面三个分片都是同一个大的IP数据包分片出来的,偏移位标识拼接的顺序是怎么样,如何拼接才会保持数据顺序变;

有一个问题:为什么字节偏移需要用片偏移字段×8才可以得到实际的值呢?
其实很好想,因为片偏移只有13个bit去存放片偏移的信息,很明显13个bit存放的信息是有限的,所以我们了表示更多的信息,就需要×8才可以;


实际上:我们仅仅通过标识和片偏移是无法确定IP数据包是什么时候拼接结束的问题,我们拿到片偏移,只能确定拼接的顺序,而结束的标志却没有!
所以为了解决这个问题,我们的IP数据包首部字段中还是有一个比较重要字段:标志位

标志位:
标志位:占3个bit;
第一个bit我们通常作为保留位:直白一点就是基本不用这个位的信息,通常我们抓包见到都是0;
第二个bit表示不要分片的意思:也就是说,当我们看到第二个bit位置是1时候, 表示这个数据包不需要分片;为0时候就表示需要分片;通常该数据包过大时候需要分片那么该数据包的第二个bit就是为1;
第三个bit表示更多分片:直白点就是该位置为1时候,表示不是最后一片,为0时候就是最后一片数据包;
所以:我们在拼接数据包时候,我们是可以根据标志位的第三个bit位为0,就知道这个IP数据包时最后一片数据包了,当把这个数据包拼接过后,那么就表示大的IP数据包就完成了拼接;


四 网络层首部–生存时间,协议,首部检验和

我们先来看看协议字段
协议:

协议字段表示上一层传输下来的是什么协议!如上图,不同的值表示不同的协议;
假如说IP数据包数据部分,封装是TCP协议,那么就说明协议字段的值为6,假如为UDP,那么值为17;
抓个ICMP包看看,对于协议字段的值为1;也就是表面为上一层传下来是ICMP包


首部检验和:
其实这个字段没什么好说的就是检验你的包是否正确;


生存时间:

TTL一般是操作系统内定设置好的,每个操作系统的TTL的值都可能不一样!


五 可选字段,填充字段,源IP,目标IP,

可选字段一般都是在一个IP数据包头部的20个字节无法表达完整信息时候,才会使用它;
填充字段一般也是为了筹够20个字节的IP数据包的首部才会使用;
其实这个两个字段都不是很常见,也就是说,我们通常看到的IP数据包的首部这两个字段是五具体信息的!
源IP地址和目标IP地址,我们都很清楚,发数据包过去肯定需要这两个字段的信息。


六 总结

其实要学明白IP数据包的首部各个字段,最主要的是结合理论信息,通过手动抓包分析去理解各个字段!反正这写字段理解了就很容易记住!
而我并没有放抓包的信息的图,因为我觉得这个放上去可能信息有点乱,但是你们不会学习时候,必须自己抓包分析,这样才会理解深刻!
最后附上我自己花的IP数据包首部字段的图给你们!!!

计算机网络【IP数据包首部的各个字段详解】相关推荐

  1. 计算机网络【UDP和TCP首部字段详解】

    文章目录 一 UDP详解 二 TCP首部各个字段详解 一 UDP详解 在传输层中,有两个协议UDP和TCP,通常UDP都是比较简单的协议字段,因为UDP不需要面向连接,也就是说,发送UDP数据包过去时 ...

  2. 计算机网络ip数据包分析题,计算机网络课程设计-IP数据包解析实验报告

    计算机网络课程设计-IP数据包解析实验报告 解析 IP数据报实验报告目录目录 21.课程设计目的 .22.课程设计要求 .23.相关知识 .24.课程设计分析 .64.1 网卡设置64.2 使用套接字 ...

  3. Open vSwitch相关字段详解之L3:IPv4IPv6

    文章目录 字段概览 字段详解 ip_src/nw_src.ip_dst/nw_dst ipv6_src.ipv6_dst nw_proto/ip_proto nw_ttl ip_frag/nw_fra ...

  4. 43. Systemd的Unit配置详解,unit文件位置,优先级,unit类型,unit文件字段详解,Unit/Service/Install字段,添加mysql服务等例子

    Systemd的Unit配置详解,unit文件位置和优先级,unit文件类型,unit文件字段详解,[Unit]字段,[Service]字段,[Install]字段,添加服务,创建.service 文 ...

  5. Open vSwitch相关字段详解之L4:TCP, UDP, SCTP

    文章目录 字段概览 字段详解 TCP tcp_src/tp_src.tcp_dst/tp_dst tcp_flags UDP udp_src.udp_dst SCTP sctp_src.sctp_ds ...

  6. Open vSwitch VLAN相关字段详解(dl_vlan、dl_vlan_pcp、vlan_vid、vlan_pcp、vlan_tci)

    文章目录 字段概览 字段详解 vlan_tci vlan_vid vlan_pcp dl_vlan/dl_vlan_pcp 字段概览 字段名 长度 格式 Masking 前置项 访问权限 OpenFl ...

  7. cat /proc/meminfo 各字段详解

    一.cat /proc/meminfo 各字段详解 / $ cat /proc/meminfo MemTotal: 877368 kB :所有可用RAM大小(即物理内存减去一些预留位和内核的二进制代码 ...

  8. Android系统(96)---Android 数据交换解析框架Gson使用详解

    Android 数据交换解析框架Gson使用详解 Json 是一种文本形式的数据交换格式,比 xml 更为轻量.Json 的解析和生成的方式很多,在 Android 平台上最常用的类库有 Gson 和 ...

  9. 「全网最细」:MRP1视图所有字段详解及实战应用 - 合集

    : 视频详解 注:本文章建议要结合视频进行观看 声明:本文仅代表原作者观点,仅用于SAP软件的应用和学习,不代表SAP公司.注:文中所示截图来源于SAP软件或PA官方教材,相应著作版权归SAP所有. ...

最新文章

  1. Delphi处理TWebBrowser的Close事件
  2. Java向后不兼容历史的观察
  3. Taro+react开发(78):taro生命周期render
  4. linux消息框架,远程处理器消息框架 - 基于Linux 简化 AMP 配置使其更方便更动态地分配资源...
  5. ReadOnlyDictionary之应用场景
  6. zabbix监控的配置
  7. SELECT中的多表连接
  8. 高性能计算多集群管理平台
  9. easy poi 模板生成多表excel
  10. 矩阵分析及应用(1-2章)
  11. python 进程通信方式_python 进程 进程池 进程间通信实现解析
  12. python报错:Empty suite
  13. 复选框的对勾颜色怎么改
  14. img: SVG格式在vue中的使用
  15. 广式粤语VS港式粤语
  16. 【产品设计】塑胶模具设计:合模线/分模线(PL - Parting line)详解
  17. Ubuntu Server上如何安装Gi
  18. 【网络安全】练习与复习十二
  19. 【QImage类常用函数】
  20. Android H5页出现广告分析和解决方案

热门文章

  1. 当 elementUi 选中一个值,其余选项全部高亮解决
  2. R语言中Sweave是用来做什么的?
  3. 中国联通高峰:号码的安全及合规将是虚商工作重点
  4. python开发的录音机(一)录制声卡播放的声音(内录)
  5. Java Web 实习笔记(三)
  6. 智能光伏汇流箱 裸板式汇流采集装置 时丽花
  7. 智能外呼系统有什么功能?应该如何选择
  8. 基于多任务深度学习的时空网络流量预测 IEEE TKDE 2019
  9. 微信反复读取你的相册!官方回应:为便于聊天时快速发图,最新版本将取消...
  10. 安android自定义照相机,Android自定义照相机的实例