课程笔记:网络架构提速 | 青训营

104 阅读7分钟

网络接入

同网段

交换机/逻辑交换机:

Pasted image 20230814185650.png

一般为三层集合了路由信息,有一个MAC地址表,用于记录MAC地址与端口的映射关系,进行快速转发。

SDN(Software Defined Networking)

Pasted image 20230814190300.png

Software Defined Networking (SDN) 是一种新的网络架构,其主要思想是将网络设备的控制平面和转发平面分离开来。使用虚拟网段可能不在同一个物理逻辑交换机

跨网段 - 路由

Pasted image 20230814222057.png

  1. 路由不一定对称Pasted image 20230815095450.png
  2. 路由不一定工作在IP层,也可能在传输层
  3. 路由改变mac地址而不是ip地址,找到发包口
void send_one_pkt(){
rt = find_rt(dst) // 包含主机出口网口&Nexthop
...
l2 -> dst_mac = rt->next_hop->mac // 怎么获取路由的mac?
p = append(p, 12)
...
send(p, rt->port) //发包需要指定网卡
}

ARP协议

ARP(Address Resolution Protocol) 协议是根据IP地址获取物理MAC地址(获取下一跳的mac)的一个网络协议。其主要功能如下:

  1. 地址解析

ARP协议用于根据IP地址来查询对应的MAC地址,称为地址解析。

  1. ARP请求与回复

获取地址映射主要通过两种ARP消息:ARP请求与ARP回复。发送ARP请求查询MAC地址,收到ARP回复获取映射。

  1. ARP缓存

ARP表项会被ARP缓存起来,下次请求时可以直接查表,避免冗余ARP通信。

  1. 标准化协议

ARP是网际互联协议中的一个标准化网络协议,详细定义了ARP报文格式、地址解析机制等。

  1. 局域网协议

ARP只工作在以太网局域网中,用于解析同一个局域网内设备的地址映射关系。

  1. 无连接协议

ARP本身 does not 维护任何连接状态,属于无连接的网络层协议。

IP协议

为什么不能用mac替代ip: 兼容问题(不同地址协议统一)

NAT

NAT设备通常部署在本地网络和外部网络的边界。内部网络的内部主机在访问外部网络时,其源IP地址会被NAT转换:

  1. 内部用户源地址更改

内部网络的主机都配置了私有IP地址(如192.168.x.x),这些地址在外部网络中不可路由。当内部主机访问外网时,NAT会将其源IP更改为全局可路由的地址。

  1. 使用同一个外网IP地址

NAT会使用自己的外网IP地址(如120.xx.xx.xx)来作为所有内部主机的新源IP地址。不同内部用户共享使用这个外网IP地址。

  1. 唯一的外网IP地址

NAT设备上的这个外网IP地址在全球范围内都是唯一的,可以确保源地址的全局唯一性。

  1. 在外网连接时源地址唯一

尽管内部网络中不同用户共享一个外网源IP地址,但当它们访问外部网络时,在外部网络的视角中,都使用了唯一的NAT外网IP地址。 Pasted image 20230815122842.png

网络传输

数据包

数据包(packet)是网络传输中的基本数据单元。它包含传输的数据和一些控制信息,如源地址、目的地址等。具体来说:

  • 数据包包含要传送的数据。这些数据按照一定的格式组织和封装,称为数据包的载荷。
  • 数据包包含源地址和目的地址,用于指示数据的来源和去向。这对于路由数据包至正确的目的地很重要。
  • 数据包包含序号或标识信息,用于指示数据顺序或数据包的身份。这在接收端重组数据时必需。
  • 数据包包含错误检查信息,如校验和或CRC码,用于检测数据传输错误。
  • 可选的,数据包可包含一些控制信息,如优先级、服务类型等,用于区分不同优先级或服务的流量。

数据包发送

Pasted image 20230816172328.png 最下面的箭头包含复杂的网络传输

DNS请求

递归请求

Pasted image 20230816203449.png 递归查询(Recursive Query)是域名系统(DNS)解析中的一种查询方式,它指本地DNS服务器在收到客户端的查询请求时,不直接返回结果,而是向其他服务器发出递归查询以获取最终结果。

递归查询的基本过程是:

  1. 客户端向本地DNS服务器(递归器)发送查询请求,要求进行递归查询。
  2. 递归器收到请求后,如果不能由本地缓存解析,就初始化一个递归查询过程。
  3. 递归器根据域名逐级向根域名服务器查询,被告知权威DNS服务器地址。
  4. 递归器向权威DNS服务器发起递归查询,直到获取结果。
  5. 权威服务器返回查询结果给递归器。
  6. 递归器缓存结果,并将最终结果返回给客户端。

根域名服务器(Root Name Server)是域名系统(DNS)中的一种关键服务器,它负责管理根区域,并处理对顶级域(TLD)的查询请求。

根域名服务器的主要功能有:

  • 负责解析顶级域,如.com,.net,.org等。根服务器直接负责这些顶级域的权威信息。
  • 保存权威 DNS 服务器的信息,为递归服务器转发查询提供依据。
  • 处理客户端对根区文件的查询请求,返回负责对应TLD的权威服务器地址。
  • 维护一个权威的根区文件,记录全部TLD信息。
  • 与全球其他DNS服务器同步根区域文件的变化。

根域名服务器属于DNS层级结构的最上层,是DNS系统的重要基础。全球共有13组根服务器,分布在世界各地,并有多个实例同时对外提供服务,以提高可靠性。

UDP传输协议

Pasted image 20230816213141.png 将数据打包成UDP数据报的过程可以概括如下:

  1. 为要发送的数据添加UDP头部
  • 定义UDP头部结构体,包含源端口、目的端口、长度、校验和等字段
  • 创建UDP头部,填充源端口、目的端口等关键信息
  1. 计算UDP长度和校验和字段
  • 长度字段表示UDP头部+数据的总字节数
  • 校验和根据伪头部和UDP报文逐Byte计算,用来检验数据完整性
  1. 将UDP头部结构体转换为字节流
  • 使用htons,htonl将结构体中的短整形和长整形字段转换为网络字节序
  • 使用指针直接强制类型转换为字节流
  1. 将UDP头部字节流与数据字节流拼接
  • 头部字节流+数据字节流构成一个完整的UDP数据报
  1. 通过套接字发送UDP数据报
  • 使用sendTo系统调用,将构造的数据报通过套接字发送出去
  1. 接收端解析UDP头部与数据
  • 通过recvFrom读取UDP数据报
  • 解析UDP头部获取关键信息,提取数据部分

TCP协议

TCP连接本质上是一种状态的维护,所以当网络连接断开时,TCP连接不一定断开。

TCP三次握手

TCP三次握手(Three-Way Handshake)是建立一个TCP连接时使用的一种连接建立机制,它的基本过程是:

  1. 客户端向服务器端发出连接请求报文,带SYN标志,随机选择一个初始序号x。
  2. 服务器收到连接请求报文,向客户端回复同意连接的应答报文,SYN标志和ACK标志都为1,确认序号为x+1,同时也选择一个自身的初始序号y。
  3. 客户端收到服务器的响应报文后,再次向服务器发出确认报文,ACK标志为1,确认序号为y+1。

这个握手过程通常需要传送3个报文段。客户端和服务器均以 SYN 报文同步序号,并通过 ACK 报文确认对方的SYN 报文,以确认连接的建立。