有时候用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连接的建立需要进行三次握手:
- 发送端发送一个SYN=1,ACK=0标志位数据包给接收端,请求进行连接,这是第一次握手;
- 接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;
- 最后,发送端发送一个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)。
分享到:
相关推荐
Wireshark 抓包分析 TCP“三次握手,四次挥手” Wireshark 是一个功能强大的网络抓包工具,通过它我们可以抓包并分析 TCP/IP 传输过程。在本文中,我们将通过 Wireshark 来抓包和分析 TCP“三次握手,四次挥手”...
### Wireshark抓包分析TCP三次握手四次挥手详解及网络命令 #### 一、OSI与TCP/IP体系结构模型 在深入理解Wireshark抓包分析TCP三次握手及四次挥手之前,我们首先需要了解OSI七层模型与TCP/IP四层/五层模型的基础...
总的来说,使用Wireshark进行TCP握手和挥手的分析,可以帮助我们深入理解TCP连接的生命周期,以及HTTP协议在TCP上的运作机制,这对于网络诊断、性能优化和安全分析都是非常有价值的。通过对网络封包的细致观察,我们...
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,广泛应用于互联网...在TCP握手和挥手过程中,抓包分析可以帮助我们直观地看到每个阶段的报文交互,从而更好地理解TCP连接的建立和终止机制。
Wireshark 抓包分析 TCP 及 HTTP 过程详解 Wireshark 是一个功能强大的网络协议分析工具,能够抓取和分析各种网络协议的数据包。在这篇文章中,我们将使用 Wireshark 来分析 TCP 及 HTTP 的过程。 TCP 连接建立...
TCP 抓包分析是对网络通信过程中TCP数据传输的详细观察,有助于理解数据在网络中的流动以及TCP协议的工作机制。 在TCP协议头中,包含以下几个重要字段: 1. **源端口**与**目的端口**:它们分别标识发送数据的应用...
通过抓包分析应用层协议,客户端软件和服务端软件通信,交互过程。 通过抓包工具分析传输层协议如何建立TCP连接,如何实现可靠传输,如何实现流量控制,通信完毕如何释放连接。 通过抓包工具分析网络层协议的封装。
- 分析TCP连接的建立和关闭,以及它们与RTSP命令的关系。 - 查看RTSP响应代码,了解会话状态和可能的错误。 - 使用过滤器(如`rtsp`和`udp port`)来减少分析的复杂性。 - 对RTP数据包进行解码,查看媒体数据的详细...
3. **TCP三次握手分析**:分析TCP连接建立的过程,即三次握手。TCP三次握手是通信双方建立连接的过程,分别涉及客户端和服务器之间的SYN、SYN+ACK和ACK报文。这一过程保证了双方都准备好进行数据传输。 4. **HTTP...
**TCP/IP通信协议详解与Wireshark抓包分析** 在信息技术领域,TCP/IP通信协议是互联网上数据交换的基础。TCP(传输控制协议)和IP(因特网协议)是这个协议族中的两个核心组件,负责确保数据的可靠传输和网络寻址。...
总的来说,TCP/IP协议和抓包分析是网络通信的基础,理解和掌握这些知识对于IT专业人士来说至关重要,无论是网络管理员、软件开发者还是网络安全专家,都需要具备相关技能来处理网络问题,优化系统性能,以及确保网络...
wireshake 抓包分析 TCP 与 HTTP 过程详解 在这个资源中,我们将详细探讨 wireshake 抓包分析中的 TCP 与 HTTP 过程。wireshake 是一个功能强大且广泛使用的网络协议分析工具,能够对网络数据包进行捕获、分析和...
【网络抓包分析(TCP)】 网络抓包分析是网络诊断和故障排查的重要手段,它可以帮助我们理解数据在网络中的传输...实际操作时,结合具体的抓包文件(如本例的“网络抓包分析”),可以更深入地理解TCP连接的全过程。
标题中的“_04TCP四次握手与抓包分析.zip_TCP捂手分析_抓包 tcp”指的是一个关于TCP协议连接建立(三次握手)和断开(四次挥手)的讲解资料,结合网络抓包工具进行分析。这个压缩包可能包含了一个PPT文件,用于详细...
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,它通过三次握手来确保两端之间的连接是可靠的。...在实际网络环境中,TCP抓包是诊断网络问题、分析通信过程的重要工具。
实验步骤中,首先开启WireShark并选择网络接口抓包,然后过滤HTTP流量,分析TCP的三次握手和HTTP的请求响应过程。通过观察源IP、目的IP、源端口和目的端口,可以追踪TCP连接的建立。例如,第一次握手的SYN报文由...
4. 分析与诊断:根据解析出的信息,分析TCP连接的状态,例如是否发生丢包、重传、超时等问题。 通过学习这个资源,你不仅可以掌握C语言编程技巧,还能深入了解TCP协议的工作流程,包括三次握手、四次挥手、拥塞控制...
Wireshark 抓包分析 Telnet 协议 Wireshark 是一种功能强大的网络抓包分析工具,能够对网络协议进行深入分析。在本文中,我们将使用 Wireshark 对 Telnet 协议进行抓包分析,了解 Telnet 协议的工作原理和实现机制...
在IT领域,网络通信是至关重要的,...通过分析TCP包,我们可以深入理解网络通信的过程,这对于我们解决复杂网络问题至关重要。学习并使用这类工具,不仅可以提升我们的技术水平,还能增强我们在网络环境中的应对能力。