携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
1. 五层架构
- 输入域名后,在应用层,首先会通过DNS域名解析通过缓存或者本地代理服务器迭代查询到目标服务器或者CDN缓存服务器的IP,之后会为请求体装上HTTP请求头,之后经过socket套接字传给传输层。
- 在传输层,会给报文装上TCP或者UDP报文头,标识接发双方的端口号,如果是TCP还会包括流量控制,拥塞控制,连接控制的相关信息。
- 在网络层,会加上IP协议头,IP协议主要负路由选址的过程,这一层会标识出接收双方的IP地址。
- 在链路层,会由ARP协议完成IP地址到MAC地址的转化过程。
2. 涉及协议以及概念的详解
- DNS:负责域名解析,另外有负载均衡的作用
- CDN:某个服务在其他地方的缓存服务器
- TCP:有连接的传输层协议
- UDP:无连接的传输层协议
- IP :负责路由寻址的网络层协议
- ICMP:网络层的差错报文协议,ping命令和traceroute命令的底层协议
- ARP:链路层协议,IP地址到MAC物理地址
- free ARP:广播自己的MAC地址,更新其他主机的缓存表
- ARP欺诈:修改缓存表或者伪装回复
- RARP:链路层协议,MAC地址到IP地址
3. 输入网址到出现网页发生了什么
在第一部分,我们更集中于从TCP/IP网络的视角来分析信息在网络中经历了什么,在网络之上,还能进行一些补充分析:
- 输入网址,首先判断是否有浏览器或者本地缓存,缓存是否过期,如果没有过期,直接返回使用,过期的话,进行下一步请求;
- 请求时,会判断代理服务器是否存在缓存;
- 没有的话会判断是否有DNS代理服务器(类似于负载均衡),没有的话会继续会进行第一部分的通信过程;
- 进行第一部分的来回通信过程;
- 浏览器解析收得到HTTP请求并显示。