0 本节主要内容
问题描述
解决思路
1 问题描述
通过一个应用场景来回顾计算机网络涉及到的协议(所有层)。如下图所示场景:
- 学生Bob将笔记本电脑用一根以太网电缆连接到学校的以太网交换机;
- 交换机又与学校的路由器相连;
- 学校的这台路由器与一个ISP连接,本例中ISP为comcast.net,该ISP为学校提供DNS服务;
- 现在Bob要访问www.google.com主页。
2 解决思路
2.1 连接到Internet
- 连接笔记本电脑需要获得自己的IP地址,第一跳路由器的地址,DNS服务器的地址,假设通过DHCP获得;
- DHCP请求封装UDP头,封装IP头,封装802.3以太网帧;
- DHCP请求是一个广播报文,所以请求报文的802.3以太网帧目的地址填广播地址(FFFFFFFF),该报文被路由器上运行的DHCP服务器接收;
- 以太网去头部、IP去头部、UDP去头部到DHCP;
- DHCP服务器制作DHCP ACK,其中包含客户端的IP地址、客户端的第一跳路由器的IP地址以及DNS服务器的名称和IP地址;
- 在DHCP服务器封装成帧,通过LAN转发帧(交换机学习);
- DHCP客户端接收DHCP ACK回复。
客户端现在有IP地址,知道DNS服务器的名称和地址,第一跳路由器的IP地址。
2.2 使用ARP协议
- 在发送HTTP请求之前,需要通过DNS知道www.google.com的IP地址;
- 创建DNS查询,用UDP封装,用IP封装,用Eth(以太网)封装。要向路由器发送帧,需要通过ARP协议学习到路由器接口的MAC地址;
- 路由器接收到客户端发起的ARP查询广播,通过给出路由器接口MAC地址的ARP响应报文进行回复;
- 客户端现在知道第一跳路由器的MAC地址,所以现在可以发送包含DNS查询的帧。
2.3 使用DNS协议
- 包含DNS查询的IP数据报通过LAN交换机从客户端转发到第一跳路由器;
- 从校园网转发到Comcast网络的IP数据报,路由(RIP、OSPF、IS-IS和/或BGP路由协议创建的表)到DNS服务器;
- DNS以www.google.com的IP地址回复客户端。
2.4 承载HTTP的TCP连接
- 要发送HTTP请求,客户端首先打开到web服务器的TCP套接字;
- TCP SYN段(TCP三向握手中的步骤1)域间路由到web服务器;
- web服务器使用TCP SYN/ACK进行响应(TCP三次握手中的步骤2);
- 客户端使用TCP ACK进行响应(TCP三次握手中的步骤3);
- TCP连接已建立!
2.5 HTTP请求/响应
- HTTP请求发送到TCP套接字;
- 包含HTTP请求的IP数据报路由到www.google.com;
- web服务器以HTTP回复(包含网页)进行响应;
- 包含HTTP回复的IP数据报路由回客户端。