在浏览器中输入一个 URL 连接,会发生什么?
这是一道常见的面试题,如何回答的标准且覆盖全面是本文关注的重点。
304
则依旧使用本地缓存并更新缓存信息。迭代查询
:根域名服务器提供所知道的顶级域名服务器,顶级域名服务器提供知道的权限域名服务器递归查询
:客户端向本地DNS服务器查询ARP 地址解析协议:实现由 IP 地址到 MAC 地址的转换
每个主机都有一个 APR 高速缓存
,里面有本局域网上的个主机和路由器的IP地址到MAC地址的映射表
直到服务器的 MAC 地址后,开始进行 TCP 连接
SYN = 1, seq = x
, 进入 SYN_SENDSYN = 1, ACK = 1, seq = y, ack = x + 1
,并变为SYN_RCVD状态ACK = 1, ack = y + 1
, 服务端收到确认信息后即进入 ESTABLISHED 状态第三次握手可以传递数据,若不传递数据,则不消耗序号。
TCP连接建立之后,即可处理HTTP请求
请求报文包括:通用首部、请求首部、实体首部
服务器接收到 HTTP 请求,进行端口转发处理请求,操作数据库等操作后,返回对应结果
响应中包含 304 状态吗,则表示资源文件未变化,使用浏览器原有缓存并更新缓存有效信息
四次握手
FIN = 1, seq = x
,进入 FIN_WAIT_1 状态,客户端不再发送请求,但可以接受数据ACK = 1, ack = x + 1
, 并进入 CLOSE_WAIT 状态,客户端收到后进入 FIN_WAIT_2 状态FIN = 1, seq = y
, 并进入 LAST_ACK 状态,服务端不再发送数据ACK = 1, ack = y + 1
, 等待2个最大报文时间后进入 CLOSED 状态,客户端无法发送数据,服务端收到关闭响应后直接进入 CLOSED 状态,服务端无法接受数据todo
todo