计算机网络

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

2018-12-27  本文已影响0人  我我我我我_a70b

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

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

为什么是三次握手呢?

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

双向保证连接的四次握手

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

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

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

A                  确认收到——>                B

三次握手的过程

TCP三次握手图解

第一次握手:

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的数据

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

四次握手的过程

四次挥手

第一次挥手

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序号的报文段。

上一篇下一篇

猜你喜欢

热点阅读