前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统之IP、TCP封包格式

Linux系统之IP、TCP封包格式

作者头像
小小科
发布2018-05-03 16:39:13
4.1K0
发布2018-05-03 16:39:13
举报
文章被收录于专栏:北京马哥教育北京马哥教育

一、IP封包格式说明

前言

IP 协议用 IP 报文头封装传输层报文,IP 报文头包含了如下的信息:这个报文从哪个传输层协议过来,它准备被发送到哪台机器,它从哪儿来以及一些其他有用的信息. IP 协议是一个非面向连接的协议,也就是说 IP 不需要协商一个连接。面向连接的协议需要协商一个连接,然后在这个连接上面收发数据,最后关闭这个连接。TCP 就是这样的协议,但是它建立在 IP 基础之上的。IP 不是面向连接 的原因有很多种,其中一个原因就是它不会为很多应用增加不必要的开销。对于报文丢失的情况,通过简单的重传就可以解决问题,而不需新建连接,等待对端确认等等额外开销。

1、IP报文格式

上面图中每一行所占用的位数为32bits,各个表头的内容分别介绍如下:

版本(Version)

第 0 到 3bit。版本字段是二进制表示的,IPV4 为 0100,而IPV6 为 0110.这个字段在报文过滤中很少用到。

网络报文头长(Internet Header Length)

第 4-7bit,它表示以 4 字节为单位的报文头长,例如没有选项的报文长度为 20byte,这样这个字段就为 5

TOS 字段

第 8 到 15bit,这个字段是 IP 报文头里面最复杂的部分之一,这个字段已经被更新 3 次了。他们的基本含义没有发生变化,但是他们 的具体实现却改变了。最初,这个字段被称为服务类别(type of service)

  • 1、0-2bit 称为优先权字段;
  • 2、第 3bit 表示时延;
  • 3、第 4bit 表示吞吐量;
  • 4、第5bit表示对可靠性的要求级别;
  • 5、最后两个 bit 预留 .

例如:

以太网络的种种相关规格可以让这个ip封包加速且降低延迟,某些特殊的标志就是在这里说明的。

注:

这种实现方式在很多老的硬件里面还能够看到。但是在后来更新的ECN版本里面,第 6-7bit被使用了,这样他们就被设置了值而不是原 先的预留值0.但是很多老的防火墙和路由器在检查报文时候,发现这些字段是 1 就会把这个报文丢掉。

封包总长(TL)

通常以byte做单位来表示该封包的总长度﹐此数值包括标头和数据的总和,最大可达65535bytes

识别码(ID)

每一个IP封包都有一个16bit的唯一识别码。 当程序产生的数据要通过网路传送时﹐都会在传送层被拆散成封包形式发送﹐当封包要进行重组的时候﹐就是依据这个ID 。

Flags(特殊标识)

这是当封包在传输过程中进行最佳组合时使用的3个bit来标识

  • X__:R:当此值为0的时候﹐表示目前未被使用
  • X:DF:若为0表示可以分段,若为1表示不可分段
  • __X:MF:若为0表示此IP为最后分段,若为1表示非最后分段
FragmentOffset(分段偏移)—13bits

当一个大封包在经过一些传输单位(MTU)较小的路径时,会被被切割成碎片(fragment)再进行传送(这个切割和传送层的打包有所不同,它是由网路层决定的)。 由于网路情况或其它因素影响﹐其抵达顺序并不会和当初切割顺序一致的。 所以当封包进行切割的时候﹐会为各片段做好定位记录,如果封包没有被切割﹐那么FO的值为“0”

Time To Live(TTL,存活时间)—8bits

当一个封包被赋予TTL值,TTL是以hop为单位,每经过一个router就减一﹐如果封包TTL值被降为0的时候﹐就会被丢弃。 这样﹐当封包在传递过程中由于某些原因而未能抵达目的地的时候﹐就可以避免其一直充斥在网络上面,之所以不返回响应,是因为响应也是点用网络资源的,所以直接就丢弃了

Protocol Number(协议代码)-8bits

来自传输层与网络层本身的其他数据都放置在ip封包当中的,我们可以在IP表头记载这个IP封包内的数据是什么,在这个字段就是记载每种数据封包的内容啦,在这个字段记载的代码与相关的封包协议名称如下所示:

当然啦,我们比较常见到的还是TCP、UDP、ICMP

Header Checksum(表头检查码)—16bits

这个数值主要用来检错用的﹐用以确保封包被正确无误的接收到。 如果一切无误﹐就会发出确认信息﹐表示接收正常。

Source Address(SA)

来源的IP地址,从这里我们知道IP是32位。

Destination Address(DA)

有来源还需要目标才能传送,这里就是目标的IP地址

Options(其它参数)

这个是额外的功能,提供包括安全处理机制、路由纪录、时间戳,严格与宽松之来源路由等 。

Padding(补齐项目)& Padding

Options栏位长度不定, 可用来扩充功能。 Padding栏位是为了让表头(包含Options 栏位) 刚好是4 Bytes 的倍数。

二、TCP封包格式

1、TCP作用

TCP 协议位于 IP 协议层之上,TCP 是一个有状态的协议,并且通过内部机 制能够确认报文是否被对方正确的接收。TCP 主要有如下几个作用: 最主要就是确认双方的的可靠数据收发 数据在网络层和应用层之间正确传输 数据报文能够正确的被应用层接收 报文在传输过程中不会乱序

2、TCP报文格式
3、参数说明

三、UDP报文

1、前言

UDP 可以看作一个叫简化的 TCP 报文头,它主要包括源/目的端口,报文头 长以及校验和。

2、报文格式

3、参数说明

五、总结

TCP协议和UDP协议的区别
  • 1、TCP协议面向连接,UDP协议面向非连接
  • 2、CP协议传输速度慢,UDP协议传输速度快
  • 3、TCP协议保证数据顺序,UDP协议不保证
  • 4、TCP协议保证数据正确性,UDP协议可能丢包
  • 5、TCP协议对系统资源要求多,UDP协议要求少
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1、IP报文格式
  • 版本(Version)
  • 网络报文头长(Internet Header Length)
  • TOS 字段
  • 封包总长(TL)
  • 识别码(ID)
  • Flags(特殊标识)
  • FragmentOffset(分段偏移)—13bits
  • Time To Live(TTL,存活时间)—8bits
  • Protocol Number(协议代码)-8bits
  • Header Checksum(表头检查码)—16bits
  • Source Address(SA)
  • Destination Address(DA)
  • Options(其它参数)
  • Padding(补齐项目)& Padding
  • 二、TCP封包格式
    • 1、TCP作用
      • 2、TCP报文格式
        • 3、参数说明
        • 三、UDP报文
          • 1、前言
            • 2、报文格式
            • 五、总结
              • TCP协议和UDP协议的区别
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档