三次握手和四次挥手


当客户端尝试访问服务端时会产生tcp连接,而tcp连接伴随着三次握手。

1. 基本流程

几个标记位(SYN/FIN/ACK/RST)

三次握手
client  SYN      server
server  SYN ACK  client
client  ACK      server

四次挥手
client  FIN      server
server  ACK      client
server  FIN      client
client  ACK      server

2. 思考

2.1 为什么是三次握手?

两次握手只能保证客户端的序列号成功被服务端接收,而服务端是无法确认自己的序列号是否被客户端成功接收。所以是不行的

2.2 为什么是四次挥手?

四次挥手是因为服务端需要保证自己已经传输完数据,先ACK客户端,待传输完成后再FIN客户端

2.3 是否每次网络请求都需要经过三次握手和四次挥手?

最早是,但在HTTP/1.1中改用了持久连接,就是在一次连接建立之后,只要客户端或者服务端没有明确提出断开连接,那么这个tcp连接会一直保持连接状态

持久连接的一个最大的好处是:大大减少了连接的建立以及关闭时延。(现在我们我们常用的浏览器基本用的都是HTTP1.1,HTTP1.2还未全面普及)

HTTP1.1中有一个Transport段。会携带一个 Connection:Keep-Alive,表示希望将此条连接作为持久连接。

参考:

https://juejin.cn/post/7045059219216662564

https://blog.csdn.net/u012174809/article/details/123281714


文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论
  目录