-
浏览器请求途径大概步骤
- 浏览器点击请求后,先通过本地或在线 dns,找到对方 ip 地址,然后将数据与 http 协议封装为 HTTP 头,应用层
- 数据包通过 TCP 或 UDP 协议将浏览器监听的端口和目标服务器的端口封装 TCP 头,传输层
- 浏览器将包交给操作系统,操作相同将浏览器所在 IP 地址和目标服务器 IP 地址封装为 IP 头,网络层
- 操作系统通过本地默认网关的 IP 地址得知网关 MAC 地址,然后将本地机器的 MAC 地址和网关 MAC 地址封装为 MAC 头
- 网关往往是一个路由器,当这个数据包到达第一个网关后,拿出自己 IP 头,通过本地的 MAC 地址询问这个 IP 怎么走,然后路由器告诉下一个网关,一次类推
- 到达最后一个网关后,这个路由器知道这个 IP 地址,就会在这个路由器所覆盖的局域网中寻找,然后目标服务器返回 MAC 地址,通过这个地址就可以找到目标服务器
- 目标服务器校验这个数据包的 MAC 地址是当前局域网中网关的 MAC 地址,就会取下 MAC 头
- IP 对上后,就会取下 IP 头,交给传输层,即 TCP 层,这个时候,传输层就会向请求浏览器本地发送一个回复包,表明已接收。如果一段时间后,发送端一直没有收到目标端的回复包,发送端会重新发送请求,知道接受到回复包
- 请求包到达 TCP 层即传输层,通过 TCP 头中的端口号,找到目标服务进程,比如 Tomcat
- Tomcat 中将请求包中 HTTP 头中内容告诉相应服务,处理完后,通过另一个相同的请求通过相同的途径步骤发送给发送端
-
当网络包到达一个城关的时候,可以通过路由表得到下一个城关的IP 地址,直接通过 IP 地址找就可以了,为什么还要通过本地的 MAC 地址呢?
-
MAC 地址的唯一性
路由器的网关 IP 地址可能会改变,但 MAC 地址不会改变,如果途中其中一个网关的 IP 地址发送改变,就会出现找不到的情况
-
IP 地址会动态改变
-
本文由 Shuaiyin 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Sep 18,2019