`
k_lb
  • 浏览: 798492 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

TCP/IP数据报格式分析

 
阅读更多

IP 数据包格式

(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。

  (2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(132位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。

  (3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。

  (4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216-1=65535字节。

  在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

  (5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个标识并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

  (6)标志(flag) 占3位,但目前只有2位有意义。

   标志字段中的最低位记为MF(More Fragment)MF=1即表示后面还有分片的数据报。MF=0表示这已是若干数据报片中的最后一个。

   标志字段中间的一位记为DF(Don’t Fragment),意思是不能分片。只有当DF=0时才允许分片。

  (7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。

  (8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。

  (9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。

  (10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。

  (11)源地址 占32位。

  (12)目的地址 占32位。

  • 源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程。
  • 目的端口号( 16 位):它(连同目的主机 IP 地址)标识目的主机的一个应用进程。这两个值加上 IP 报头中的源主机 IP 地址和目的主机 IP 地址唯一确定一个 TCP 连接。
  • 顺序号( 32 位):用来标识从 TCP 源端向 TCP 目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。如果将字节流看作在两个应用程序间的单向流动,则 TCP 用顺序号对每个字节进行计数。序号是 32bit 的无符号数,序号到达 2 32 1 后又从 0 开始。当建立一个新的连接时, SYN 标志变 1 ,顺序号字段包含由这个主机选择的该连接的初始顺序号 ISN Initial Sequence Number )。
  • 确认号( 32 位):包含发送确认的一端所期望收到的下一个顺序号。因此,确认序号应当是上次已成功收到数据字节顺序号加 1 。只有 ACK 标志为 1 时确认序号字段才有效。 TCP 为应用层提供全双工服务,这意味数据能在两个方向上独立地进行传输。因此,连接的每一端必须保持每个方向上的传输数据顺序号。
  • TCP 报头长度( 4 位):给出报头中 32bit 字的数目,它实际上指明数据从哪里开始。需要这个值是因为任选字段的长度是可变的。这个字段占 4bit ,因此 TCP 最多有 60 字节的首部。然而,没有任选字段,正常的长度是 20 字节。
  • 保留位( 6 位):保留给将来使用,目前必须置为 0
  • 控制位( control flags 6 位):在 TCP 报头中有 6 个标志比特,它们中的多个可同时被设置为 1 。依次为:
  • URG :为 1 表示紧急指针有效,为 0 则忽略紧急指针值。
  • ACK :为 1 表示确认号有效,为 0 表示报文中不包含确认信息,忽略确认号字段。
  • PSH :为 1 表示是带有 PUSH 标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。
  • RST :用于复位由于主机崩溃或其他原因而出现错误的连接。它还可以用于拒绝非法的报文段和拒绝连接请求。一般情况下,如果收到一个 RST 1 的报文,那么一定发生了某些问题。
  • SYN :同步序号,为 1 表示连接请求,用于建立连接和使顺序号同步( synchronize )。
  • FIN :用于释放连接,为 1 表示发送方已经没有数据发送了,即关闭本方数据流。
  • 窗口大小( 16 位):数据字节数,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小。窗口大小是一个 16bit 字段,因而窗口大小最大为 65535
  • .. 字节。
  • 校验和( 16 位):此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。
  • 紧急指针( 16 位):只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。
  • 选项:最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size) 。每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中指明这个选项,它指明本端所能接收的最大长度的报文段。选项长度不一定是 32 位字的整数倍,所以要加填充位,使得报头长度成为整字数。
  • 数据: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

  • 请求端(通常称为客户)发送一个 SYN 报文段( SYN 1 )指明客户打算连接的服务器的端口,以及初始顺序号( ISN )。
  • 服务器发回包含服务器的初始顺序号( ISN )的 SYN 报文段( SYN 1 )作为应答。同时,将确认号设置为客户的 ISN 1 以对客户的 SYN 报文段进行确认( ACK 也为 1 )。
  • 客户必须将确认号设置为服务器的 ISN 1 以对服务器的 SYN 报文段进行确认( ACK 1 ),该报文通知目的主机双方已完成连接建立。

三次握手协议可以完成两个重要功能:它确保连接双方做好传输准备,并使双方统一了初始顺序号。初始顺序号是在握手期间传输顺序号并获得确认:当一端为建立连接而发送它的 SYN 时,它为连接选择一个初始顺序号;每个报文段都包括了顺序号字段和确认号字段,这使得两台机器仅仅使用三个握手报文就能协商好各自的数据流的顺序号。一般来说, ISN 随时间而变化,因此每个连接都将具有不同的 ISN

TCP 采用一种名为带重传功能的肯定确认( positive acknowledge with retransmission 的技术作为提供可靠数据传输服务的基础。这项技术要求接收方收到数据之后向源站回送确认信息 ACK 。发送方对发出的每个分组都保存一份记录,在发送下一个分组之前等待确认信息。发送方还在送出分组的同时启动一个定时器,并在定时器的定时期满而确认信息还没有到达的情况下,重发刚才发出的分组。图 3-5 表示带重传功能的肯定确认协议传输数据的情况,图 3-6 表示分组丢失引起超时和重传。为了避免由于网络延迟引起迟到的确认和重复的确认,协议规定在确认信息中稍带一个分组的序号,使接收方能正确将分组与确认关联起来。

从图 3-5 可以看出,虽然网络具有同时进行双向通信的能力,但由于在接到前一个分组的确认信息之前必须推迟下一个分组的发送,简单的肯定确认协议浪费了大量宝贵的网络带宽。为此, TCP 使用滑动窗口的机制来提高网络吞吐量,同时解决端到端的流量控制。

滑动窗口技术是简单的带重传的肯定确认机制的一个更复杂的变形,它允许发送方在等待一个确认信息之前可以发送多个分组。如图 3-7 所示,发送方要发送一个分组序列,滑动窗口协议在分组序列中放置一个固定长度的窗口,然后将窗口内的所有分组都发送出去;当发送方收到对窗口内第一个分组的确认信息时,它可以向后滑动并发送下一个分组;随着确认的不断到达,窗口也在不断的向后滑动。

Tcp数据包格式

分享到:
评论

相关推荐

    TCP/IP教程TCP/IP基础

    9.4 理解用户数据报协议(UDP) 85 9.4.1 UDP头结构 85 9.4.2 UDP能做什么 85 9.4.3 TCP和UDP 86 9.5 小结 86 第10章 IPv6 87 10.1 IPv6数据报 87 10.1.1 优先级分类 88 10.1.2 流标识 89 10.1.3 128位IP地址 89 ...

    TCP/IP实验 数据包分析 实验数据

    TCP/IP 实验 数据包分析 实验数据 TCP/IP 实验 数据包分析 实验数据 TCP/IP 实验 数据包分析 实验数据

    TCP/IP技术大全

    9.4 理解用户数据报协议(UDP) 85 9.4.1 UDP头结构 85 9.4.2 UDP能做什么 85 9.4.3 TCP和UDP 86 9.5 小结 86 第10章 IPv6 87 10.1 IPv6数据报 87 10.1.1 优先级分类 88 10.1.2 流标识 89 10.1.3 128位IP地址 89 ...

    TCP/IP技术大全(中文PDF非扫描版)

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

    网络协议TCP/IP实验二IP 协议分析实验、IP 数据报分片实验

    湘潭大学网络协议TCP/IP实验二 IP协议分析实验、IP 数据报分片实验,仅供参考

    TCP-IP技术大全

    IP协议家族 77 9.1 TCP/IP模型 77 9.1.1 解剖TCP/IP模型 78 9.1.2 协议组件 78 9.2 理解网际协议(IP) 79 9.2.1 IPv4结构 79 9.2.2 IP做什么 80 9.3 理解传输控制协议(TCP) 81 9.3.1 TCP头...

    TCP/IP详解

    9.4 理解用户数据报协议(UDP) 85 9.4.1 UDP头结构 85 9.4.2 UDP能做什么 85 9.4.3 TCP和UDP 86 9.5 小结 86 第10章 IPv6 87 10.1 IPv6数据报 87 10.1.1 优先级分类 88 10.1.2 流标识 89 10.1.3 128位IP地址 89 ...

    IP协议ICMP协议分析实验报告

    由IP协议实现的是面向无连接的数据报服务。IP协议包括Ipv4和Ipv6两个版本,IPv4包括20字节的固定手部及可变长的可选首部。 (2) 利用ping检查网络是否能够连通,可以帮助我们分析判断网络故障。该命令只有在安装了...

    ip数据包分析_关于TCP_IP数据包的截取和分析

    ip数据包分析_关于TCP_IP数据包的截取和分析

    ip数据报程序网络包采集与分析

    2.2 对IP数据报进行分析以获得其首部详细信息; 2.3 对TCP报文段进行分析以获得其首部详细信息; 2.4 显示分析结果 3 建议使用VC++ 4 基于WinPcap开发库实现上述功能也可以。 ,之前我费了好多心血才找到的~

    TCPIP数据包的分析

    截取了一个TCP/IP数据包后,首先分离出IP协议(IP“Internet Protocol”协议是TCP/IP协议族中最为核心的协议,所有的TCP、UDP、ICMP和IGMP数据等都是以IP数据报格式传输的)的头部分,从IP协议头中可以得到很多关键...

    Wireshark 软件,观察 IP 数据报的基本结构的实验报告

    1、实行ping命令(以ping www.baidu.com为例),解释任意一个IP数据报的首部。 文件见 ping百度.pcapng 1、经常ping命令会显示timeout:可能是网络问题,可以多ping几次,或者换几个ip地址进行ping命令。 2、分片的...

    基于C++和QT的IP流量分析程序实现.zip

    IP 数据报是一个与硬件无关的虚拟包,由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首都中的源地址和目的...

    计算机网络&计算机网络

    8.1 IP数据报 8.1.1 数据报格式 8.1.2 地址格式 8.2 IPv6 8.2.1 固定头部格式 8.2.2 IPv6地址 8.2.3 扩展头部 8.3 小结 习题 第9章 ARP、RARP和ICMP 9.1 ARP和RARP 9.1.1 ARP 9.1.2 RARP协议 9.1.3 ...

    计算机网络(汲及内容全面)

    8.1 IP数据报 8.1.1 数据报格式 8.1.2 地址格式 8.2 IPv6 8.2.1 固定头部格式 8.2.2 IPv6地址 8.2.3 扩展头部 8.3 小结 习题 第9章 ARP、RARP和ICMP 9.1 ARP和RARP 9.1.1 ARP 9.1.2 RARP协议 9.1.3 ...

    计算机网络基础知识

    8.1 IP数据报 8.1.1 数据报格式 8.1.2 地址格式 8.2 IPv6 8.2.1 固定头部格式 8.2.2 IPv6地址 8.2.3 扩展头部 8.3 小结 习题 第9章 ARP、RARP和ICMP 9.1 ARP和RARP 9.1.1 ARP 9.1.2 RARP协议 9.1.3 ...

    经典全面系统的网络工程师资料

    8.1 IP数据报 8.1.1 数据报格式 8.1.2 地址格式 8.2 IPv6 8.2.1 固定头部格式 8.2.2 IPv6地址 8.2.3 扩展头部 8.3 小结 习题 第9章 ARP、RARP和ICMP 9.1 ARP和RARP 9.1.1 ARP 9.1.2 RARP协议 9.1.3 ...

    基于QQ TCP/IP网络传输,智能家居远程监控、报警系统(硬件、程序源码、设计报告等)-电路方案

    本系统主要采用即时通信工具QQ、TCP/IP网络传输以及自动控制技术和传感器技术实现基于QQ即时通信的家电远程控制及安防报警。整体实现是两个QQ之间进行即时通信,用发送和接收的信息实现控制和监控。 控制端为一个能...

    计算机网络课程设计实验报告

    IP数据报的分片与重组,在网络层的数据流走向,主机-网络层,数据链路层中的MAC子层,数据链路层中的LLC子层,封装与解封装,利用wireshark网络分析工具抓取数据包,处理已经抓捕下来的包,通过分析解决判断是否受到...

Global site tag (gtag.js) - Google Analytics