三次握手四次挥手详解_网络工程师必懂篇-详解TCP三次握手四次挥手

f2284a4d346e921f2031cf530b822843.png

上次我们说TCP协议是一个可靠的传输层协议,它的可靠性主要分为四点

①建立连接(三次握手)

②确认重传

③流量控制,滑动窗口

④断开连接(四次挥手)

上次我们说到TCP通过包头信息中的序列号和确认号保证能够完全接受所有数据,通过校验和确认数据的完整性,那么tcp除了这些提供了可靠性之外,还有建立连接,断开连接,和滑动窗口控制来提供可靠性机制,接下来一次给大家讲解。

首先我们来看一下TCP如何进行建立连接

fcfc6e948ca1d2feeb0cdcbab20d56a6.png

TCP通过三次握手建立可靠连接,那么这个链接是如何建立的呢?

上次我们说到TCP报头中有个Flag选项,里有6个标志位,每一位代表不同的作用。而建立链接的时候就用到了我们的标志位。

5b05d770ad893e0db4ce0c352c7816a2.png

首先我们看紫色圈住的内容是tcp建立连接三次握手的过程,而红色的是我们的Flag中的标志位。

建立过程

①主机a(通常叫做客户端)发送一个SYN置位为“1”的数据段,表示期望与服务器A建立链接,这个数据段的序列号(seq)为a

②服务器a回复了SYN=ACK的数据段,这个数据段的序列号(seq)为b,确认序列号为主机a的序列号加1(a+1),此次作为对主机a的SYN报文进行确认,表示同意建立连接并希望与主机a建立链接。

③主机a发送一个标识了ACK置位为“1”的数据段,次数据段的序列号(seq)为a+1,确认序列号为服务器的序列号加1(b+1),此次作为对服务器a的SYN报文进行确认,表示同意与你建立链接。

以上就是TCP建立连接的过程,双向请求,双向作出回应,所以我们所tcp是可靠的。

接下来我们说滑动窗口是如何保证数据的可靠性的。

b885f66e9b819aaec6c142337d0e9a47.png

首先我们要知道窗口大小指的是什么

窗口大小,就是预留了多大的缓冲区,单位是字节,一次最多能接收处理的数据量。

看上图,主机a向服务器a发送4个长度为1024字节的数据段,其中主机a的窗口大小为4096个字节,服务器a的窗口大小为3072个字节,当服务器收到第3个数据段,缓存区满了之后,第四个数据段就会被丢弃,这时候服务器以ACK3073响应窗口大小调整为3072,表明自己的缓冲区只能处理3072个字节的数据段,主机a收到之后改变自己发送的速率,发送窗口大小改为3072字节。

TCP通过窗口滑动,保证了数据的完全接受和处理保障了数据传输的可靠性。

TCP支持全双工模式的数据传输,在传输数据之前通过三次握手建立两个方向的连接,因此在数据传输之后,两个方向的连接都需要关闭。那么是如何进行关闭的呢,我们看下面。

73db69ed3a550bbcdd5d42aed1d11cfa.png

如图所示

①主机a想要终止连接,于是发送一个FIN,ACK置位为“1”的数据段,序列号为a,确认序列号为b,表示要跟服务器断开连接。

②服务器a收到后回应标识了ACK的数据段,序列号为b,确认序列号为a+1,作为对主机a的FIN回应,表示收到了断开请求。

③服务器a再给主机a发送一个FIN,ACK置位为“1”的数据段,序列号为b,确认序列号为a+1,表示想要跟主机a断开连接。

④主机a回应一个标识了ACK的数据段,序列号为a+1,确认序列号为b+1,作为对服务器a的FIN报文的确认,表示同意断开连接。

经过这四个步骤代表着tcp连接的断开,双向建立,双向断开,保证其可靠性。

以上是TCP如何通过通过滑动窗口,三次握手,四次挥手提高可靠性的原因,感谢大家的观看,我们技术讨论群是:765244669,每天都会有免费的公开课连接,大家可以免费报班学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值