1. 输入网址
2. 缓存解析
-
浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求;
-
操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存);
-
路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存;
-
ISP缓存:若上述均失败,继续向ISP搜索。
3. 域名解析,解析获取相应的IP地址
4. 浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。
-
发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。
-
接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。
-
最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束。
5. 握手成功后,浏览器向服务器发送http请求,请求数据包
6. 服务器处理收到的请求,将数据返回至浏览器
7. 浏览器收到HTTP响应并渲染页面
8. 断开链接(四次挥手)
-
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
-
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
-
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
-
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手
为什么客户端与服务器断开连接是四次挥手呢?主要是因为当客户端告诉服务器想断开连接的时候,服务器的数据不一定已处理完毕,所以服务器是先告诉客户端说已经收到了它想断开连接的请求,然后当服务器中数据处理完毕时,便通知客户端并请求断开连接,客户端收到后便断开连接并通知服务器,服务器收到后才断开连接。
posted @
2021-03-29 15:32
fengwenqi
阅读(
84)
评论()
编辑
收藏
举报