TCP三次握手(通俗易懂)
---TCP连接要解决的三个问题
TCP的连接建立主要解决以下三个问题:
1--使TCP双方能够知道对方的存在
2--使TCP双方能够协商一些参数(如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量)
3--使TCP双方能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。
---图解TCP三次握手
图中
SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号
同步位SYN=1,表明这是一个TCP连接请求报文段)。
seq=x(sequence number 表示的是我方(发送方)这边,这个packet的数据部分的第一位应该在整个data stream,作为TCP客户进程选择的初始字号,(
注意:TCP规定的SYN被设置为1的报文段不能携带数据,但要消耗一个序号)。
第一个ACK=1
seq=y
ack=x+1(acknowledge number 表示的是期望的对方(接收方)的下一次sequence number是多少
第二个ACK=
seq=x+1(我给你发500+1台三星)
ack=y+1(但你得给我发50+1台汽车)
四--能否只有两次握手?
答案肯定是不能。看下图
红线部分为一个迟到的连接请求,并且重传计时器结束了他还没有到达,于是发生重传(黑线)。
若只有两次握手,当迟到的到达后,接收方收到了,然后就按规矩建立连接,安排专人(资源)去等待发送方发送数据。但是发送方已经重传过了,他并不知道这个迟到的请求到达了(他也以为重传过了就不会再有重复请求到达),于是接收方就这样傻傻的等待。
三次握手能防止已失效的连接请求报文段突然又传到TCP服务器,导致错误,浪费资源。
练习题:
posted on 2021-01-08 22:36 Love&Share 阅读(2759) 评论(1) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)