计算机网络TCP三次握手 四次挥手浅析

这几天复习计算机网络对TCP三次握手很迷惑,查了一大堆资料算是明白了原因,就当作我第一篇博客的内容吧。

首先TCP是面向连接的,三次握手是为了建立连接以便传输数据。

为什么是三次握手呢?

本质上是因为TCP的连接是双向的,而四次握手的中间两步又是可以合并的。

双向保证连接的四次握手

A 请求连接——> B A 请求连接——> B

A <——确认收到 B A <——确认收到 请求连接 B

A <——请求连接 B A 确认收到——> B

A 确认收到——> B

三次握手的过程

TCP三次握手图解

计算机网络TCP三次握手 四次挥手浅析_第1张图片

第一次握手:

SYN=1 seq=x.SYN=1,ACK=0.表示为请求连接报文,(这里ACK=0省略) seq表示主机A向主机B协商从序号为x发送数据报

这里需要注意的是,A向B的连接未建立无法传送数据,所以该请求报文消耗序号最小,消耗1个序号

第二次握手

SYN=1,ACK=1,seq=y,ack=x+1。

SYN=1,ACK=1表示同意建立A向B的连接,seq=y表示从序号为y的报文段开始发送,

ack=x+1表示已收到序号x的报文段,期望收到x+1序号的数据,即已收到序号x。第一次的请求报文消耗了1个序号

ack=x+1确认了第一次报文的收到,并请求B向A的连接

第三次握手

SYN=1,ACK=1,seq=x+1,ack=y+1 。

seq=x+1表示自己从序号x+1开始发送,期望收到主机B序号y+1的数据

第三次报文确认了前两次请求报文的收到。

四次挥手的过程

计算机网络TCP三次握手 四次挥手浅析_第2张图片

四次挥手

第一次挥手

FIN=1表示请求关闭A向B的连接 seq=u 已发送u-1序号的数据报

第二次挥手

ACK=1,同意关闭A向B的连接。seq=v,B向A发送的数据报序号为v。ack=u+1已收到u序号数据报

此时A向B方向的连接已经关闭,中间保持一段时间单向B向A连接。

第三次挥手

FIN=1 seq=w

FIN=1,请求关闭B向A连接。seq=w,从序号为w开始向A发送。

这里ack=u+1是因为前两次已经关闭了客户向服务器这个方向的链接。

第四次挥手

ACK=1,seq=u+1,ack=w+1。

ACK=1,同意关闭B向A连接。seq=u+1,因为A向B的连接已关闭,故这里是u+1。ack=w+1,已收到序号w的报文段,期望收到w+1序号的报文段。

备注

更新一个问题,看人家说面试里面的,为什么请求报文只占1个序号?

答:此时连接未建立,无法传输数据,只能携带请求信息,也是消耗序号最少的报文,消耗序号1。

你可能感兴趣的:(学习笔记,计算机网络,TCP,三次握手)