我的程序员修炼日记

浏览器输入一个网址后到底发生了什么?

2019-10-29  本文已影响0人  一岁一枯荣啊

1.域名解析:

浏览器会根据输入的域名进行解析服务器ip

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后自动关闭。

上一篇下一篇

猜你喜欢

热点阅读