【经典面试题系列】浏览器访问公网上某个站点的过程

以下拿访问百度举例子
详细过程(转自知乎):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响应