`
ILoveDOUZHOU
  • 浏览: 81139 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

wireshark中“tcp segment of a reassembled pdu”的解释

 
阅读更多

转自于http://blog.csdn.net/rossini23/article/details/5424850

“TCP segment of a reassembled PDU”指TCP层收到上层大块报文后分解成段后发出去。于是有个疑问,TCP层完全可以把大段报文丢给IP层,让IP层完成分段,为什么要在TCP层分呢? 其实这个是由TCP的MSS(Maximum Segment Size,最大报文段长度)决定的,TCP在发起连接的第一个报文的TCP头里通过MSS这个可选项告知对方本端能够接收的最大报文(当然,这个大小是TCP净荷的大小),以太网上这个值一般设置成1460,因为1460Byte净荷+20Byte TCP头+20Byte IP头 = 1500字节,正好符合链路层最大报文的要求。

至于收到一个报文后如何确定它是一个"TCP segment"?如果有几个报文的ACK序号都一样,并且这些报文的Sequence Number都不一样,并且后一个Sequence Number为前一个Sequence Number加上前一个报文大小再加上1的话,肯定是TCP segment了,对于没有ACK标志时,则无法判断。

另外有不太一样的说法,转自http://sabolasi.iteye.com/blog/1254131

MTU和MSS

本文用到的抓包工具为wireshark,它的前身是赫赫有名的Ethereal。wireshark以太网帧的封包格式为:

Frame = Ethernet Header + IP Header + TCP Header + TCP Segment Data

(1)Ethernet Header = 14 Byte = Dst Physical Address(6 Byte)+ Src Physical Address(6 Byte)+ Type(2 Byte),以太网帧头以下称之为数据帧

(2)IP Header = 20 Byte(without options field),数据在IP层称为Datagram,分片称为Fragment

(3)TCP Header = 20 Byte(without options field),数据在TCP层称为Stream,分段称为Segment(UDP中称为Message)。

(4)54个字节后为TCP数据负载部分(Data Portion),即应用层用户数据。

Ethernet Header以下的IP数据报最大传输单位为MTU(Maximum Transmission Unit,Effect of short board),对于大多数使用以太网的局域网来说,MTU=1500。

TCP数据包每次能够传输的最大数据分段为MSS为了达到最佳的传输效能,在建立TCP连接时双方协商MSS值,双方提供的MSS值的最小值为这次连接的最大MSS值。MSS往往基于MTU计算出来,通常MSS=MTU-sizeof(IP Header)-sizeof(TCP Header)=1500-20-20=1460。

这样,数据经过本地TCP层分段后,交给本地IP层,在本地IP层就不需要分片了。但是在下一跳路由(Next Hop)的邻居路由器上可能发生IP分片!因为路由器的网卡的MTU可能小于需要转发的IP数据报的大小。这时候,在路由器上可能发生两种情况:

(1).如果源发送端设置了这个IP数据包可以分片(May Fragment,DF=0),路由器将IP数据报分片后转发。

(2).如果源发送端设置了这个IP数据报不可以分片(Don’t Fragment,DF=1),路由器将IP数据报丢弃,并发送ICMP分片错误消息给源发送端。

关于MTU的探测,参考《Path MTU discovery》。我们可以通过基于ICMP协议的ping命令来探测从本机出发到目标机器上路由上的MTU,详见下文。

分享到:
评论

相关推荐

    作业四:用 Wireshark 分析 TCP segment1

    Wireshark捕获到这个报文后,可以在“TCP选项”中看到这个ISN。然后,服务器回应一个SYN+ACK(同步+确认),携带它自己的ISN和对客户端SYN的确认号。最后,客户端再发送一个ACK(确认),确认服务器的ISN,至此,TCP...

    Wireshark入门 tcp三次握手

    - **设置过滤器**:为了专注于TCP三次握手的过程,可以在Wireshark的捕获过滤器中设置`tcp`或`tcp[13] & 2`,这样可以只捕获TCP协议的数据包。 ##### 4.2 观察TCP三次握手 - **第一次握手**:客户端向服务器发送一...

    结合wireshark分析TCP和三次握手原理.docx

    Wireshark 分析 TCP 三次握手原理 Wireshark 是一个功能强大且广泛使用的网络封包分析软件,能够捕获网络封包,并尽可能地显示出最为详细的网络封包信息。Wireshark 广泛应用于网络管理员、网络安全工程师、开发者...

    Wireshark分析TCP连接断开过程分析与总结.docx

    Wireshark 分析 TCP 连接断开过程分析与总结 Wireshark 是一个功能强大的网络协议分析工具,能够对 TCP 连接断开过程进行详细的分析和总结。下面我们将对 Wireshark 分析 TCP 连接断开过程进行详细的分析和总结。 ...

    基于Wireshark的TCP协议工作过程分析.pdf

    ### 基于Wireshark的TCP协议工作过程分析 #### TCP协议概述 TCP(Transmission Control Protocol,传输控制协议)是TCP/IP协议族中的传输层协议之一,它提供了可靠的、面向连接的服务,确保数据能够准确无误地从...

    wireshark抓取TCP连接及断开实验

    ### Wireshark抓取TCP连接及断开实验 #### 实验背景与目标 在现代网络环境中,理解TCP/IP协议的工作机制对于确保数据在网络中的高效、可靠传输至关重要。本实验旨在利用Wireshark这一强大的网络协议分析工具,深入...

    Wireshark_TCP_Sept_15_2009.zip_wireshark

    6. **TCP选项与标志**:解释TCP头部中不同选项和标志的用途,如Nagle算法、Timestamps、Selective Acknowledgments(SACK)等。 7. **Wireshark使用技巧**:提供如何使用Wireshark过滤、显示过滤器、追踪TCP流、...

    Wireshark_TCP3.rar_Wireshark Lab_lab windows Tcp_wireshark_wires

    在TCP(传输控制协议)的实验室环境中,Wireshark能够帮助我们深入理解TCP的工作机制和交互过程。在这个名为"Wireshark Lab: TCP"的实验中,我们将深入探讨TCP的各个关键特性。 首先,TCP是互联网协议栈中最核心的...

    实验8 Wireshark工具的使用与TCP数据包分析实验.pdf

    【实验8 Wireshark工具的使用与TCP数据包分析实验】 Wireshark是一个强大的网络封包分析工具,原名为Ethereal,它允许用户捕获并深入解析网络数据包,以便于理解网络通信的细节。Wireshark的核心是WinPCAP库,它...

    为什么wireshark有的地方显示的是乱码报文

    在使用Wireshark的过程中,有时我们可能会遇到显示乱码的情况,这通常是由于以下几个原因导致的: 1. **编码问题**:Wireshark尝试解析数据时,如果不知道正确的字符编码,就可能显示为乱码。例如,网络数据可能...

    wireshark抓包实验之TCP

    计网wireshark抓包实验之TCP,内容有下: 1. What is the IP address and TCP port number used by the client computer (source) that is transferring the file to gaia.cs.umass.edu? To answer this question, ...

    wireshark的TCP实验.doc

    Wireshark中的TCP显示过滤规则 在Wireshark中,我们可以使用显示过滤规则来显示包含特定标志的TCP报文。例如: * `tcp.flags.syn == 1` 显示包含 TCP SYN 标志的封包。 * `tcp.flags.syn == 1 and tcp.flags.ack =...

    wireshark抓包分析tcp三次握手四次挥手

    在TCP/IP通信中,TCP连接的建立和关闭过程分别称为三次握手和四次挥手,这两个过程对于理解TCP连接的工作原理至关重要。 首先,我们来详细讲解TCP的三次握手过程: 1. **第一次握手**:客户端(Client)发送一个...

    使用Wireshark分析TCP协议书范本.doc

    在本实验中,我们将利用Wireshark来深入理解TCP(传输控制协议)的工作机制。 **一、TCP连接建立:三次握手** TCP连接的建立是一个著名的三次握手过程。首先,客户端发送一个SYN(同步序列编号)报文给服务器,...

    利用wireshark分析tcp-smtp-ftp-http通信过程

    在Wireshark中,TCP协议是最常见的传输层协议之一。TCP协议通过三次握手的过程建立连接,从而确保了数据传输的可靠性。三次握手包括:1)客户端发送一个带有SYN标志的TCP包请求建立连接;2)服务器接收到请求后,发送...

    tcp 实验报告(wireshark)

    在这个TCP实验报告中,我们通过Wireshark工具分析了TCP连接的建立、数据传输以及相关参数。 1. 客户端(源)使用10.2.137.31作为IP地址,并且使用34502作为TCP端口号来向gaia.cs.umass.edu传输文件。这表明客户端在...

Global site tag (gtag.js) - Google Analytics