从输入网址到页面显示的过程以及3次握手4次挥手

168 阅读3分钟

从网址键入地址栏到运行的网页:

1)您在浏览器中键入 URL 例:github.com

2)浏览器解析 URL 中包含的信息。

3) 浏览器与 ISP 进行通信,对主机的 Web服务器的IP地址进行 DNS查找www.github.com DNS服务首先联系根服务器,查询 www.github.com 顶级域服务器的 IP地址。 该地址被发送回您的 DNS 服务。 DNS 服务与 .com 名称服务器进行另外的沟通,并请求 www.github.com 的地址。

4)一旦 ISP 收到目标服务器的 IP 地址,它会将其发送到您的 Web 浏览器

5)您的浏览器从 URL 中获取 IP地址 和给定的端口号(HTTP 协议默认为端口 80,HTTPS默认为端口 443),并打开 TCP 套接字连接。 此时,您的 Web浏览器 和 Web服务器 终于连接了。

6)您的网络浏览器向网页服务器发送 HTTP 请求,请求 www.github.com 的主页面

7)Web 服务器接收请求并查找该 HTML 页面。 如果页面存在,则 Web服务器 准备响应并将其发送回您的浏览器。 如果服务器找不到请求的页面,它将发送一个 HTTP 404 错误消息,代表 找不到页面。

8)您的 Web浏览器 将接收到 HTML 页面,然后通过它从上到下解析寻找列出的其他资源,如图像,CSS 文件,JavaScript 文件等。

9)对于列出的每个资源,浏览器重复上述整个过程,向服务器发送 HTTP 请求。

10)浏览器完成加载 HTML 页面中列出的所有其他资源后,页面将最终加载到浏览器窗口中,并且连接将被关闭

通过dns解析之后,拿到了ip,就可以通过ip向服务器发送http请求了,因为http是工作在第七层应用层,tcp是工作在第四层传输层,所以发生http请求之前,还会进行tcp的三次握手。
tcp的三次握手是:客户端首先向服务器发送一个带有SYN标识和一个seq的随机数,服务端收到后,需要给客户端回应一个ack,ack的值就是刚才的seq随机数的值+1,在回应包里,还包含一个SYN的标识和一个seq随机数。客户端收到服务端发过来的回应包之后,再给服务端发送一个ack,ack的值就是刚才服务端发过来的seq的值+1。上面三步完成之后,三次握手就完成了,下面就可以开始传数据了
这里就是开始发送http请求报文了

当浏览器加载一个完整的页面时,还需要与服务器断开连接,这个过程就是tcp的四次挥手
首先客户端会发送一个带有FIN标识和一个seq随机数,服务端收到之后,会回应一个ack,ack的值等于刚才的seq的值+1,发送之后,服务器会再发一个包,这个包里面也带有FIN标识和一个seq随机数,客户端收到之后,回应一个ack,ack的值等于刚才的seq值+1,以上完成之后,服务器和客户端的4次挥手就完成了!