TCP三次握手 TCP四次挥手

TCP三次握手


三次握手的实际情况

chai是一位帅气小伙儿,yun是一位文静貌美姑凉。以下是费文字的描述

  • chai: 小姐姐,能知道你的芳名吗?
  • yun: yun
  • yun: 小哥哥,你还没告诉我你的名字呢
  • chai: chai

以下省一点

  • chai: 小姐姐,能知道你的芳名吗?
  • yun: yun,小哥哥,你还没告诉我你的名字呢
  • chai: chai

握手流程图

struct tcphdr {
  uint16_t   source;
  uint16_t   dest;
  uint32_t   seq;
  uint32_t   ack_seq;
#if defined(__LITTLE_ENDIAN_BITFIELD)  // 小端
  uint16_t   res1:4,
  uint16_t   doff:4,
  uint16_t   fin:1,
  uint16_t   syn:1,
  uint16_t   rst:1,
  uint16_t   psh:1,
  uint16_t   ack:1,
  uint16_t   urg:1,
  uint16_t   ece:1,
  uint16_t   cwr:1;
#elif defined(__BIG_ENDIAN_BITFIELD)  // 大端
  uint16_t   doff:4,
  uint16_t   res1:4,
  uint16_t   cwr:1,
  uint16_t   ece:1,
  uint16_t   urg:1,
  uint16_t   ack:1,
  uint16_t   psh:1,
  uint16_t   rst:1,
  uint16_t   syn:1,
  uint16_t   fin:1;
#endif
  uint16_t   window;
  uint16_t   check;
  uint16_t   urg_ptr;
  /*The options start here. */
};

第一次syn置为1
第二次syn置为1,ack置为1
第三次ack置为1

TCP四次挥手


四次挥手的实际情况

举例:春节送别。

  • 第一次,要走的人说:我要去深圳了
  • 第二次,送别的人说:拜拜
  • 第三次,送别的人说:我要回家了,对了还有你的东西
  • 第四次,要走的人说:拜拜

image.png

第一次fin置为1
第二次ack置为1
第三次ack置为1,fin置为1
第四次ack置为1

2MSL

2倍报文生存周期。如果第四次挥手丢失,第三次挥手会在1MSL内重传。
如果我们设置的时间少于 2MSL ,旧的连接刚刚关闭,这个时候有同样的新连接进来了,而之前的连接还有残留报文在网络上,就会干扰新的连接的使用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容