`
sunnylocus
  • 浏览: 876191 次
  • 性别: Icon_minigender_1
  • 来自: 美国图森
社区版块
存档分类
最新评论

抓包分析tcp连接

阅读更多

  有时候用socket写的程序会出现莫名其妙的问题,昨天和广东电信通信的一个程序竟然收到了"网络串包"(和电话串号差不多),程序是没有问题的,只能进行抓包分析了,下面是一个TCP连接建立的过程。

 

tcp建立连接首先在标志位进行标示,以表示请求的类型,FLAGS标志如下:

0... .... = Congestion Window Reduced (CWR): Not set

.0.. .... = ECN-Echo: Not set

..0. .... = Urgent: Not set

...0 .... = Acknowledgment: Not Set

.... 0... = Push: Not set

.... .0.. = Reset: Not set

.... ..0. = Syn: Not set

.... ...0 = Fin: Not set

一个tcp连接的建立需要进行三次握手:

  1. 发送端发送一个SYN=1,ACK=0标志位数据包给接收端,请求进行连接,这是第一次握手;
  2. 接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;
  3. 最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接建立,开始通讯。

标志解释:
SYN:同步标志
      同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把 TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。

ACK:确认标志
     确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。

RST:复位标志
    复位标志有效。用于复位相应的TCP连接。

URG:紧急标志
    紧急(The urgent pointer) 标志有效。紧急标志置位,

PSH:推标志
    该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理 telnet 或 rlogin 等交互模式的连接时,该标志总是置位的。

ECE:   显示拥塞提醒回应

CWR: 拥塞窗口减少

FIN:结束标志
    带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。

//------------------------------------------------------------------------------------------

它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置。其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,如果只是单个的一个SYN,它表示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。TCP的连接建立和连接关闭,都是通过请求-响应的模式完成的。

 

tcp断开连接要进行四次握手

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。

2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。

3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。

4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

分享到:
评论
1 楼 x7700 2011-03-11  
Good,抓包看性能中...

相关推荐

    Wireshark抓包分析TCP“三次握手,四次挥手”.doc

    Wireshark 抓包分析 TCP“三次握手,四次挥手” Wireshark 是一个功能强大的网络抓包工具,通过它我们可以抓包并分析 TCP/IP 传输过程。在本文中,我们将通过 Wireshark 来抓包和分析 TCP“三次握手,四次挥手”...

    wireshark抓包分析tcp三次握手四次挥手详解及网络命令

    ### Wireshark抓包分析TCP三次握手四次挥手详解及网络命令 #### 一、OSI与TCP/IP体系结构模型 在深入理解Wireshark抓包分析TCP三次握手及四次挥手之前,我们首先需要了解OSI七层模型与TCP/IP四层/五层模型的基础...

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

    总的来说,使用Wireshark进行TCP握手和挥手的分析,可以帮助我们深入理解TCP连接的生命周期,以及HTTP协议在TCP上的运作机制,这对于网络诊断、性能优化和安全分析都是非常有价值的。通过对网络封包的细致观察,我们...

    TCP握手详细过程以及抓包分析

    TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,广泛应用于互联网...在TCP握手和挥手过程中,抓包分析可以帮助我们直观地看到每个阶段的报文交互,从而更好地理解TCP连接的建立和终止机制。

    wireshake抓包分析tcp及http过程详解.doc

    Wireshark 抓包分析 TCP 及 HTTP 过程详解 Wireshark 是一个功能强大的网络协议分析工具,能够抓取和分析各种网络协议的数据包。在这篇文章中,我们将使用 Wireshark 来分析 TCP 及 HTTP 的过程。 TCP 连接建立...

    TCP抓包分析.doc

    TCP 抓包分析是对网络通信过程中TCP数据传输的详细观察,有助于理解数据在网络中的流动以及TCP协议的工作机制。 在TCP协议头中,包含以下几个重要字段: 1. **源端口**与**目的端口**:它们分别标识发送数据的应用...

    Wireshark抓包分析TCP IP协议

    通过抓包分析应用层协议,客户端软件和服务端软件通信,交互过程。 通过抓包工具分析传输层协议如何建立TCP连接,如何实现可靠传输,如何实现流量控制,通信完毕如何释放连接。 通过抓包工具分析网络层协议的封装。

    rtsp 抓包分析 tcp/udp

    - 分析TCP连接的建立和关闭,以及它们与RTSP命令的关系。 - 查看RTSP响应代码,了解会话状态和可能的错误。 - 使用过滤器(如`rtsp`和`udp port`)来减少分析的复杂性。 - 对RTP数据包进行解码,查看媒体数据的详细...

    tcp_http抓包分析_编程思路.pdf

    3. **TCP三次握手分析**:分析TCP连接建立的过程,即三次握手。TCP三次握手是通信双方建立连接的过程,分别涉及客户端和服务器之间的SYN、SYN+ACK和ACK报文。这一过程保证了双方都准备好进行数据传输。 4. **HTTP...

    Wireshark抓包分析微信功能----tcp/ip选修课期末大作业

    **TCP/IP通信协议详解与Wireshark抓包分析** 在信息技术领域,TCP/IP通信协议是互联网上数据交换的基础。TCP(传输控制协议)和IP(因特网协议)是这个协议族中的两个核心组件,负责确保数据的可靠传输和网络寻址。...

    TCP-IP协议和抓包分析

    总的来说,TCP/IP协议和抓包分析是网络通信的基础,理解和掌握这些知识对于IT专业人士来说至关重要,无论是网络管理员、软件开发者还是网络安全专家,都需要具备相关技能来处理网络问题,优化系统性能,以及确保网络...

    wireshake抓包分析tcp与http过程详解[整理].pdf

    wireshake 抓包分析 TCP 与 HTTP 过程详解 在这个资源中,我们将详细探讨 wireshake 抓包分析中的 TCP 与 HTTP 过程。wireshake 是一个功能强大且广泛使用的网络协议分析工具,能够对网络数据包进行捕获、分析和...

    网络抓包分析(TCP)

    【网络抓包分析(TCP)】 网络抓包分析是网络诊断和故障排查的重要手段,它可以帮助我们理解数据在网络中的传输...实际操作时,结合具体的抓包文件(如本例的“网络抓包分析”),可以更深入地理解TCP连接的全过程。

    _04TCP四次握手与抓包分析.zip_TCP捂手分析_抓包 tcp

    标题中的“_04TCP四次握手与抓包分析.zip_TCP捂手分析_抓包 tcp”指的是一个关于TCP协议连接建立(三次握手)和断开(四次挥手)的讲解资料,结合网络抓包工具进行分析。这个压缩包可能包含了一个PPT文件,用于详细...

    TCP抓包分析

    TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,它通过三次握手来确保两端之间的连接是可靠的。...在实际网络环境中,TCP抓包是诊断网络问题、分析通信过程的重要工具。

    TCP作业抓包——TCP、HTTP协议

    实验步骤中,首先开启WireShark并选择网络接口抓包,然后过滤HTTP流量,分析TCP的三次握手和HTTP的请求响应过程。通过观察源IP、目的IP、源端口和目的端口,可以追踪TCP连接的建立。例如,第一次握手的SYN报文由...

    tcp.rar_c语言编程_tcp_tcp 抓包_抓包_抓包分析

    4. 分析与诊断:根据解析出的信息,分析TCP连接的状态,例如是否发生丢包、重传、超时等问题。 通过学习这个资源,你不仅可以掌握C语言编程技巧,还能深入了解TCP协议的工作流程,包括三次握手、四次挥手、拥塞控制...

    实战利用WireShark对Telnet协议进行抓包分析.docx

    Wireshark 抓包分析 Telnet 协议 Wireshark 是一种功能强大的网络抓包分析工具,能够对网络协议进行深入分析。在本文中,我们将使用 Wireshark 对 Telnet 协议进行抓包分析,了解 Telnet 协议的工作原理和实现机制...

    TCP查看抓包程序,可截获TCp包

    在IT领域,网络通信是至关重要的,...通过分析TCP包,我们可以深入理解网络通信的过程,这对于我们解决复杂网络问题至关重要。学习并使用这类工具,不仅可以提升我们的技术水平,还能增强我们在网络环境中的应对能力。

Global site tag (gtag.js) - Google Analytics