【网络基础进阶之路】一文弄懂TCP的三次握手与四次断开

系列文章:

【网络基础进阶之路】路由器间的静态综合详解

文章目录:

一、TCP协议

二、三次握手——建立连接

三、四次断开——结束连接

一、TCP协议

TCP是一种面向广域网的通信协议,目的是在跨越多个网络通信时,为两个通信端点之间提供一条具有下列特点的通行方式。

旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

TCP具有下列特点的通信方式:

(1)基于流的方式;

(2)面向连接;

(3)可靠通信方式;

(4)在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销;

(5)通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。

二、三次握手——建立连接

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

TCP三次握手的过程如下:

【网络基础进阶之路】一文弄懂TCP的三次握手与四次断开_第1张图片

1、客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SENT状态。

2、服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

3、客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,就可以开始传输数据了。

三、四次断开——结束连接

建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭造成的。具体过程如下:

【网络基础进阶之路】一文弄懂TCP的三次握手与四次断开_第2张图片

1、某个应用进程首先调用close,称该端执行“主动关闭”)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。

2、接收到这个FIN的对端执行 “被动关闭”,这个FIN由TCP确认。

PS:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。

3、一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。

4、接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。

需要注意的是:无论是客户还是服务器,任何一端都可以执行主动关闭。通常情况是,客户执行主动关闭,但是某些协议,例如,HTTP/1.0却由服务器执行主动关闭。

就是因为TCP的三次握手和四次断开,给TCP传输带来了可靠性---确认,重传,排序,流控。

都看到这里了,创作不易,大家点个赞再走啦!!- ̗̀(๑ᵔ⌔ᵔ๑)

你可能感兴趣的:(网络基础进阶之路,网络,tcp/ip,网络协议)