计算机网络:知识回顾

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数据报路由回客户端。

相关推荐

  1. 计算机网络---知识

    2023-12-29 08:54:03       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 08:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 08:54:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 08:54:03       82 阅读
  4. Python语言-面向对象

    2023-12-29 08:54:03       91 阅读

热门阅读

  1. 自动类型转换你忘记了吗?

    2023-12-29 08:54:03       59 阅读
  2. 租用服务器到底能干什么呢

    2023-12-29 08:54:03       62 阅读
  3. Go语言中的包管理工具之Go Path详解

    2023-12-29 08:54:03       57 阅读
  4. 使用History和location(js的问题)

    2023-12-29 08:54:03       51 阅读
  5. uniapp实现小程序和内嵌webView的互通

    2023-12-29 08:54:03       57 阅读
  6. webpack搭建vue2项目

    2023-12-29 08:54:03       54 阅读
  7. c# 读取文件方式及对比

    2023-12-29 08:54:03       50 阅读
  8. uniapp中globaldata的使用

    2023-12-29 08:54:03       59 阅读
  9. 单例模式(C++)

    2023-12-29 08:54:03       50 阅读
  10. 单例模式的双重检查锁定是什么?

    2023-12-29 08:54:03       51 阅读