ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【计算机网络】TCP为什么需要3次握手 [打印本页]

作者: 徐锦洪    时间: 2022-6-26 13:47
标题: 【计算机网络】TCP为什么需要3次握手
计算机网络——TCP建立连接的3次握手

TCP报文段首部

大致的流程想必大家并不陌生,我们先具体分析一下它这三次传输 首部都包含了哪些信息。
我们先来认识一下TCP报文段的首部都有哪些字段是需要用到的:




一共需要用到两个校验位                               (                      b                      i                      t                      )                          (bit)               (bit),分别是                               S                      Y                      N                          SYN               SYN 和                               A                      C                      K                          ACK               ACK




   注意:确认号                                         a                            c                            k                                  ack                     ack 是小写的,确认位                                         A                            C                            K                                  ACK                     ACK 是大写的。
  TCP建立连接

                               A                          A               A 为客户端                               (                      C                      l                      i                      e                      n                      t                      )                          (Client)               (Client),                              B                          B               B 为服务端                               (                      S                      e                      r                      v                      e                      r                      )                          (Server)               (Server)。
第一次握手


此时主机                               A                          A               A 向主机                               B                          B               B 第一次发出请求(刚开始它的报头肯定有源端口、目的端口等,但这不是我们关注的重点),关键的是,我怎么体现我要跟你建立连接?
此时还并没有确认号、确认位的参与。
第二次握手


此时仅代表,                              A                          A               A 给                               B                          B               B 发请求,                              B                          B               B 已经收到了,但怎么确定                               B                          B               B 给                               A                          A               A 发的数据,                              A                          A               A 也能收到呢?所以还需要下面两个字段,来进行第三次的握手:
第一次握手表示                               A                          A               A 给                               B                          B               B 发请求,第二次握手表示                               B                          B               B 给                               A                          A               A 做确认,同时                               B                          B               B 也向                               A                          A               A 发起连接请求;但此时                               B                          B               B 还需要                               A                          A               A 的回应。
就像打电话:
A问:你能听到我说话吗?
B回答:能,那你能听到我说话吗?
A回答:我也能
TCP是一个全双工的协议,所以此时必须要有第三次握手
第三次握手


                               A                          A               A 给                               B                          B               B 做出最后一次的确认,表示你刚才给我发的请求和数据我都已经收到了。
至此,                              A                          A               A 和                               B                          B               B 的连接就建立成功了。
   注意,此时同步位                                    S                         Y                         N                         =                         0                              SYN=0                  SYN=0 已被置为                                    0                              0                  0,因为连接已经建立成功。
  三次握手TCP连接的各个状态



面试题


这是一道很常见的面试题,但是大家有没有思考过,为什么是                                    3                              3                  3 次呢?                                   2                              2                  2、                                   4                              4                  4 次不可以吗?
我的理解:

更详细的图文分析可参考小林coding的TCP面试题
从三个方面分析了三次握手的原因:

可以当做八股文背。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4