面试题积累之TCP传输链接管理(详解图解建立和释放链接三次握手和四次挥手)

什么是TCP面向链接协议

在这里插入图片描述

TCP运输链接的三个阶段

在这里插入图片描述

TCP建立链接要解决的问题

在这里插入图片描述

TCP建立链接的三次握手图解

一开始tcp客户和tcp服务器都是关闭状态
在这里插入图片描述

TCP服务器的b先创建传输控制块用来存储TCP链接的重要信息如下 准备接受tcp客户的链接请求,进入监听状态
在这里插入图片描述
此时,TCP客户也要先创建传输控制快,然后想TCP服务器发送TCP链接请求,进入同步一发送状态,TCP链接请求中的报文段同部位SYN被设置为1,表明这是一个链接请求报文段,seq字段被设置为x,作为tcp客户进程所选择的初始序号,请注意,tcp规定SYN=1的报文段不能携带数据,但要小号掉一个序号,tcp链接进程是客户主动发起的,所以被称为主动打开链接,如下图
在这里插入图片描述
主机B中的tcp服务器收到请求后,如果同意建立链接,则向tcp客户发送链接请求确认报文段,进入同步已接收状态,且确认报文段中的同部位SYN被设置为1,确认位ACK被设置为1,表明这是一个确认报文段,seq被设置为一个初始值y,表明是tcp服务进程所选择的一个初始序号,确认号ack字段的值被设置为x+1,这是对tcp客户端所选择的初始序号x的确认,这个报文段不能携带数据,但要消耗一个序号

在这里插入图片描述

再次的握手是在tcp客户收到链接请求确认后,tcp客户发送一个普通的tcp确认报文段,并进入链接已建立状态,ACK=1,表明这是一个普通的tcp确认报文段,seq=x+1 ack=y+1这是对tcp服务器所选的初始信号y的确认,之后就是服务器也建立链接状态,可以进行数据传输
在这里插入图片描述

为什么不是两次握手建立

可能会出现下列情况,第一次的tcp链接请求的延迟导致进行了一次连接后关闭时接收到服务器的请求确认
在这里插入图片描述

TCP链接释放(四次挥手)

两者都可以释放链接
在这里插入图片描述
若客户主动关闭回想服务器发送链接释放的请求,FIN=1不携带数据也要消耗一个序号
在这里插入图片描述

主机收到后会发送一个普通的tcp确认报文段,并进入关闭等待状态,在发送一个tcp确认报文段,tcp服务进程会通知高层应用进程客户要释放链接,这时的tcp链接处于半关闭状态,客户进程没有数据发送,但是tcp服务进程还可以发送数据
在这里插入图片描述
tcp客户进入终止等待2状态,等待服务器发送链接释放报文段,服务器发送后会进入最后确认状态

在这里插入图片描述

最后就是客户再次向服务器确认,进入时间等待状态,服务器也会进入关闭状态,客户还会进入2MSL状态后在关闭

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43342105/article/details/106068079