Domain4 Monkey & Pedestal

TCP

三次握手-四次挥手

IPv4

CIDR Classless Inter-Domain Routing 无类别域间路由,不使用ABC,而是使用网络位来划分

VLSM Variable Length Subnet Mask(可变长子网掩码)

Class A Private IP:"内网专用、不允许在公网路由"的地址段

10.0.0.0/8

前 8 bit 是网络位(Network Prefix)固定不变

后 24 bit 是主机位(Host bits)可变

A类 多主机 0开头

主机数量:大于B的

比较特殊

因为0开头为本地;127开头为回路测试,所以A类可用范围:1头到126尾

1.0.0.0 -- 126.255.255.255

私有IP 10.0.0.0/8 即 10.0.0.0 到 10.255.255.255

B类 均衡 10开头

主机数量:2^16 - 2 = 65,534

128头到191尾

私有IP 172.16.0.0/12 即 172.16.0.0 ~ 172.31.255.255

C类 少主机 110开头

主机数量:2^8 - 2 = 254

192头到223尾

私有IP 192.168.0.0/16 即 192.168.0.0 ~ 192.168.255.255

D组播 1110xxxx 224头到239尾

E保留 1111xxxx 240头到255尾

路由类型

路由器的基本工作就是:

  1. 收到数据包,看 目标IP(Destination IP)
  2. 去查 路由表(Routing Table),找到"下一跳 + 出接口"
  3. 匹配到路由,转发
  4. 匹配不到,丢弃

直连路由:接口配IP后,接口有对应路由信息了

静态路由:手动配

去往Destination IP 10.0.0.0/8的静态路由,下一跳地址NextHop为 23.0.0.3,转发出接口1Interface 为 GE0/0/1。

策略路由 "人为控制 按规则分流、灵活"

默认路由 没路就走它(兜底)

动态路由

内部路由

协议距离矢量RIP

链路状态OSPF

外部路由协议

路径矢量BGP

用户输入Google.com,访问服务器

实际流程:

①DNS查询 准备

  1. 浏览器查缓存
  2. 系统 DNS 缓存
  3. 没有 → 发起 DNS 查询
bash 复制代码
www.google.com 的 IP 是多少?
设目标:DNS Server 8.8.8.8

👉 至此DNS请求准备好,但仍需ARP协助打通内部流程,才能正式发送

② ARP阶段

当 DNS 请求要发出去时:

Step 2.1:判断目标在哪

目标 DNS不在本地网段,必须交给默认网关10.10.10.1(本地网络出口)

可是不知道网关MAC

因为数据帧发送必须携带目标MAC,所以需要知道网关的MAC

👉 ARP就是为寻找网关MAC

Step 2.2:ARP(找网关MAC)

Step 2.2.1 ARP 请求

PC → 交换机 → 全网泛洪:谁IP是10.10.10.1

PC 生成 ARP Request 后,将其封装为以太网帧进行发送。

帧进入交换机后,交换机先记录 源MAC地址与入端口。

当交换机识别 该帧的目的MAC 为广播地址(FF:FF:FF:FF:FF:FF)时,进行泛洪转发。

Step 2.2.2 ARP 应答(网关 → 交换机 → 单播给 PC)

网关收到请求后,会生成ARP Reply,报文中携带自身 IP 与 MAC 地址,目的MAC为 PC的MAC地址,单播,回复给发起请求的 PC。

交换机收到该帧后,记录网关与入端口,并更新MAC地址表。

MAC表 查询目标MAC,匹配到PC端口进行单播。

PC收到ARP应答后,将"网关IP → 网关MAC"写入本地ARP缓存表。

至此ARP解析完成。

至此DNS请求正常进行封装,就能发出去

③ DNS请求真正发出(封装完成)

bash 复制代码
IP层:IP负责"最终目的地"
• 源IP:PC(如 10.10.10.10)
• 目的IP:8.8.8.8(DNS服务器)

MAC层:MAC负责"下一跳"
• 源MAC:PC MAC
• 目的MAC:默认网关MAC(10.10.10.1)

④ 路由器三层转发

Step 4.1:拆二层帧 拿IP

Step 4.2:在路由表中查找 目的IP:8.8.8.8

  • ✔ 优先级规则
    1.最长前缀匹配(最具体路由优先)
    2. 若无匹配 → 使用默认路由 0.0.0.0/0

Step 4.3:选择下一跳

Step 4.4:重写源、目的的MAC 重新封装二层

Step 4.5:逐跳转发 路由器A → 路由器B → ISP → Google DNS

⑤ DNS响应返回

DNS服务器返回结果: www.google.com142.xxx.xxx.xxx

⑥ HTTP/HTTPS 连接

知道了该服务器的IP,开始进行连接

⑦ 页面返回

2