文章目录
1 因特网协议栈
协议栈 | 常用协议 |
---|---|
应用层 | HTTP协议、DNS协议、DHCP协议 |
传输层 | TCP协议、UDP协议 |
网络层 | IP协议、NAT协议、ICMP协议、BGP协议、OSPF协议 |
数据链路层 | ARP协议、以太网协议 |
物理层 | 各种电气特性的规定等 |
2 Web页面的请求历程
本节通过一个电脑访问谷歌网页的例子(简化版),来了解这些协议是如何工作的。
图2.1 Web页面请求的历程
电脑刚接网线连接交换机时还没有IP地址。此时电脑的操作系统自动运行DHCP协议,从路由器A获取到IP地址、DNS服务器的IP地址、默认网关路由器的IP地址、子网掩码和IP地址的有效时间。假设电脑获取到的IP地址是个内网IP地址(通常情况也确实是这样的。如192.168.1.12这种)。如果路由器A中没有开启DHCP服务器,那就需要在电脑上手动配置IP地址、网关IP等信息。
打开浏览器输入“www.google.com”。此时电脑尝试向网关发送DNS查询报文,以获取“www.google.com”的IP地址。不过在封装以太网协议时,发现没有网关的MAC地址。因此暂时不发送DNS查询报文。
电脑通过ARP协议获取网关的MAC地址,并记录在自己的ARP表中。
有了网关的IP地址和MAC地址,电脑便可以发送DNS查询报文了。
路由器A收到电脑的DNS查询报文,并传递NAT服务。NAT服务将报文的源IP地址修改为公网地址,并修改端口号,然后记录映射关系(公网IP+端口号1 <= = = = => 内网IP+端口号2)。
路由器A根据目标IP地址,通过匹配自身的转发表将DNS查询报文从合适的接口发出去。之后收到DNS查询报文的路由器都以同样的方式转发DNS查询报文。最终DNS查询报文到达DNS服务器。
DNS服务器解析DNS查询报文,并生成了包含“www.google.com”IP地址的DNS回答报文。该报文通过Comcast网络反向转发到路由器A。
路由器A将该报文传递给NAT服务,NAT服务根据之前记录的映射关系(公网IP+端口号1 <= = = = => 内网IP+端口号2)将报文的源IP地址转为内网IP,并修改端口号。
路由器A根据转发表将报文转发给交换机,报文经过交换机最终到达电脑。电脑解析DNS回答报文得到了“www.google.com”的IP地址。
电脑的浏览器生成包含要获取的“www.google.com”的HTTP GET报文,经过学校、Comcast、Google的网络,到达“www.google.com”Web服务器。
“www.google.com”的Web服务器生成HTTP回答报文,该报文通过谷歌、 Comcast和学校网络转发, 到达电脑,最终电脑成功显示了Web页面。
康卡斯特(英文:Comcast Corporation,NASDAQ: CMCSA),是美国一家主要有线电视,宽带网络及IP电话服务供应商及内容供应商,总部位于宾夕凡尼亚州的费城,是美国最大的有线电视公司,亦是美国第二大互联网服务供应商。