1.域名解析:
浏览器会根据输入的域名进行解析服务器ip
- 先找浏览器的缓存dns缓存
- 计算机的dns缓存
- 查找路由器的dns缓存
- 查找互联网运营商提供的dns解析
2.浏览器与服务器通过三次握手建立TCP连接
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
一个tcp包中有这样的几个标示位非常关键。【SYN[同步]、seq[序列号]、ack[确认序列号]、ACK[确认回应]】
第一次握手: 客户端给服务器端发送tcp包,包的SYN,初始序列号seq=x。
第二次握手: 服务器回应tcp包,包的SYN=1,ACK=1,ack为x+1 , seq设置为y
第三次握手: 客户端再次回应服务器端,SYN标志位为0,ACK标志位为1。确认序列号ack为y+1
为什么要三次握手?而不是2次握手?
两次握手只能保证服务器端能收到客户端 的请求,并不能保证客户端也能收到服务端的请求。所以三次握手能够保证双方安全有效的通讯防止SYN的洪水攻击
3.浏览器向服务器发送请求
4.服务器出来请求进行相应
5.浏览器根据服务器响应的数据进行渲染
6.四次挥手断开http连接
第一次挥手:客户端给服务器发送一个FIN=1,seq=x的tcp包
第二次挥手:服务器回复应答客户端的请求 ACK = 1,seq = y, ack= x+1
第三次握手:服务器向客户端发送 FIN=1,ACK = 1,seq = w, ack= x+1
第四次握手:客户端给服务器发送 ACK = 1,seq = w+1, ack= x+1
双方关闭连接要经过双方都同意。所以,首先是客服端给服务器发送FIN,要求关闭连接,服务器收到后会发送一个ACK进行确认。服务器然后再发送一个FIN,客户端发送ACK确认,并进入TIME_WAIT状态。等待2MSL后自动关闭。
网友评论