跳转至

计算机网络基础

约 7757 个字 3 行代码 9 张图片 预计阅读时间 26 分钟

alt text

Info

本章主要基于 TCP/IP 网络模型介绍计算机网络的大致组成架构

Wireshark

Wireshark 是目前主流的抓包工具之一,本节将结合 Wireshark 抓包来讲解计算机网络模型。在我们提供的虚拟机上已经配置好了 Wireshark 软件,只需在终端输入 wireshark 即可启动。

在启动界面选择对应网卡启动抓包。 alt text

访问 http://180.76.151.202/home/index.mooc,wireshark 便能抓取对应的 http 流量。在过滤器中输入 http.host == 180.76.151.202 可以找到对应网络包数据。

alt text

右键点击网络包,选择追踪其 TCP 流。

alt text

对应的 TCP 流网络数据包如图所示。我们将以此为例进行后续的讲解。

alt text

网络接口层

该层对应于 OSI 模型的物理层与数据链路层。物理层为光纤等传输设备,本部分主要介绍数据链路层的相关部分

Example

选择第一个包,其 ethernet 帧信息如图所示。(实际数据会根据本机网络信息不同而不同,此处仅供参考)

alt text

  • Ethernet(以太网)在 TCP/IP 协议层中属于网络接口层,在 OSI 参考模型中对应数据链路层。Ethernet II 标准是最常用的以太网帧格式,用于承载 IP 等上层协议。
  • Destination 和 Source 分别指向目标设备与源设备的名字以及 MAC 地址。如图中 VMWare_e8:32:0eVMWare_f0:dd:5b 都是 VMWare 虚拟网络设备,而 00:0c:29:e8:32:0e 是此虚拟机的 MAC 地址,00:50:56:f0:dd:59 是 VMWare 虚拟网关的 MAC 地址,两者的 MAC 地址都是唯一标识的。
  • "Type:IPv4" 表明其上层(网络层)使用的协议为 IPv4。

MAC 地址(物理地址)

MAC 地址(Media Access Control Address,媒体访问控制地址)是网络设备的一个唯一标识符,用于数据链路层。在局域网(LAN)中,MAC 地址用于识别网络设备,以便数据帧能够准确地在网络上进行传输。以下是关于 MAC 地址的详细介绍:

基本概念

  • 唯一性:MAC 地址是全球唯一的,每个网络接口卡(NIC)或网络适配器出厂时都被赋予一个独特的 MAC 地址。
  • 长度与格式:MAC 地址通常是 48 位(6 字节)长,通常用十二个十六进制字符表示,例如:08:00:27:13:69:77 或 08-00-27-13-69-77。
  • 分配:前 24 位由 IEEE 分配给网络设备制造商,称为组织唯一标识符(OUI),后 24 位由制造商自行分配。

结构与组成

  • OUI(组织唯一标识符):用于标识设备制造商,前 24 位(3 字节)。
  • 设备标识符:用于标识特定设备,后 24 位(3 字节)。
  • 局部管理位:第 7 位可用于标记地址为全局唯一(0)或本地管理(1)。

功能与用途

  • 设备识别:在局域网中,MAC 地址用于识别和定位网络节点,便于交换机和其他设备在数据链路层管理数据传输。
  • 数据帧传输:网络设备使用 MAC 地址进行帧传输,通过 ARP(地址解析协议)将 IP 地址解析为 MAC 地址,从而在以太网上传输数据。
  • 网络访问控制:通过 MAC 地址过滤,网络管理员可以设置哪些设备可以连接到网络。

交换机

交换机(Switch)是网络通信中一种重要的设备,负责在网络设备之间转发数据包。它在局域网(LAN)中常被用于连接计算机、服务器、打印机和其他网络设备。

其基本功能有:

  1. 数据包交换
    • 交换机通过接收、处理并转发数据包来连接网络设备。
    • 它根据目标地址将数据包转发到正确的输出端口,从而提高网络效率。
  2. MAC 地址学习
    • 交换机通过学习连接设备的 MAC 地址,维护一张 MAC 地址表。
    • 根据这张表,交换机能够准确地将数据包发送到目标设备,避免不必要的流量。
  3. 数据帧转发
    • 使用全双工通信模式,交换机可以同时发送和接收数据帧,减少碰撞和数据传输延时。

网速

在很多地方会使用百兆网/千兆网来描述网络的速度。这里的网速指的就是网络接口层所能达到的最高数据传输速率。同时这里的百兆和千兆的使用的单位是 Mbps 而不是操作系统中更常见的 MB/s

在通信行业中常用 KbMbGb 来作为数据的单位,但是操作系统中常用 KBMBGB 来作为数据的单位。这两套单位之有以下不同点:

  1. b 代表 bit(比特),而 B 代表 byte(字节),1 字节为 8 比特。
  2. \(1Gb=10^3Mb=10^6Kb=10^9b\)\(1GB=2^{10}MB=2^{20}KB=2^{30}B\)

网络层

Example

同样使用第一个网络包,得到它的 IP 帧具体信息。

alt text

  • Internet Protocol Version 4 即 IPv4 网络层协议。
  • Src 和 Dst 标识源 IP 地址和目标 IP 地址,其中源 IP 地址 192.168.109.138 是局域网地址即私有 IP,目标 IP 地址 180.76.151.202 是公网 IP。
  • Time to Live 即 TTL,用于防止数据包在网络中无限循环。每经过一个路由器 TTL 减 1,减到 0 时路由器丢弃包并返回 ICMP 超时。
  • "Protocol: TCP" 表明其上层(传输层)使用的协议为 TCP。

IP 地址

公网 IP(Public IP Address)是用于在互联网(Internet)中识别和通信的唯一 IP 地址。每个连接到互联网的设备都需要一个公网 IP 地址,以便能够与全球其他设备进行通信。公网 IP 地址由互联网服务提供商(ISP)分配,并且是全球唯一的,不能重复。

公网 IP 与私有 IP

Summary

  • 公网 IP
    • 用于互联网通信,全球唯一。
    • 由 ISP 分配,通常需要支付额外费用。
    • 直接暴露在互联网上,容易成为攻击目标,需要特别注意安全防护。
  • 私有 IP
    • 用于局域网(LAN)内的通信,不在互联网中使用。
    • 可以在不同的局域网中重复使用。
    • 由路由器或网关设备通过网络地址转换(NAT Network Address Translation)映射到公网 IP 地址,实现互联网访问。

私有 IP 地址

根据互联网编号分配机构(IANA)的规定,私有 IP 地址分为三个范围,分别适用于不同规模的局域网:

  • A 类私有地址:10.0.0.0 - 10.255.255.255
  • B 类私有地址:172.16.0.0 - 172.31.255.255
  • C 类私有地址:192.168.0.0 - 192.168.255.255

IPv4 与 IPv6

IPv4

IPv4 地址是一个 32 位的二进制数。 通常采用点分十进制表示,将 32 位划分为 4 组,每组写成一个十进制数(因此十进制数取值为 0-255),用点 . 分隔。 示例: 192.168.1.1

Info

由于 IPv4 使用 32bit 作为记录,其最多只有约 40 亿种组合形式,因此随着互联网的发展,IPv4 出现了地址不足的问题,因此使用 128bit 的 IPv6 地址应运而生

IPv6

IPv4 地址是一个 128 位的二进制数。 采用冒号十六进制表示,由 8 组 4 个十六进制数组成,用冒号 : 分隔。
示例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

支持地址压缩,可以省略每组数字前面的 0。例如 0db8 可以写成 db8。 可以用双冒号 :: 替代地址中连续出现的全是 0 的组,但每个地址中只能使用一次。

压缩后示例: 2001:db8:85a3::8a2e:370:7334

本地回环地址

本地回环地址一般用于计算机本地的网络通信与测试。在 IPv4 中规定 127.0.0.0/8 的地址均用于本地回环测试,一般我们使用 127.0.0.1 作为本地回环地址。 IPv6 也提供了本地回环地址 0:0:0:0:0:0:0:1,一般简写为::1

localhost

通常我们还使用 localhost 来代表本地回环地址。localhost 本质上是一个域名,需要通过 DNS 协议转换为 IP 地址。操作系统内通常有主机文件定义 localhost 的解析,将其解析为 127.0.0.1(IPv4)和::1(IPv6)

子网

子网是将一个大型 IP 网络(如局域网或广域网)通过技术手段分割成的多个小型逻辑网络。它并非物理上的独立网络,而是通过 IP 地址和子网掩码的组合,在逻辑上划分出的子区域。一个子网可由该子网内的任一 IP 地址和子网掩码确定

子网掩码是一个 32 位的二进制数(与 IPv4 地址长度一致),其必须由一组连续的 1 和一组连续的 0 组成,和用于区分 IP 地址中的 网络位主机位,从而确定该 IP 地址属于哪个子网。子网内的任一 IP 与子网掩码按位与得到的结果必须一致,我们称这个结果为子网的网络地址。子网掩码通常使用点分十进制表示。由于子网掩码实际上可以使用前缀 1 的长度唯一确定,因此也可以使用子网掩码的长度来表示子网掩码。

传统的子网划分方式使用 A/B/C 类地址划分,仅有 3 种子网大小可供选择。为简化子网划分,CIDR(Classless Inter-Domain Routing)用前缀长度(如 /24)代替传统的 A/B/C 类地址划分,更灵活地分配网络位和主机位。通常我们使用CIDR 表示法表示一个子网,写作<子网网络地址>/<子网掩码的长度>

子网的特殊 IP 地址

在子网中,网络地址广播地址是两个特殊的 IP 地址,它们不分配给具体设备使用,而是用于标识子网本身和子网内的广播通信。

  • 网络地址是一个子网的 “标识符号”,用于唯一标识该子网本身,它是子网内所有 IP 地址的 “公共前缀”。
  • 广播地址是子网内用于 “广播通信” 的特殊地址,向该地址发送的数据会被子网内所有设备接收。

子网示例

  • CIDR 表示法:192.168.1.0/24
  • 网络地址:192.168.1.0
  • 广播地址:192.168.1.255
  • 子网掩码:255.255.255.0
  • 子网 IP 范围:192.168.1.0 - 192.168.1.255
  • 子网可用 IP 范围:192.168.1.1 - 192.168.1.254

子网可用 IP 的个数

尝试计算一个子网掩码长度为\(n\)的子网可用 IP 数量。

网关 (Gateway)

网关是计算机网络中的一个重要组件,其主要作用是连接不同网络,并在这些网络之间进行数据的流动和转换。由于不同网络可能使用不同的协议或数据格式,网关在网络间充当协议转换器、数据格式转换器和路由器的角色。以下是对网关的详细介绍:

网关的主要功能:

  1. 协议转换: 网关负责在使用不同通信协议的网络之间进行协议翻译。例如,在一个使用 TCP/IP 协议的网络和一个使用 X.25 协议的网络之间,网关可以转换数据格式和通信协议,以确保两个网络可以互相通信。
  2. 数据格式转换: 不同网络可能使用不同的数据格式,网关能够对数据进行格式转换,使数据在传输到目的网络时符合该网络的格式要求。
  3. 路由和数据转发: 网关可以根据目的地址选择合适的路径,将数据包从一个网络传递到另一个网络。它可以作为路由器的一种形式,管理数据包的流动。
  4. 网络连接和隔离: 网关可以提供网络连接和隔离,确保内部网络与外部网络(如互联网)之间的安全通信。它可以应用于企业网络中,实现不同子网或部门之间的安全隔离与连接。

一个子网的设备如果需要访问子网外的 IP 需要将数据包发送给网关,由网关负责转发(通常这个网关设备就是我们所说的路由器)。在手动配置子网信息时需要填写一个网关,其即为用于转发数据包到外部网络的设备的 IP 地址。

查看当前设备的网关信息

在 Linux 中可使用下述命令查看当前设备的路由信息:

route -n 

可以看到一项默认路由(网络地址为 0.0.0.0,子网掩码为 0.0.0.0,即匹配任意 IP 地址),该项路由的网关的内容即为网关的 IP 地址。 也可以使用

arp -n

查看此 IP 地址对应的 MAC 地址(即为网关的 MAC 地址)。

NAT

而如果想用私有地址与 Internet 连接来访问公网,那该怎么做?这就需要将私有 IP 地址转换成公网 IP 地址,与外部连接。通常我们使用 NAT(网络地址转换 Network Address Translation) 技术实现。

NAT 技术最核心的功能是实现地址转换:它可以将一个子网内所有设备的地址,统一转换为运行 NAT 软件的网关(如路由器)自身的地址,再通过这个网关地址与外部网络进行通信。这里的子网地址和网关地址并不局限于特定类型,既可以是私有地址,也可以是公有地址,关键是通过网关的地址作为中间桥梁,实现子网与外部网络的连接。​

基于这种地址转换能力,我们可以让一个公有地址为多个私有地址提供通信支持。当子网内的多个私有地址设备需要与外部公网通信时,NAT 会将这些私有地址对应的通信请求,全部转换为网关的公有地址发出。外部网络的响应也会先发送到这个公有地址,再由网关通过 NAT 转换,准确转发给对应的私有地址设备。同时 NAT 可以进行嵌套,从而可以在一个公网 IP 下进行嵌套自由的组建子网。这样一来,即便只有一个可用的公有地址,也能满足多个子网内多个私有地址设备访问公网的需求,既提高了公有地址的利用率,也实现了子网与公网的有效通信。

所有子网的网关都需要运行 NAT 吗?

传输层

Example

观察此 TCP 流,在最开始由客户端发送带有 SYN 标志的数据包到服务器,随后由服务器发送有 SYN-ACK 标志的数据包,然后客户端发送带有 ACK 标志的数据包。这就是 TCP 的三次握手,在握手成功后建立 TCP 连接,双方开始传输数据。

点击第一个包,得到其 TCP 帧信息。

alt text

  • Transmission Control Protocol 即 TCP 传输层协议。
  • Src Port 即客户端端口,Dst Port 即服务器端口。49256 是本地客户端用来通信的随机端口;80 是 HTTP 协议默认端口。

端口

在计算机网络中,端口是一个逻辑概念,用于标识通信会话的特定端点。每个端口号与 IP 地址结合起来,用于区分不同的网络服务和应用程序。

  1. 端口号
    • 端口号是 16 位的整数,取值范围从 0 到 65535。
    • 每个端口号对应一种特定的网络服务或应用程序。
  2. 作用
    • 端口号用于在同一个 IP 地址下区分不同的网络服务。例如,HTTP 协议通常使用端口 80,而 HTTPS 使用端口 443。
    • 端口使得一台计算机可以同时运行多个网络服务。
  3. 端口的分类
    • 知名端口(Well-known Ports):0 到 1023,分配给常见的协议和服务,如 FTP(21)、SSH(22)、HTTP(80)、HTTPS(443)。
    • 注册端口(Registered Ports):1024 到 49151,分配给用户注册的服务和应用程序。
    • 动态/私有端口(Dynamic/Private Ports):49152 到 65535,通常为临时端口,用于客户端和短期通信。

操作系统的实际实现

上述端口的分类是由 IANA 规定的,但是不同的操作系统通常有自己的实现。例如在 Linux 系统中可以使用下述命令查看动态端口的范围:

cat /proc/sys/net/ipv4/ip_local_port_range

你也可以自己修改动态端口的范围。

端口的使用

  • 服务器端端口:服务器通常监听一个特定端口,以便接收来自客户端的连接。例如,Web 服务器监听 80 端口以接收 HTTP 请求。
  • 客户端端口:客户端通常在动态/私有端口范围内随机选择一个端口,用于发送请求和接收响应。

端口在数据传输中的角色

  • 数据通过 TCP 或 UDP 协议从一个设备传输到另一个设备时,源端口和目的端口在数据包的头部被标记。

端口管理

  • 防火墙:通过防火墙规则可以管理端口的访问权限,确保只有授权的流量可以通过。
  • 端口扫描:用于检测开放的端口,以识别可能的安全漏洞。

TCP

TCP(传输控制协议,Transmission Control Protocol)是互联网协议套件中最关键的传输层协议之一。它与 UDP(用户数据报协议)相对,以其提供的可靠性、流量控制以及顺序保障而著称。

TCP 的基本特性

  1. 面向连接: TCP 是一种面向连接的协议,这意味着在发送数据之前,必须先在通信双方之间建立连接。这通过一个称为“三次握手”(Three-Way Handshake)的过程完成。
  2. 可靠性: TCP 提供了可靠的数据传输,确保数据在网络中按顺序到达目的地。如果数据包丢失或出现错误,TCP 会自动重新传输这些数据。TCP 使用序列号和确认应答(ACK)机制来跟踪和确认数据传输的状态。
  3. 顺序保证: TCP 确保数据包以正确的顺序到达接收方。即使数据包是随机顺序到达,TCP 也会在接收端重新排序。
  4. 流量控制: TCP 使用流量控制机制,允许接收方告诉发送方在任何给定时间内可以接收多少数据。这是通过窗口机制实现的,防止网络拥塞和接收方溢出。
  5. 拥塞控制: TCP 内置多种拥塞控制机制,以避免在网络拥塞时继续发送数据。常见的拥塞控制算法包括快速重传(Fast Retransmit)、慢启动(Slow Start)、拥塞避免(Congestion Avoidance)和快恢复(Fast Recovery)。

TCP 的工作原理——三次握手(Connection Establishment)

在建立连接之前,TCP 会进行三次握手,以确保双方都准备好进行数据传输。具体过程如下:

  1. SYN:客户端发送一个带 SYN 标志的数据包到服务器,请求建立连接。此数据包中包含一个初始序列号(ISN)。
  2. SYN-ACK:服务器接收到 SYN 数据包后,回复一个 SYN-ACK 数据包,确认客户端的 SYN 请求,并发送自己的 SYN 请求给客户端。
  3. ACK:客户端收到 SYN-ACK 后,发送一个 ACK 数据包给服务器,确认收到 SYN-ACK。从此,TCP 连接成功建立,双方可以开始数据传输。

数据传输

一旦连接建立,数据通过 TCP 连接进行传输。每个 TCP 段(Segement)都包含一个序列号,发送方会根据该序列号跟踪每个数据字节。接收方会向发送方确认它接收到的字节(ACK),同时会发送下一个期望接收的字节的序列号。在这个过程中,流量控制和拥塞控制机制会动态调整数据的发送速率。

TCP 的优缺点

优点:

  • 可靠性:通过序列号、确认应答和重传机制,确保数据完整性。
  • 流量控制:动态适应网络条件,避免数据丢失和网络拥塞。
  • 顺序性:确保数据按顺序到达。
  • 广泛应用:是许多关键应用协议的基础(如 HTTP、FTP、SMTP)。

缺点:

  • 开销较大:因为额外的控制信息和机制,TCP 的头部较大,且通信延迟增加。
  • 速度较慢:由于需要建立连接、确认传输和流量控制,TCP 的数据传输速度通常慢于 UDP。

TCP 的应用场景

  • 网页浏览:HTTP/HTTPS 使用 TCP 确保网页资源的可靠性和正确顺序。
  • 文件传输:FTP 协议使用 TCP 协议可靠地传输文件。
  • 电子邮件:SMTP、POP3 和 IMAP 协议利用 TCP 进行电子邮件的发送和接收。
  • 远程登录:SSH 和 Telnet 协议使用 TCP 提供安全远程访问。

UDP

UDP(用户数据报协议,User Datagram Protocol)是一个简单、无连接的传输层协议,它是 TCP/IP 协议族的一部分。UDP 用于需要快速传输且对丢包不太敏感的应用场景。以下是对 UDP 的详细介绍:

UDP 的特点

  1. 无连接
    • UDP 是无连接协议,通信双方在发送数据之前不需要建立连接。这减少了通信开销和延迟,使得数据可以更快地传输。
  2. 不可靠传输
    • UDP 不保证数据包的可靠性。数据包可能会丢失、重复或乱序到达。应用程序需要自行处理这些问题。
  3. 简单的报文结构
    • UDP 的报文结构简单,只有 8 字节的头部,包括源端口、目的端口、长度和校验和等字段。这种简单性使得 UDP 数据包的处理速度更快。
  4. 无拥塞控制
    • UDP 没有内置的拥塞控制机制,适用于对延迟敏感但不需要可靠传输的应用,如实时视频流和在线游戏。
  5. 面向报文
    • UDP 是面向报文的协议,每个 UDP 数据包独立处理,不合并或拆分数据包。

UDP 的应用场景

  1. 实时应用
    • 流媒体传输:如音乐和视频流媒体(如 YouTube、Netflix),需要低延迟而不是完整的可靠性。
    • 在线游戏:需要快速响应而不总是需要保证所有数据都被完整接收。
  2. 简单查询和响应
    • DNS 查询:DNS 使用 UDP 进行快速查询和响应。
    • DHCP:用于网络设备的地址分配。
  3. 物联网(IoT)
    • 轻量级应用场景中,物联网设备使用 UDP 来减少通信的开销和复杂性。

UDP 与 TCP 的比较

  • 可靠性
    • TCP 提供可靠的传输,确保数据包按序到达且无丢失,而 UDP 不保证可靠性。
  • 连接性
    • TCP 是面向连接的协议,需要建立连接,而 UDP 是无连接的。
  • 流量控制和拥塞控制
    • TCP 有流量控制和拥塞控制机制,UDP 则没有。
  • 效率
    • UDP 头部开销小,适用于需要高效传输的场景。

应用层

Example

选择第四个包,获得的具体 HTTP 帧信息如图所示。

alt text

  • Hypertext Transfer Protocol 即 HTTP 协议,位于应用层。该网络包数据是客户端向服务器发起的 HTTP 请求报文。
  • 请求方法是 GET,请求的资源地址是 /home/index.mooc,HTTP/1.1 是协议版本。
  • 后续内容是 HTTP 请求头字段的内容,请求头通过键值对传递客户端信息、请求偏好等,如 Host 指定服务器的域名或 IP,User-Agent 标识客户端类型(浏览器、系统版本、内核等),Accept 向服务器通知客户端能接受的响应内容类型。

HTTP

HTTP(Hyper Text Transfer Protocol 超文本传输协议)是用于在 Web 浏览器和 Web 服务器之间传输数据的协议。它是互联网中最常见的应用层协议之一,支持万维网的基础通信。以下是对 HTTP 的详细介绍:

HTTP 的基本特点

  1. 无状态协议: HTTP 本质上是无状态的,这意味着每个请求都是独立的,与之前的请求没有直接关系。服务器不会自动保留以前的请求信息。
  2. 请求-响应模式: HTTP 基于请求-响应模型,客户端发起请求,服务器返回响应。这包括请求行、请求头、请求体、响应行、响应头和响应体。
  3. 灵活性和可扩展性: HTTP 可以通过头部字段扩展新的功能,而不影响协议的基本框架。
  4. 无连接: HTTP 最初的设计是无连接的,每次连接只处理一个请求/响应对,然后关闭连接。然而,为了提高效率,现代 HTTP(如 HTTP/1.1)支持持久连接。

HTTP 的方法

  • GET:请求从服务器获取资源。通常用于获取页面内容。
  • POST:向服务器提交数据,比如表单数据。常用于数据提交和处理。
  • PUT:上传文件到指定位置。
  • DELETE:删除指定资源。
  • HEAD:与 GET 类似,但只请求响应头。
  • OPTIONS:返回服务器支持的 HTTP 请求方法。
  • PATCH:对资源进行部分修改。

HTTP 的使用场景

HTTP 广泛用于 Web 浏览,包括访问网站、下载文件、提交表单等。随着互联网的发展,HTTP 不仅用于浏览网页,还被用于 API 通信、物联网等各种网络应用。

HTTP 服务基于 TCP 协议,其默认端口为 80

DNS

DNS(域名系统 Domain Name System)可以理解为互联网的“电话簿”。它的主要作用是将人类易于记忆的域名(比如 xflops.sjtu.edu.cn)转换为计算机使用的 IP 地址(比如 202.120.35.241)。这个过程就像你打电话时需要拨打的电话号码一样。通常我们需要向网络中的一台主机询问指定域名对应的 IP 地址,这台主机则被称为DNS 服务器。如果 DNS 服务器不工作或给出错误的 IP 应答将导致我们无法正常访问对应域名的网站。

DNS 服务基于 UDP 协议,其默认端口为 53

DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种网络协议,用于自动分配 IP 地址和其他网络配置信息(如网关、子网掩码、DNS 服务器等)给网络设备,使其能够快速加入网络并正常通信。 DHCP 的主要功能

  1. 动态分配 IP 地址:自动为设备分配可用的 IP 地址,避免手动配置的繁琐。
  2. 提供网络配置信息
    • 子网掩码(Subnet Mask)
    • 默认网关(Default Gateway)
    • DNS 服务器地址
    • 时间服务器(NTP Server)等
  3. IP 地址管理
    • 防止 IP 地址冲突。
    • 提供 IP 地址租期管理(Lease Time),当设备不再需要时可以回收并重新分配

现代系统一般默认使用 DHCP 协议获取网络信息,在设备加入一个新的网络时,将通过以下流程自动完成 IP 地址等网络信息的配置:

  1. 客户端(新接入设备)发送 DHCP Discover 信息。
  2. DHCP 服务器回复 DHCP Offer 信息,告知客户端应该使用的网络信息。
  3. 客户端收到回复并发送 DHCP Request 信息请求使用此 IP 地址。
  4. DHCP 服务器回复 DHCP Ack 确认此 IP 地址的分配。

如果 DHCP 获取网络信息失败(一般是客户端未收到任何 DHCP 服务器回复),此时系统将设置自己的 IP 地址为链路本地地址 169.254.0.0/16 以保证仍能在当前子网通信。 路由器默认启动了 DHCP 服务器,在新设备接入路由器

DHCP 服务基于 UDP 协议,其服务器默认端口为 67,客户端默认端口为 68

练习题

网速的计算

  1. 作为华东教育网核心节点,上海交通大学是国内最早建立万兆校园网的高校之一。请计算如果设备使用万兆(10000Mbps)网络下载文件,在操作系统上显示的下载速度约为多少 MB/s
  2. InfiniBand 网络是一种带宽非常高的网络,常用于超算集群的互联。如果在集群的某台机器上安装了一张 100G 的 IB 网卡,请计算理论传输带宽最高可以达到多少GB/s

查看你的网络信息

运行下述命令查看你的计算机的网络信息:

ifconfig # linux/macos
ipconfig # windows

运行下述命令查看你的计算机的端口开放信息:

netstat -tulnp # linux/macos
netstat -ano # windows
  1. 你的计算机有几个网络接口,它们的 IP 地址,所在子网和 MAC 地址分别是什么?
  2. 你的计算机有哪些端口开放了服务?
  3. 访问上海交通大学网络信息中心网站首页,查看页面底的 IP 地址信息,是否和你查询到的 IP 地址一致,如果不一致,请解释为什么不一致?

子网与网关

尝试使用 wireshark 抓包访问 https://xflops.sjtu.edu.cn(超算队官网)的数据包,查看发送数据包的目标 MAC 地址和目标 IP 地址,对比之前实验抓包的 MAC 地址和 IP 地址。并回答:

  • 这两个数据包的目标 MAC 地址是否相同?为什么?
  • 查看当前设备的网关的 MAC 地址,该 MAC 地址是否和上述的 MAC 地址相同,为什么?
  • 这两个数据包的目标 IP 地址是否相同?为什么?

DNS 解析

在 wireshark 抓包访问 https://xflops.sjtu.edu.cn(超算队官网)的数据包的记录中搜索 DNS 协议的数据包。确定当前主机使用的 DNS 服务的 IP 地址,并比较 DNS 服务器的回复的 IP 地址和访问网站的数据包的目标 IP 地址是否一致。

HTTPS 协议

HTTP 协议以明文传输数据包,这将导致的你访问信息被中间人截获/篡改。HTTPS 协议通过添加了加密来保护信息安全。 在 wireshark 抓包访问 https://xflops.sjtu.edu.cn(超算队官网)的数据包的记录中查看通信记录,观察两者如何建立加密连接。并观察建立连接后应用层传输的数据内容是否还可读(可以与 HTTP 抓包实验的应用层内容进行对比)。

(选做)使用搜索引擎与 AI,了解 HTTPS 的工作原理与证书的作用。并查看超算队官网所使用的证书及其颁发者。

InfiniBand 网络

在高性能计算中,高带宽低延迟的通信至关重要。尝试搜索资料了解 InfiniBand 网络,并回答该网络的数据链路层和网络层是如何工作的。