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  阅读(2735)  评论(1编辑  收藏  举报

导航