计算机网络 TCP三报文握手、四报文挥手

三报文握手

        三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。

TCP连接要解决以下三个问题

1. 使TCP双方能够确知对方的存在。

2.使TCP双方能够协商一些参数(如最大窗口值等)。

3.使TCP双方能够对运输实体资源(如缓存大小,连接表中的项目)进行分配。

三报文握手:

1.开始TCP客户和TCP服务器都处于关闭状态,两者都先建立传输控制块。然后TCP服务器进入监听状态,等待TCP客户进程的连接请求。TCP服务器进程是被动等待来自TCP客户的连接请求,而不是主动发起,所以被称为被动打开。(参考湖科大计网视频写的三报文握手过程)

计算机网络 TCP三报文握手、四报文挥手_第1张图片

2.TCP客户发送连接请求报文段,并进入连接已发送状态。TCP连接请求报文段的同步位SYN被设为1,表明这是一个连接请求报文段。序号字段seq被设为x。作为TCP进程所选择的初始序号。 TCP规定SYN设为1的报文段不能携带数据,但要消耗掉一个序号。由于TCP连接建立是由TCP客户主动发起的,所以被称为主动打开。

计算机网络 TCP三报文握手、四报文挥手_第2张图片

3.TCP服务器进程如果收到TCP连接请求报文段后,如果同意建立连接,则向TCP客户进程发送TCP连接请求确认报文段,并进入同步已接收状态。该报文段首部中的同步位SYN和确认位ACK都设为1,表明这是一个TCP连接请求确认报文段。序号字段seq被设为y,作为TCP服务器进程所选择的初始序号。确认号ack的值被设为x+1,这是对TCP客户进程所选择的初始序号的确认(因为请求报文段消耗掉一个数据)。

计算机网络 TCP三报文握手、四报文挥手_第3张图片

4.TCP客户进程收到TCP连接请求确认报文段后,要向TCP服务器进程发送一个普通的TCP确认报文段。并进入连接已建立状态。该确认报文段中的ACK被设为1,序号字段seq被设为x+1,确认号字段ack被设为y+1,TCP服务器进程收到该确认报文段后也进入连接已建立状态。现在TCP双方都建立连接已建立状态。

计算机网络 TCP三报文握手、四报文挥手_第4张图片

 为什么最后还要发送一个普通的TCP确认报文段呢,换句话说能不能简化为“两报文握手”?

不多余,这是为了防止已实效的连接请求报文段突然又传送到了服务器,因而导致错误,浪费网络资源。

(在socket编程中,客户端执行connect()时,将触发三次握手)

四报文挥手,暂略,如果需要我写,收藏或留言即可,感谢您的观看哦 !

你可能感兴趣的:(计算机网络,tcp/ip,网络)