TCP 三次握手和四次挥手,以及为什么三次和四次

**

TCP的三次握手过程?为什么会采用三次握手,二次握手可以吗?

**
TCP的三次握手过程:客户端向服务器发送连接请求;服务器对收到的客户端的报文段进行确认;客户端再次向服务器端的确认进行确认。
这里写图片描述

为什么采用三次?

(1)TCP是全双工的。客户端和服务端都可以向对方发送消息。如果两次,服务端无法确认客户端是否可以能收到。
(2)防止失效的连接请求报文段传送到服务端。当客服端发送的连接请求因为网络导致延迟到达服务端,那么服务端接收到以后以为又是一个新的连接,但是客户端现在没有建立连接,不会理会服务端的确认。这样服务端就一直等待客户端发送,导致资源浪费。而如果是三次握手,服务端没有收到客户端的确认,就不会一直等了。

TCP的四次挥手过程,为什么要四次

(1)第一次挥手:主动关闭方发送一个FIN,(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据)但是,此时主动关闭方还可以接受数据。
(2)第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1。
(3)第三次挥手:被动关闭方发送一个FIN,(与SYN相同,一个FIN占用一个序号)。
(4)第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

为什么需要四次挥手?

因为TCP有个半关闭状态,假设A.B要释放连接,那么A发送一个释放连接报文给B,B收到后发送确认,这个时候A不发数据,但是B如果发数据A还是要接收,这叫半关闭。然后B还要发给A连接释放报文,然后A发确认,所以是4次。

在tcp连接握手时为何ACK是和SYN一起发送?这里ACK却没有和FIN一起发送呢?

是因为tcp是全双工模式,接收到FIN时意味将没有数据再发来,但是还是可以继续发送数据。


由于是以前的笔记,参考的博客和资料就没有阐明了。如侵犯到版权,马上删除

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值