计算机网络

温故而知新

Posted on August 24, 2017

1. 网络基础

1.1 协议分层

  • 只要是在网络上跑的包,都是完整的,可以有下层没上层,绝对不可能有上层没下层
  • mac地址局域网寻址, 是身份证, 无定位功能
  • ip地网络寻址, 有定位功能

1.2 协议分类

连接和无连接

  • 面向连接(Connection-Oriented)

    网络负责顺序发送报文分组, 并以一种可靠的方法检测丢失和冲突, 这种方法被“可靠的”传输服务使用

    关键词: 检测丢失, 可靠

  • 无连接协议(Connectionless Protocols)

    网络只需要将报文分组发送到接收点,检错与流控由发送方和接收方处理。这种方法被称作“最佳工作(best-effort)”或“无应答(unacknowledged)”的传输协议所使用

    关键词: 无应答, 不可靠

举例对比:

  • 对于面向无连接的:在邮局寄信时,你只需要将信放在邮筒里,不需要给收件人通知,收件人也不知道你给他寄信了
  • 对于面向连接的: 两个人打电话时,双方确认并建立连接后才能进行通信

面向报文和面向字节流

  • 面向字节流(TCP):
    • 无结构的字节流
    • 有缓冲区, 会进行拆分, 合并
  • 面向报文(UDP): * 既不拆分,也不合并,而是保留这些报文的边界,即一次发送一个报文 * 客户端分几次发送过来,服务端就必须按几次接收 ### 1.3 网络分类

  • 局域网:

    是分布范围较小的计算机网络,一般是指一个单位构成的网络,区域范围可以是一个办公室、一幢办公楼、一个政府机构范围等等,通常是以直接联机的方式组网的。与其相对应的有城域网广域网

    具有广播功能, 按照拓扑结构可分为总线结构、环型结构、星型结构、网状结构、树型结构以及混合型结构

  • 以太网:

    指的是在局域网内传输数据的方法和模式。传统以太网的传输介质为同轴电缆,现在该词泛指所有采用CSMA/CD协议(即:带冲突检测的载波监听多路访问协议)的局域网。和它相对应的是令牌环状网络光纤分布数据接口

1.4 网络设备:

对于一个网络设备来说,就像一个管道(pipe)一样,有两端,从其中任意一端收到的数据将从另一端发送出去, 区分物理网络设备和虚拟网络设备

  • 物理网络设备的两端分别是内核协议栈(通过内核网络设备管理模块间接的通信)和外面的物理网络,从物理网络收到的数据,会转发给内核协议栈,而应用程序从协议栈发过来的数据将会通过物理网络发送出去
  • 虚拟网络设备的一端也是协议栈,而另一端是什么取决于虚拟网络设备的驱动实现

物理设备:

  • 集线器(hub): 在物理层扩展局域网, 构成了一个冲突域和一个广播域
  • 中继器(Repeater): 扩展网络距离,将衰减信号经过再生; 实现粗同轴电缆以太网和细同轴电缆以太网的互连; 构成了一个单个的冲突域和广播域.
  • 二层交换机: 以太网交换机实质上就是一个多接口的网桥,可见交换机工作在数据链路层, 交换机上的每个接口都是自己的一个冲突域. 交换机上的学习的结果,称为转发表,有过期时间
  • 基于vlan的二层交换机: 为隔离广播域而生的,它可以将一个大的共享局域网的用户分成许多独立的小的广播域.
  • 路由器(Router): 工作在网络层, 路由器的每个端口所连接的网络都独自构成一个广播域, (如果各网段都是共享式局域网)每网段自己构成一个独立的冲突域.
  • 网关(Gateway): 网关工作在OSI参考模型的高三层,因此,并不使用冲突域、广播域的概念。网关主要用来进行高层协议之间的转换, 注意,这里网关的概念完全不同于PC主机以及路由器上配置的默认网关(default gateway)

虚拟网络设备:

  • 网桥: 能够起到虚拟交换机作用, 工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发.每个冲突域共享自己的总线信道带宽. 隔离冲突域, 共享广播域. (网桥的端口有自己的物理地址, 但对于主机来说等于是透明的)(但是网桥本身可以有一个物理地址和ip地址)
  • Veth Pair: 总是以两张虚拟网卡(Veth Peer)的形式成对出现的。并且,从其中一个“网卡”发出的数据包,可以直接出现在与它对应的另一张“网卡”上,哪怕这两个“网卡”在不同的 Network Namespace 里
  • Tun/Tap虚拟设备: 都是虚拟网卡,没有直接映射到物理网卡,是一种纯软件的实现。Tun是三层虚拟设备,能够处理三层即IP包(在操作系统内核和用户应用程序之间传递 IP 包),Tap是二层设备,能处理链路层网络包如以太网包
+----------------------------------------------------------------+
|                                                                |
|  +--------------------+      +--------------------+            |
|  | User Application A |      | User Application B |<-----+     | 用户态程序
|  +--------------------+      +--------------------+      |     |
|               | 1                    | 5                 |     |
|...............|......................|...................|.....|
|               ↓                      ↓                   |     |
|         +----------+           +----------+              |     |
|         | socket A |           | socket B |              |     | 内核态程序
|         +----------+           +----------+              |     |
|                 | 2               | 6                    |     |
|.................|.................|......................|.....|
|                 ↓                 ↓                      |     |
|             +------------------------+                 4 |     |
|             | Newwork Protocol Stack |                   |     |
|             +------------------------+                   |     |
|                | 7                 | 3                   |     |
|................|...................|.....................|.....|
|                ↓                   ↓                     |     |
|        +----------------+    +----------------+          |     |
|        |      eth0      |    |      tun0      |          |     |
|        +----------------+    +----------------+          |     |
|    10.32.0.11  |                   |   192.168.3.11      |     |
|                | 8                 +---------------------+     |
|                |                                               |
+----------------|-----------------------------------------------+
                 ↓
         Physical Network

名称解释:

  • 网络栈: 网卡(Network Interface)、回环设备(Loopback Device)、路由表(Routing Table)和 iptables 规则
  • 冲突域:
  • 广播域:

2. 链路层

2.1 帧(frame)

  • 目的地址: 6字节, MAC地址
  • 源地址: 6字节, MAC地址
  • 类型: 2字节
  • 上层数据: IP数据报
  • CRC

  • 以太网帧中的数据长度规定最小46 字节, 最大1500 字节. 不包括帧的首尾数据, 因此是对应上层数据的大小.

  • MTU(Max Transmission Unit)

    以太网的最大传输单元, 通常为1500, 如果大于MTU, 需要分片fragmentation(IP层分片?)

    链路层的帧长度范围: (46+18) ~ (1500+18)

    internet 上标准MTU为576

    需要注意的是,loopback的MTU不受上述限制, 本机回环地址上MTU可以是65536

  • ARP/RARP: ARP 和RARP 数据包的长度不够46 字节,要在后面补填充位

2.2 ARP

地址解析协议

基本关系: IP —> ARP —> 物理地址

  • ARP协议只适用于局域网
  • 点对点链路不使用ARP协议 TODO
  • APR请求包是广播的,但是ARP应答帧是单播的

流程

  • 本地主机在局域网中广播ARP请求,ARP请求数据帧中包含目的主机的IP地址。意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址”
  • 目的主机的ARP层解析这份广播报文,识别出是询问其硬件地址。于是发送ARP应答包,里面包含IP地址及其对应的硬件地址
  • 本地主机收到ARP应答后,知道了目的地址的硬件地址,之后的数据报就可以传送了

ARP高速缓存

通过arp 查看本机ARP缓存

2.3 RARP

TODO

2.4 STP

有环拓扑常称为图, 会产生二层网络的广播风暴的产生

将图中的环破了,就生成了树。在计算机网络中,生成树的算法叫作STP,全称Spanning Tree Protocol

TODO

2.5 Vlan

VLAN:虚拟局域网

目的: 解决广播问题和安全问题

实现: 二层的头上加一个 TAG,里面有一个 VLAN ID,一共 12 位。可以划分 4096 个 VLAN

  • 基于端口划分vlan

    这种方式是根据交换机的端口划分,将交换机上的端口划分为若干个组,每个组就是一个虚拟网, 相当于一个独立的传统二层交换机。可见,这种划分方式的优点是划分成员很简单,缺点是成员切换vlan等改变时较麻烦,需要换线

  • 交换机端口分为access和trunk:

    • access 用于连接主机: 只转发VlanID相同的数据
    • trunk用于级联需要在同一个广播域的交换机, 以转发属于任何 VLAN 的口

TODO:

  • 还有基于mac以及ip等很多的划分vlan方式

一台交换机内部的vlan互通方式:

  • 新建trunk连接路由器, 流程跟路由器连接两个局域网的场景是一样的, 在路由器上完成两个广播域(两个vlan)之间的切换

Vlan 不足:

  • VLAN ID字段为12-bit,VLAN数量最大为4096
  • 虚拟机要求能够移动,也就是在用户不感知的情况下,从这个服务器迁移到另外一台服务器,还可能直接迁移到异地的数据中心

2.6 VxLan

  • 是一种overlay网络技术
  • 将原始2层以太网帧进行UDP封装(MAC-in-UDP): 原始2层桢, 加上8字节VXLAN头部, 作为udp的数据负载, 再保证上udp头, ip头, mac头
  • 增加8字节VXLAN头部(24-bit VNID),8字节UDP头部(目的端口是一个VXLAN特定的端口),20字节IP头部(目的IP是目的VTEP的IP,源IP地址是本地VTEP的地址)和14字节以太网头部(下一跳路由器的MAC),共50字节

  • VXLAN Tunnel Endpoint(VTEP):VXLAN使用VTEP设备对VXLAN报文进行封装与解封装,包括ARP请求报文和正常的VXLAN数据报文,VTEP将原始以太网帧通过VXLAN封装后发送至对端VTEP设备,对端VTEP接收到VXLAN报文后解封装然后根据原始MAC进行转发,VTEP可以是物理交换机、物理服务器或者其他支持VXLAN的硬件设备或软件来实现

3. 网络层

3.1 数据报(datagram)

  • 首部长度可变
  • 16位存储数据报总长度, 包括首部和数据之和, 最长2^16-1=65535 TODO
  • 序号: todo
  • IP协议提供为上层协议分隔和重组报文的功能, 因此传输层原则上数据包可以不限制长度.

3.2 CIDR

打破了原来设计的几类地址的做法,将 32 位的 IP 地址一分为二,前面是网络号,后面是主机号

  • 广播地址: 网络号+主机号全一, 标识该网络号下所有主机都接收
  • 子网掩码: 网络号全一+全零, 将子网掩码和 IP 地址按位计算 AND,就可得到网络号
  • 公有 IP 地址
  • 私有 IP 地址: 10.*; 172.16.*~172.31.*; 192.168.*
  • 组播地址

3.3 ICMP

  • ICMP全称Internet Control Message Protocol,互联网控制报文协议
  • ping 是基于 ICMP 协议工作的。

TODO


4. 传输层

段(segment)

4.1 UDP

  • header 长度固定8字节

  • 其中16位代表UDP数据总长度, 包括首部和数据之和, 因此UPD 最长2^16-1=65535, 其中有效载荷为65535-8=65527

  • 没有序号: todo

  • 而在ip层进行封装后的ip包头占去20字节,所以这个是udp数据包的最大理论长度是2^16-1-8-20=65507, 65507对loopback基本可靠, 但是对走网络的通信来说基本不现实, 因为受到MTU限制

    Sending a datagram greater than the receiver MTU will not work because the packet will get silently dropped without informing the source that the data did not reach its intended recipient(todo 难道不会分片吗)

发送缓冲区

任何UDP套接字都有发送缓冲区大小(我们可以用SO_SNDBUF套接字选项更改它),不过它仅仅是可写道套接字UDP数据报大小上限。如果一个应用进程写一个大于套接字发送缓冲区大小的数据报,内核将返回该进程一个EMSGSIZE错误。既然UDP是不可靠的,它不必保存应用进程数据的一个副本,因此无需一个真正的发送缓冲区

4.2 TCP

  • 包头中没有包长度, 完全依赖IP层去处理分帧 (TCP 称为「流协议」的原因)
  • 序号todo

MSS

最大报文段长度, 表示了TCP传往另一端的最大数据的长度,当一个连接立时,连接的双方都要通告各自的MSS,也就是说,它说是与TCP的SYN标志在一起的.

它通常是1500-20-20=1460, 但是大多数BSD实现,它都是512的倍数,如1024

发送缓冲区

每个TCP套接字有一个发送缓冲区,我们可以用SO_SNDBUF套接字选项来更改该缓冲区的大小


5. 应用层

5.1 DHCP

动态主机配置协议(Dynamic Host Configuration Protocol), 基于UDP

过程:

  1. DHCP Discover: Client 广播:

    [新人的mac, 广播MAC
      [ 新人的IP: 0.0.0.0, 广播IP: 255.255.255.255
        [UPD头: 源端口68, 目的端口67
          [我的 MAC 地址是这个,我还没有 IP,谁能给租给我个 IP 地址]
        ]
      ]
    ]
    
  2. DHCP Offer: Server 广播:

    [server的mac, 广播MAC
      [ server的IP:, 广播IP: 255.255.255.255
        [UPD头: 源端口67, 目的端口68
          [我分配了一个可用的 IP 给你,你看如何?还包括子网掩码、网关和 IP 地址租用期等信息]
        ]
      ]
    ]
    
  3. DHCP Request: Client选择其中一个 DHCP Offer,一般是最先到达的那个

    [新人的mac, 广播MAC
      [ 新人的IP: 0.0.0.0, 广播IP: 255.255.255.255
        [UPD头: 源端口68, 目的端口67
          [我的 MAC 地址是这个,这是我准备接受的Server 和给我的IP]
        ]
      ]
    ]
    
  4. DHCP ACK: Server 广播:

    [server的mac, 广播MAC
      [ server的IP:, 广播IP: 255.255.255.255
        [UPD头: 源端口67, 目的端口68
          [这个新人的IP是我租的, 租约在此]
        ]
      ]
    ]
    

IP 地址的收回和续租:

  1. 客户机会在租期过去 50% 的时候,直接向为其提供 IP 地址的 DHCP Server 发送 DHCP request 消息包
  2. 客户机接收到该服务器回应的 DHCP ACK 消息包,会根据包中所提供的新的租期以及其他已经更新的 TCP/IP 参数,更新自己的配置

5.2 DNS

域名的层级结构: 主机名.次级域名.顶级域名.根域名

如: host.sld.tld.root 根域名.root对于所有域名都是一样的,所以平时是省略的

分级查询:

  1. 从”根域名服务器”查到”顶级域名服务器”的NS记录和A记录(IP地址)
  2. 从”顶级域名服务器”查到”次级域名服务器”的NS记录和A记录(IP地址)
  3. 从”次级域名服务器”查出”主机名”的IP地址

主.次.顶.根

发送到(DNS Server) 查询内容(发送内容) 返回内容 返回类型
本机配置的DNS server ip? . (根域名) 负责根域名的13个DNS server 域名(root DNS server) NS
(上阶段返回) DNS server域名(或者胶水记录ip), 选择其中一个 具体顶级域名 负责该顶级域名的DNS server 域名 NS
(上阶段返回) DNS server域名(或者胶水记录ip) 具体次级域名 负责该次级域名的DNS server 域名 NS
(上阶段返回) DNS server域名(或者胶水记录ip) 具体主机域名 负责该主机域名的DNS server 域名 NS
(上阶段返回) DNS server域名(或者胶水记录ip) 具体主机域名 主机对应的ip A

TODO: NS 会同时返回对应的ip????

DNS 记录类型:

  • A:地址记录(Address),返回域名指向的IP地址。

  • AAAA:ipv6地址记录

  • NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。

    就是返回负责被查询域名的DNS server的域名

    如果这时候返回的NS 域名 和用户想查询的域名有部分重叠, 就会有循环依赖, 为了解决这一个问题,引入了胶水记录(Glue Record)这一概念,也就是在出现循环依赖时,直接在上一级作用域返回 DNS 服务器的 IP 地址

  • MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。

  • CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转

    CNAME记录主要用于域名的内部跳转,为服务器配置提供灵活性,用户感知不到

    ;; ANSWER SECTION:
    facebook.github.io. 3370    IN  CNAME   github.map.fastly.net.
    github.map.fastly.net.  600 IN  A   103.245.222.133
    

    上面结果显示,facebook.github.io的CNAME记录指向github.map.fastly.net。也就是说,用户查询facebook.github.io的时候,实际上返回的是github.map.fastly.net的IP地址。这样的好处是,变更服务器IP地址的时候,只要修改github.map.fastly.net这个域名就可以了,用户的facebook.github.io域名不用修改

  • PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名

DNS客户机配置文件

/etc/resolv.conf

TODO


6. 路由

6.1 路由串讲:

网络-数据包在路由转发过程中MAC地址和IP地址,变与不变:

  • MAC地址在同一个广播域传输过程中是不变的,在跨越广播域的时候会发生改变的;
  • 而IP地址在传输过程中是不会改变的(除NAT的时候)
  • 在任何一台机器上,当要访问另一个 IP 地址的时候,都会先判断,这个目标 IP 地址,和当前机器的 IP 地址,是否在同一个网段:
    • 同一个网段: ARP 获得 MAC 地址,将源 MAC 和目的 MAC 放入 MAC 头中
    • 不是同一网段: 发往默认网关, ARP 获得 网关MAC 地址,将源 MAC 和网关 MAC 放入 MAC 头中
模式 源mac 目的mac 源IP 目的IP
同网段发送方 不变 不变 不变 不变
不同网段发送方 不变 改为网关mac 不变 不变
跨广播域路由器转发 路由器mac 下一跳mac 不变 不变
跨广播域路由器NAT转发 路由器mac 下一跳mac 路由器IP 不变
  • 静态路由: 静态路由是指由用户或网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。静态路由信息在缺省情况下是私有的,不会传递给其他的路由器
  • 动态路由: 动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整

6.2 路由策略

使用 ip rule 命令操作路由策略数据库

在 Linux 系统启动时,内核会为路由策略数据库配置三条缺省的规则:

  • 0: 匹配任何条件 查询路由表local(ID 255) 路由表local是一个特殊的路由表,包含对于本地和广播地址的高优先级控制路由。rule 0非常特殊,不能被删除或者覆盖
  • 32766: 32766 匹配任何条件 查询路由表main(ID 254) 路由表main(ID 254)是一个通常的表,包含所有的无策略路由。系统管理员可以删除或者使用另外的规则覆盖这条规则。
  • 32767: 匹配任何条件 查询路由表default(ID 253) 路由表default(ID 253)是一个空表,它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理。这个规则也可以删除

使用方法: ip rule [ list | add | del ] SELECTOR ACTION (add 添加;del 删除; ls 列表)

  • SELECTOR: [ from PREFIX 数据包源地址] [ to PREFIX 数据包目的地址] [ tos TOS 服务类型][ dev STRING 物理接口] [ pref NUMBER ] [fwmark MARK iptables 标签]

  • ACTION : [ table TABLE_ID 指定所使用的路由表] [ nat ADDRESS 网络地址转换][ prohibit 丢弃该表| reject 拒绝该包| unreachable 丢弃该包]

    TABLE_ID: [ local | main | default | new | NUMBER ]

例子:

  • ip rule add from 192.203.80/24 table inr.ruhep prio 220 来自源地址为192.203.80/24的数据包, 由路由表 inr.ruhep 处理
  • ip rule add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320 把源地址为193.233.7.83的数据报的源地址转换为192.203.80.144,并通过表1进行路由

6.3 路由表

linux 系统中,可以自定义从 1-252个路由表,其中,linux系统维护了4个路由表:

  • 0表: 系统保留表
  • 253表: default table 没特别指定的默认路由都放在改表
  • 254表: main table 没指明路由表的所有路由放在该表
  • 255: locale table 保存本地接口地址,广播地址、NAT地址 由系统维护,用户不得更改

路由表序号和表名的对应关系在 /etc/iproute2/rt_tables 文件中,可手动编辑。路由表添加完毕即时生效

255     local
254     main
253     default
0       unspec

查看路由表:

  • ip route list table table_number
  • ip route list table table_name
ip route show
default via 10.0.0.1 dev eth0
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.12
127.254.254.0/24 dev docker0  proto kernel  scope link  src 127.254.254.1 linkdown
172.18.1.0/24 dev cbr0  proto kernel  scope link  src 172.18.1.1

配置示例:

echo 200 chao >> /etc/iproute2/rt_tables # 新增路由表
ip rule add from 192.168.1.101 table chao # 指定ip101 使用路由表chao (路由策略)

ip rule ls # 查看路由策略
.......
32765:    from 192.168.1.101 lookup chao
......

ip route add default via 60.190.27.189 dev eth3 table chao 增加路由规则
ip route flush cache

多出口IP配置权重: ip route add default scope global nexthop via 100.100.100.1 weight 1 nexthop via 200.200.200.1 weight 2

6.4 动态路由

TODO


8. VPN

VPN,全名Virtual Private Network,虚拟专用网, VPN 通过隧道技术在公众网络上仿真一条点到点的专线,是通过利用一种协议来传输另外一种协议的技术,这里面涉及三种协议:乘客协议、隧道协议和承载协议

VPN的核心技术: 隧道技术、身份认证、数据认证、加密技术、秘钥管理技术

  • 隧道技术:隧道两端封装、解封装,用以建立数据通道
  • 身份认证:保证接入VPN的操作人员的合法性、有效性
  • 数据认证:数据在网络传输过程中不被非法篡改
  • 加解密技术:保证数据在网络中传输时不被非法获取
  • 秘钥管理技术:在不安全的网络中安全的传递秘钥

VPN=隧道+安全

VPN的优点:

  • 节约成本
  • 提高安全性
  • 扩展性强

VPN的两大类别:

  • Peer-to-Peer VPN
  • Overlay VPN

VPN TODO:

  • GRE
  • IPsec
  • L2TP
  • SSL VPN

网络隧道技术

隧道协议(Tunneling Protocol)是一类网络协议,它是一种数据包封装技术,它是将原始IP包(其报头包含原始发送者和最终目的地)封装在另一个数据包(称为封装的IP包)的数据净荷中进行传输。使用隧道的原因是在不兼容的网络上传输数据,或在不安全网络上提供一个安全路径。隧道协议通常(但并非总是)在一个比负载协议还高的层级,或同一层

基于数据包的隧道协议有:

  • IPsec
  • GRE

GRE

通用路由封装协议GRE(genericrouteing encapsulation)提供了一中协议的报文封装载另一种协议报文中的机制,是一种 IP-over-IP 的三层隧道技术

GRE 使用 tunnel(隧道)技术,数据报在 tunnel 的两端封装,并在这个通路上传输,到另外一端的时候解封装

GRE是一种通用的格式,我们可以使用GRE进行很多不同种类的封装。比如我们可以使用PPTP协议来进行VPN,可以使用IPv4来包裹IPv6。比较常见的delivery协议一般是IP协议

GRE封装

封装格式:

  • Delivery Header: 用于封装和传输的协议
  • GRE Header: 包含payload的一些信息,包括checksum、version、payload的协议类型等
  • Payload packet: 需要被传输和封装的报文

Ethernet –外IP—GRE—IP/IPX—Payload

  • 外IP数据包的IP头部的协议号为47
  • GRE头部的长度为4~20字节(根据实际配置而定)
  • GRE在设计的时候没有考虑加密。因此现在常见的需要加密的封装一般是用的IPsec协议

GRE 技术缺点

  • Tunnel 的数量问题: GRE 是一种点对点(point to point)标准。Neutron 中,所有计算和网络节点之间都会建立 GRE Tunnel。当节点不多的时候,这种组网方法没什么问题
  • 扩大的广播域
  • GRE 封装的IP包的过滤和负载均衡问题

IPsec

TODO

PPTP

PPTP(Point to Point Tunneling Protocol)提供PPTP客户机和PPTP服务器之间的加密通信

TODO


9. overlay

Overlay 在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。Overlay 技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关

  • underlay是底层网络,负责互联互通
  • overlay是基于隧道技术实现的,overlay的流量需要跑在underlay之上, overlay的核心其实就是打隧道(tunnel)

常见overlay:

  • GRE
  • vxlan

    表面上看VXLAN和GRE区别不大,只是对delivery协议做了限定,使用UDP。但是实际上在协议的交互动作上面还是有区别的

    VXLAN中,A的VTEP并不知道B的VTEP在哪,所以需要一个发现的过程, GRE中, VTEP的角色是由路由器来充当的,而且路由器的两端的地址是配置好的, 所以A连接的路由器知道B的路由器地址,直接将报文发给RB即可

    VXLAN屏蔽了UDP的存在,上层基本上不感知这层封装。同时VXLAN避免了GRE的点对点必须有连接的缺点


10. Sokect


参考资料