当客户端尝试访问服务端时会产生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,表示希望将此条连接作为持久连接。