我们来看一下IP的头的结构:

IP的头每行有32位,分为版本,头长度,区分服务等十多项内容。

第一个版本,记录IP头为IPv4的头还是IPv6的头。如果是IPv4的头往往为4,如果是IPv6的头则是6. 第二个IHL为IP Head Length’ 也就是头长度,以字节计数。区分服务指的是对于不同的类型的数据包,采用不同的服务方式。举个例子,对于语音数据,优先传递比无误传递更重要;但是对于文件,就正好相反。所以对于不同的数据包,在区分服务这里会有标识,表明不同种类的包,给予的服务是不同的。总长度是头长度加上报文信息长度的总和,最大不能超过65536字节。

标识(identification)的用途是让目标主机确定一个新到达的分段是哪一个数据流的。同一个数据流所有包都是一个相同的标识。DF/MF以及分段偏移量往往在一起使用。我们知道有时候数据包太大了不能通过网络的MTU,这个时候就需要分段处理。如果DF=0,那么标识不允许分段;DF=1则是表示这个数据包允许分段。MF=0表示分完段之后这个数据段是整个包的最后那段,MF=1则是不是最后段的标志。分段偏移量就是指数据和第一位的数据的偏移量。注意,这个分段偏移量的单位是8字节,不是8比特

生存期是起到了避免循环路由的作用。设置生存期,每经过一个路由器生存期都减一,到0就会抛弃,这样避免网络中报文数量不断增加。协议则是IP用于指明这个包属于哪个进程(比如说是TCP还是UDP),这为之后上交给网络层提出了参考。头校验和是为了防止头出错的,通过校验和来判断是否传输有误。

源地址和目的地址就是指传送方和接收方的IP地址是多少。

选项是一个非常有意思的部分,它为了后世的开发者提供了这样一种可能:完善IP中之前没有的部分,新添加的功能在IP选项(IP options)中添加。 比如说下面的功能:

安全性指的是信息的私密程度。比如军用信息,安全性肯定是最高的。比如美国五角大楼的消息肯定不会让他经过伊拉克等等,这些都是安全选项做的事情。严格源路由制定的是从源主机到目标主机的完整路径选项。数据包必须严格按照这个指定路线进行传输。与此对应的是松散源路由,信息也需要经过它规定的那些地址传输,但是在相邻两个路由器之间允许经过没有规定的IP地址。记录路由则是记录自己所经过的所有地址,这样有一个好处:可以追送路由路径选择算法的错误。时间戳和记录路由比较像,除了记录自己走过的地址,还记录走过这个地址的时间。这对于拥塞控制是有益的,因为两个时间相减就是对于这条链路花费的时间,时间过长这说明这个链路拥塞严重,路由器据此来调整路由选择的结果。

IP选项往往有40个字节,它对于功能拓展有着重要作用。

图片来自《计算机网络》 第五版 清华大学出版社

IP头以及头的各部分含义相关推荐

  1. LinuxC下获取UDP包中的路由目的IP地址和头标识目的地址

    在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址. (一)主要的步骤: 在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取 ...

  2. post入门篇:请求头/响应头、cookie、URL结构/编码、数据编码、winHttpRequest、post分析技巧、伪装IP

    目录 http URL URL编码 协议头 get请求头 post请求头.响应头 提交数据的类型(Content-Type) 编码 Base64编码 易语言处理302的包 cookie 浏览器是如何设 ...

  3. SOME/IP协议详解「2.1.1·SOME/IP的格式头」

    SOME/IP协议详解「2.1.1·SOME/IP的格式头」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「2.1.1·SOME/IP的格式头」 1 SOME/IP报文 ...

  4. 【Android 高性能音频】Oboe 开发流程 ( 包含头 Oboe 头文件 | 创建音频流 | 设置音频流 | 音频流回调类 AudioStreamCallback )

    文章目录 一.包含头 Oboe 头文件 二.音频流构建器 AudioStreamBuilder 三.音频流回调 AudioStreamCallback Oboe GitHub 主页 : GitHub/ ...

  5. PHP数组推入弹出的函数:头进头出array_unshift/array_shift 尾进尾出array_push/array_pop

    头进头出 array_unshift() 函数用于向数组插入新元素.新数组的值将被插入到数组的开头. array_shift() 函数删除数组中第一个元素,并返回被删除元素的值. 尾进尾出 array ...

  6. 和跨域CORS有关的几个请求头和响应头请求头

    阮一峰:http://www.ruanyifeng.com/blog/2016/04/cors.html添加链接描述 参考: https://blog.csdn.net/qq_29923881/art ...

  7. 在线HTTP请求头响应头转JSON工具

    在线HTTP请求头响应头转JSON工具 在线HTTP请求头响应头转JSON工具 本工具可以将HTTP请求头或者响应头转换成JSON格式 本工具可以将HTTP请求头或者响应头转换成JSON格式 本工具可 ...

  8. IP头TCP头的checksum校验和计算

    校验和就是数据位按位相加之后取反所得,验证校验和的时候把数据位按位相加再加上校验和如果等于零则表示验证通过. 如:数据位相加为1010, 那么校验和为0101,验证时1010+0101=0,验证通过. ...

  9. TCP/IP 主要报文头格式

    TCP/IP协议是一个比较复杂的协议集,有很多专业书籍介绍.在此,我仅介绍其与编程密切相关的部分:以太网上TCP/IP协议的分层结构及其报文格式.我们知道TCP/IP协议采用分层结构,其分层模型及协议 ...

最新文章

  1. MarkDown写blog(测试)
  2. oracle 图像包,完美简单详细,图形安装Oracle11g(Oracle Linux系统)
  3. 机器学习算法总结之聚类:K-means
  4. 初次体验.net Ajax无刷新技术
  5. codeforces 742D Arpa's weak amphitheater and Mehrdad's valuable Hoses ——(01背包变形)
  6. C、C++实现 -- 字符串分割函数split
  7. java实现自动定位,java swing 如何自动定位尾部
  8. Unity3D常用API
  9. python绘制隐含波动率曲面_如何用python计算隐含波动率
  10. STM32基础11--模数转换(ADC)
  11. ORB-SLAM 全文翻译
  12. iPhone手机使用:微信提示“运行内存不足导致该小程序无法使用“解决方法
  13. python安装Chrome插件
  14. 如何学习 C++ 如何学习一门较复杂的编程语言 【转】
  15. 通信机制之异步通信和同步通信
  16. cocos2d-js中使用react进行裁剪Sprit
  17. PyCharm 中 import 导包呈现灰色,已解决
  18. shell脚本100 例(下) shell 脚本知识点,学习、进修、面试、居家旅行必备精品.--潜心研究必有所成
  19. 嵌入式开发:嵌入式应用程序中的信任链简介
  20. 笔记本_cpu_突然性能下降_cpu锁频_cpu降频_重装无用_解锁办法

热门文章

  1. 从psd图中找到对应图层,导出图片
  2. 使用signalR创建聊天室。
  3. TF2.0使用tf.data处理数据建模Demo
  4. 实现原理 扫描枪_条码扫描枪的工作原理是什么?
  5. 对话Dragonfly Capital合伙人Haseeb:错过的、坚信的与我收获的最佳投资策略 |链捕手...
  6. 成功的IT创始精英访谈之谷歌公司CEO:埃里克·施密特——IT界的传说
  7. metricbeat mysql_Metricbeat 参考指南(目录)
  8. 微信小程序开发源码集合平台系统 完整前后端+安装教程
  9. OA办公系统的开发为企业带来的好处
  10. react-native 调用原生module跳转第三方地图软件实现导航功能