获得徽章 3
- #码上掘金# 建立连接三次握手:
1-在 TCP 协议中, 主动发起请求的⼀端为客户端,被动连接的⼀端称为服务端 。不管是客户端还是服务端, TCP 连接建立完后都能发送和接收数据,所以 TCP
协议。
2-起初,两端都为 CLOSED 状态 。在通信开始前, 双⽅都会创建 TCB 。TCB 后遍进⼊ LISTEN 状态, 此时开始等待客户端发送数据
2.1-第一次握手
客户端向服务端发送连接请求报⽂段 。该报⽂段中包含自身的数据通讯初始序号 。请求发送后,客户端便进⼊ SYN-SENT 状态,x 表示客户端的数据通信初
始序号。
2.2-第二次握手
服务端收到连接请求报⽂段后, 如果同意连接,则会发送⼀个应答,该应答中
也会包含自身的数据通讯初始序号,发送完成后便进⼊ SYN-RECEIVED 状
态。
2.3-第三次握手
当客户端收到连接同意的应答后, 还要向服务端发送⼀个确认报⽂ 。客户端发完这个报⽂段后便进⼊ ESTABLISHED 状态, 服务端收到这个应答后也进⼊ESTABLISHED 状态,此时连接建立成功。
PS:第三次握⼿可以包含数据, 通过 TCP 快速打开 ( TFO ) 技术 。其实只要涉及到握⼿的协议,都可以使用类似 TFO 的⽅式,客户端和服务端存储相同 cookie ,下次握⼿时发出 cookie 达到减少 RTT 的目的你是否有疑惑明明两次握手就可以建立起连接,为什么还需要第三次应答?因为这是为了防止失效的连接请求报⽂段被服务端接收,从而产生错误。
可以想象如下场景 :
客户端发送了⼀个连接请求 A,但是因为网络原因造成了超时, 这时 TCP 会启动超时重传的机制再次发送⼀个连接请求 B。此时请求顺利到达服务端, 服务端应答完就建立了请求 。如果连接请求 A 在两端关闭后终于抵达了服务端,那么这时服务端会认为客户端⼜需要建立 TCP 连接,从而
应答了该请求并进⼊ ESTABLISHED 状态 。此时客户端其实是 CLOSED 状态,那么就会导致服务端⼀直等待, 造成资源的浪费展开68 - 【沸点年终总结|超掘时光机】
🎆2022迎来尾声,你有什么话想对过去一年的自己说?一起来参加沸点「超掘时光机」年终总结活动,活动升级,玩法升级,更好玩,更刺激!
⏰活动时间:2022年12月19日-12月26日
📖活动规则:
1. 点击进入活动页面,按照要求完成任务即可参与抽奖。每个任务每天开放1次,每完成1个任务可获得1积分,每1个积分可抽奖1次。
2. 在沸点 #2022超掘瞬间# 话题下,参考给出的9个问题发布沸点,活动结束后,将由掘金运营团队评选出#2022超掘瞬间#话题下优质沸点25条,赠送掘金鼠标垫1个
🚪活动页面:juejin.cn
补充说明:
1. 需要登陆掘金账号后,先进入活动页,再完成任务才有效
2. 矿石奖励将会实时发放,周边奖励将会在活动结束后的7个工作日后统一发放!展开2471.9k
今日面试题第二弹,牛逼到爆。![[不失礼貌的微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_16.9d17f6d.png)
![[捂脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_28.8981538.png)