输入一个网址后,发生了什么?
1)DNS解析:
DNS解析的过程就是寻找哪台机器上有你需要资源的过程,寻找的过程遵循就近原则。DNS根据域名查询IP地址的过程为:浏览器缓存 --> 操作系统缓存 --> 路由器缓存–>本地(ISP)域名服务器缓存 --> 根域名服务器。
2)进行TCP连接:
浏览器终于得到了IP以后,向服务器发送TCP连接,TCP连接经过三次握手。
(因为server端收到了client端的SYN请求报文之后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的,最后client端再发送ACK报文。所以是三次握手。)
3)浏览器发送HTTP请求
4)服务器处理请求
5)浏览器解析渲染页面
6)关闭TCP连接:
当server端收到FIN报文时,很可能并不会立即关闭Socket,所以只能先回复一个ACK报文,告诉client端,“你的FIN 报文我收到了”,只有等到我server端所有的的报文都发送完了,我才能发送FIN报文,因此不能一起发送,最后client端再发送ACK报文。所以是四次挥手。