【经典面试题系列】浏览器访问公网上某个站点的过程
以下拿访问百度举例子
详细过程(转自知乎):https://zhuanlan.zhihu.com/p/565427100
第一步:先通过DNS
通过
DNS
解析ip
,首先会去浏览器里找是否有百度域名解析过的ip
,没有的话就去本机的hosts
文件里,hosts
文件还没有的话就得去请求本地dns
服务器去要ip
,然后dns
服务器返回给客户端。
第二步:ARP
当
dns
域名解析到ip
就开始访问百度服务器,为了数据封装,就得需要目标的mac
地址,arp
在获取对方mac
先是看arp
缓存表,没有的话就通过arp
获取。
第三步:IP
当二层完成封装后,把数据发往网关路由器
第四步:NAT网络地址转换。
由于客户端访问的资源不在内网,就得通过公网访问到目的的内网服务器,在内网访问外网的时候就得将内网
ip
转换成公网ip
,这时候就得需要在网络出口的设备上有nat
功能。
第五步:TCP
当客户端拿到百度服务器的
ip
后,就会像百度服务器发http
请求,而http
协议请求是基于tcp
协议
最后一步:HTTP
浏览器会给百度服务器的一个
http
请求,请求头为get
,然后百度服务器就会给客户端浏览器http
响应