TCP三次握手和TCP四次挥手

一 TCP三次握手

TCP建立连接的过程叫做握手,握手需要客户端和服务器之间交换三个TCP报文段。如图所示,假设主机A为TCP客户端,主机B为TCP服务端。在最初时间,两端的TCP进程都是处于CLOSED状态

(1)主机A主动发起连接请求,向B发送连接请求报文段,这时首部的同步位字段SYN=1,同时选择一个初始序号seq=x,此报文段不携带数据,但要消耗一个序号(序号详情见上篇文章:序号字段);

(2)主机B收到报文段请求时,如果同意建立连接,则向A发送确认数据段,确认报文段中吧SYN和ACK字段都设置为1,确认号为ack=x+1(确认号详情见上篇文章确认号字段,注意确认确认号字段ack和ACK字段的区别),同时为自己选择一个序号seq=y,此报文段同样不携带数据;

(3)主机A收到主机B的确认后,还要给主机B发送一个确认报文段。确认报文段的ACK值为1,确认号为ack=y+1,而自己的序号为seq=x+1,当主机B收到了主机A的确认包时,彼此进入ESTABLISHED状态,准备传输数据。

TCP建立连接的过程我们称作TCP的三次握手,正是此种建连机制,保证了TCP协议的可靠传输。

在整个传输过程中,主机A向主机B发送请求连接的报文段,如果一直未收到主机B的确认数据报,主机A会一直发送建连数据报,直到收到主机B的确认数据报或者建连请求关闭。

当主机A收到了主机B的确认包,主机A会向主机B发送一个确认包,如果主机B未收到主机A的确认包,主机B会认为建连未成功,只要当均收到对方对应确认包(都能确认彼此双方均已收到),才可以正式开始传输数据。

二 TCP四次挥手

当TCP双方传输数据完毕后,需要进一步释放连接。再释放开始之前,彼此双方处于ESTABLISHED状态

(1)主机A进程首先向其TCP发出连接释放报文段,并停止发送数据,主动关闭连接,主机A会把连接释放报文段首部的终止控制位设置未1,序号seq=u,u等于前面已传送过的数据的最后一个字节的序号加1.

(2)主机B收到主机A的连接释放报文段,会立即发送出一个确认报文段,ACK=1,ack=u+1,syn=v,v等于前面主机B已传送过的数据的最后一个字节的序号+1,此时主机A和主机B之间单向连接已经释放,我们称此时的状态未半关闭状态。主机A无法向主机B发送数据,但主机B可以向主机A发送数据,且主机A需要接受。

(3)若主机B已经没有向主机A发送的数据,其应用进程就通知TCP释放连接。此时主机B发送的连接释放报文段FIN置为1,此时序号seq=w,但是确认号ack仍需要重复上次的确认号ack=u+1。

(4)主机A收到主机B的连接释放报文段后,向主机B发送确认报文段,ACK字段置为1,确认号ack=w+1,序号seq=u+1。至此,TCP连接释放。

此过程我们称为TCP的四次挥手。

相关推荐
Hello.Reader1 小时前
ngx_http_limit_conn_module精准连接控制
网络·网络协议·http
qq_386322692 小时前
华为网路设备学习-21 IGP路由专题-路由过滤(filter-policy)
前端·网络·学习
巴巴_羊5 小时前
前端面经 计网 http和https区别
网络协议·http·https
LyaJpunov7 小时前
HTTPS全解析:从证书签发到TLS握手优化
网络协议·http·https
你曾经是少年7 小时前
HTTPS
网络协议·http·https
2501_915918418 小时前
多账号管理与自动化中的浏览器指纹对抗方案
websocket·网络协议·tcp/ip·http·网络安全·https·udp
firshman_start9 小时前
第十五章,SSL VPN
网络
Johnstons9 小时前
AnaTraf:深度解析网络性能分析(NPM)
前端·网络·安全·web安全·npm·网络流量监控·网络流量分析
落——枫9 小时前
路由交换实验
网络
Johny_Zhao9 小时前
K8S+nginx+MYSQL+TOMCAT高可用架构企业自建网站
linux·网络·mysql·nginx·网络安全·信息安全·tomcat·云计算·shell·yum源·系统运维·itsm