专栏中心

EEPW首页 > 专栏 > TCP连接的握手和挥手

TCP连接的握手和挥手

发布人:szutek 时间:2022-11-11 来源:工程师 发布文章

什么是网络协议,在书本上的定义:网络协议是为计算机网络中进行数据交换而建立的规则、标准或者约定的集合。通常习惯是理解为规则,也就是TCP/IP规则。规则是什么?是双方实现交互必须遵守的规范。通俗讲,如果把网络比喻为一个交通网,那么设备与设备之间的链路,就是公路,而公路上的红绿灯、限速这些就是规则;遵守规则才能保证两地地往来。而TCP/IP网络协议,就是ip网络中的重要规则之一。


TCP也就是传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。因为互联网络中的不同部分可能拥有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数,而TCP协议能够动态地适应互联网络的特性,具备面对各种故障是的健壮性,可以在不可靠的互联网络上提供可靠的端到端字节流。

作为一个传输控制协议,TCP 的工作主要内容也就是建立连接,传输数据以及连接终止三个部分。在这其中TCP的建立连接称为“三次握手”,连接终止成为“四次挥手”。


建立连接

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。三次握手中,第一次握手确认客户端具有发送的能;第二次握手确认服务端具有发送和接收的能力;第三次握手确认客户端具有接收的能力,在三次握手中确认双方都具有发送的能力和接收的能力。三次握手完成后,TCP客户端和服务器端成功建立连接,就可以开始传输数据了。


三次握手过程:

第一次握手:SYN=1(连接请求报文),seq=a,发送后进入SYN-SENT状态;

第二次握手:SYN=1,ACK=1(同意连接请求报文),seq=b,发送后服务端进入SYN-RCVD状态;

第三次握手:ACK=1(确认请求报文),seq=a+1,发送后客户端进入ESTABLISHED状态,服务端收到后也进入ESTABLISHED状态。


连接终止

建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由于服务端在接收到FIN, 往往不会立即返回FIN, 必须等到服务端所有的报文都发送完毕了,才能发FIN。因此先发一个ACK表示已经收到客户端的FIN,延迟一段时间才发FIN,这就造成了四次挥手。


四次挥手过程:

第一次挥手:若A认为数据发送完成,则它需要向B发送连接释放请求。该请求只有报文头,头中携带的主要参数为:FIN=1,seq=u。此时,A将进入FIN-WAIT-1状态。

第二次挥手:B收到连接释放请求后,会通知相应的应用程序,告诉它A向B这个方向的连接已经释放。此时B进入CLOSE-WAIT状态,并向A发送连接释放的应答,其报文头包含:ACK=1,seq=v,ack=u+1。

A收到该应答,进入FIN-WAIT-2状态,等待B发送连接释放请求。

第三次挥手:当B向A发完所有数据后,向A发送连接释放请求,请求头:FIN=1,ACK=1,seq=w,ack=u+1。B便进入LAST-ACK状态。

第四次挥手:A收到释放请求后,向B发送确认应答,此时A进入TIME-WAIT状态。该状态会持续2MSL时间,若该时间段内没有B的重发请求的话,就进入CLOSED状态,撤销TCB。当B收到确认应答后,也便进入CLOSED状态,撤销TCB。


不管是三次握手还是四次挥手,其可靠性,简单而言就是通过多次的确定,来减少错误的发生。很多协议的hello报文也是如此。通过固定某一阶段,去不断确定对端的状态,由此确保网络的稳定和可靠。并且TCP协议作为网络的重要协议,一种重要规则,我们需要好好的去了解其工作原理、作用;这样能够帮助我们更好地在网络公路上的通行,建立良好的网络秩序,从而保证网络的稳定性和持久性。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 传输控制协议 TCP

相关推荐

8、16位MCU接入TCPIP网络方案

资源下载 2008-01-05

基于LabVIEW FPGA的数据传输技术

2020-03-30

MPLAB® Harmony TCP/IP协议栈

嵌入式Linux网络开发 中

视频 2009-10-26

嵌入式Linux网络开发 上

视频 2009-10-26

国嵌应用班-7-3(TCP程序设计)

视频 2013-11-06

根据TCP/IP的浮标网络通信系统设计策略

LCD资料

资源下载 2008-01-06

LCD术语

资源下载 2008-01-06

如何解决CAN总线超强干扰?

2020-03-05

Microchip Wi-Fi通信演示板及解决方案

一种基于C64系列DSP的千兆以太网通信接口设计

实现多端口1Gbps和10Gbps TCP/iSCSI协议处理任务卸载解决方案

EDA/PCB 2018-09-10

LabViewFPGA数据传输技术

2019-12-24

一文把TCP/IP协议讲绝了!

2024-04-30

嵌入式北斗网络时间服务器的Web网页实现

19个0 day漏洞影响数十亿IoT设备

将lwIP TCP/IP堆栈整合至嵌入式应用的界面

更多 培训课堂
更多 焦点
更多 视频

技术专区