当前位置: 首页 > java >正文

网络通信基础:从数据链路层到传输层

文章目录

  • 前言
  • 一、数据链路层与交换机原理
    • 1.1 数据链路层功能
      • 1.1.1 数据链路层核心功能
    • 1.2 以太网发展历程
    • 1.3 以太网MAC地址
      • 1.3.1 MAC地址类型
    • 1.4 以太网帧格式
    • 1.5 交换机工作原理详解
      • 1.5.1 交换机工作核心
        • 1.5.1.1 核心:MAC地址表
        • 1.5.1.2 法宝一:学习(Learning)—— “认识新邻居”
        • 1.5.1.3 法宝二:转发与过滤(Forwarding/Filtering)—— “精准投递”
        • 1.5.1.4 法宝三:泛洪(Flooding)—— “大喇叭广播”
        • 1.5.1.5 工作流程举例
        • 1.5.1.6 交换机核心工作原理小结
      • 1.5.2 环路避免与STP协议
    • 1.6 交换机配置基础
    • 1.7 高级特性与硬件支撑
  • 二、网络层协议
    • 2.1 网络层功能
    • 2.2 IP数据包格式
    • 2.3 路由器工作原理详解
      • 2.3.1 路由表结构与维护
      • 2.3.2 路由决策过程
      • 2.3.3 路由协议类型
      • 2.3.4 NAT地址转换
      • 2.3.5 分组转发优化技术
      • 2.3.6 工作原理详解:数据包的旅程
        • 2.3.6.1 步骤 1:判断目的地(路由判断)
        • 2.3.6.2 步骤 2:数据包到达路由器(接收与解封装)
        • 2.3.6.3 步骤 3:查询路由表(Routing Table Lookup)
        • 2.3.6.4 步骤 4: 转发与重封装(Forwarding and Re-encapsulation)
        • 2.3.6.5 步骤 5:网络地址转换(NAT - 家用到公网的关键)
        • 2.3.6.6 步骤 6:旅程继续
      • 2.3.7、核心组件与技术支撑
      • 2.3.8 路由工作原理小结
    • 2.4 ICMP协议
      • 2.4.1 ICMP功能
      • 2.4.2 ICMP封装过程
    • 2.5 ping命令
    • 2.6 ARP协议详解
      • 2.6.1 ARP协议工作原理深度解析
      • 2.6.2 ARP缓存表管理
      • 2.6.3 代理ARP
      • 2.6.4 免费ARP
    • 2.7 ARP相关命令
      • 2.7.1 ARP攻击与防御
    • 2.8 tracert/traceroute命令
  • 三、传输层协议
    • 3.1 TCP/IP传输层协议
    • 3.2 TCP协议详解
      • 3.2.1 TCP特点
      • 3.2.2 TCP报文段格式
      • 3.2.3 TCP三次握手详解
      • 3.2.4 TCP四次挥手详解
      • 3.2.5 半关闭状态
      • 3.2.6 TIME_WAIT状态
    • 3.3 UDP协议详解
      • 3.3.1 UDP特点
      • 3.3.2 UDP报文格式
    • 3.4 常见应用层协议端口
      • 3.4.1 TCP协议端口:
      • 3.4.2 UDP协议端口:
    • 3.5 TCP与UDP对比
  • 总结


前言

在当今互联网时代,网络通信已经成为我们日常生活和工作中不可或缺的一部分。无论是浏览网页、发送邮件,还是视频会议、在线游戏,背后都依赖于复杂的网络协议和技术。本文将深入浅出地介绍网络通信中的核心技术,包括数据链路层、交换机原理、网络层、IP协议、ICMP协议、ARP协议以及传输层的TCP与UDP协议。通过理解这些基础概念,读者可以更好地把握网络通信的本质,为后续深入学习网络技术打下坚实基础。


一、数据链路层与交换机原理

1.1 数据链路层功能

数据链路层是OSI模型中的第二层,位于网络层与物理层之间,主要负责在直接相连的节点之间可靠地传输数据帧。

1.1.1 数据链路层核心功能

  • 链路的建立、维护与拆除:管理设备之间的通信链路。物理地址、网络拓扑。
  • 帧包装、帧传输、帧同步:为数据添加头部和尾部,形成帧
    • 组帧:把数据封装在帧中,按顺序传送。
    • 定界与同步:产生/识别帧边界。
  • 帧的差错恢复:通过校验码检查数据是否损坏
    • 差错恢复:采用重传的方法进行。
  • 流量控制:确保中间传输设备的稳定及收发双方传输速率的匹配。

1.2 以太网发展历程

以太网技术经历了多个发展阶段:

  1. 实验性以太网(1973年,2.94 Mbps)
  2. DIX与IEEE 802.3标准(1980年,10 Mbps)
  3. 10兆以太网应用(10BASE5、10BASE2、10BASE-T)
  4. 快速以太网(1995年,100 Mbps,IEEE 802.3u)
  5. 千兆以太网(1998年,1000 Mbps,IEEE 802.3z/ab)
  6. 后续发展:万兆(10 Gbps)、40 Gbps、100 Gbps等

1.3 以太网MAC地址

MAC地址是网卡的物理地址,由48位二进制数组成,通常表示为六段十六进制数(如00-D0-09-A1-D7-B7)。前24位是厂商编号,后24位是设备序列号。

1.3.1 MAC地址类型

  • 单播地址:第8位为0,标识单个设备
  • 组播地址:第8位为1,标识一组设备
  • 广播地址:FF-FF-FF-FF-FF-FF,标识所有设备

1.4 以太网帧格式

以太网帧的结构包含以下部分:

  • 前导码(7字节):同步时钟信号
  • 帧起始定界符(1字节):标记帧开始
  • 目标MAC地址(6字节):接收方地址
  • 源MAC地址(6字节):发送方地址
  • 类型(2字节):标识上层协议(0800H=IP,0806H=ARP)
  • 数据(46-1500字节):实际传输的数据
  • 帧校验序列(4字节):差错检测

1.5 交换机工作原理详解

交换机是数据链路层的核心设备,工作在OSI模型的第二层,其主要功能是基于MAC地址进行数据帧的转发和过滤。可以把交换机理解为一个非常智能且高效的“交通警察”或“邮局分拣员”,它工作在数据链路层(Layer 2),核心任务是基于MAC地址在局域网(LAN)内部进行高速的数据帧转发和隔离冲突。

  • 核心功能与角色定位(与路由器对比)
特性交换机 (Layer 2 Switch)路由器 (Layer 3 Router)
工作层次数据链路层 (Layer 2)网络层 (Layer 3)
寻址依据MAC地址(物理地址)IP地址(逻辑地址)
核心功能MAC地址学习、帧的转发/过滤/泛洪路径选择、路由寻址、连接异构网络
隔离范围隔离冲突域 (Collision Domain)隔离广播域 (Broadcast Domain)
典型应用局域网 (LAN) 内部互联网络与网络之间互联 (WAN)

简单来说:交换机负责“本地送货”(局域网内),看的是MAC地址这个“身份证号”;路由器负责“跨城快递”(网络间),看的是IP地址这个“逻辑地址”。

1.5.1 交换机工作核心

交换机的核心工作依赖于三个关键行为:学习(Learning)转发(Forwarding)过滤(Filtering)泛洪(Flooding)。这一切都围绕着一张核心表——MAC地址表(MAC Address Table)CAM表 进行。

1.5.1.1 核心:MAC地址表

这是一张交换机自动学习和维护的“端口-地址映射表”。它记录了哪个MAC地址连接在交换机的哪个物理端口上。

MAC AddressPort
AA:BB:CC:00:11:01Fa0/1
AA:BB:CC:00:11:02Fa0/2
AA:BB:CC:00:11:03Fa0/3
1.5.1.2 法宝一:学习(Learning)—— “认识新邻居”

交换机通过检查收到的数据帧的源MAC地址来学习设备的位置。

  1. 初始状态:刚启动时,MAC地址表是空的。
  2. 接收帧:假设电脑A(MAC地址: AA:BB:CC:00:11:01,连接在端口 Fa0/1)发送一个数据帧给电脑B。
  3. 学习过程:交换机从 Fa0/1 口收到这个帧,它一看帧头的源MAC地址AA:BB:CC:00:11:01
  4. 更新表项:交换机立刻在MAC地址表中创建一条记录:MAC地址 AA:BB:CC:00:11:01 对应端口 Fa0/1
  5. 持续进行:这个过程对每个端口收到的每一个数据帧都会进行。很快,交换机就能学习到所有活跃设备的MAC地址和端口对应关系。

这个过程是完全自动的,无需任何配置。

1.5.1.3 法宝二:转发与过滤(Forwarding/Filtering)—— “精准投递”

交换机通过检查收到的数据帧的目标MAC地址,并查询MAC地址表来决定如何发送。

  1. 查询表项:继续上面的例子,现在交换机要处理这个目标是电脑B(MAC: AA:BB:CC:00:11:02)的帧。
  2. 情况一:已知单播(Known Unicast)—— 精准转发
    • 交换机在MAC地址表中查到了 AA:BB:CC:00:11:02 对应的端口是 Fa0/2
    • 行动:交换机将这个数据帧从 Fa0/2 端口转发出去。
    • 优点:其他端口(如 Fa0/3, Fa0/4)完全看不到这个帧,既节省带宽,又保证了通信的私密性。这就是过滤
  3. 情况二:未知单播(Unknown Unicast)—— 泛洪
    • 如果交换机查表,发现目标MAC地址 AA:BB:CC:00:11:02 不在表中(比如电脑B还没发过数据)。
    • 行动:交换机会将这个数据帧从除了接收端口(Fa0/1)之外的所有其他端口发送出去。这个行为称为泛洪(Flooding)
    • 目的:虽然效率低,但能确保即使不知道目标在哪,数据也能被送达。当电脑B收到这个帧并回复时,交换机就能通过“学习”过程知道它的位置了。
1.5.1.4 法宝三:泛洪(Flooding)—— “大喇叭广播”

泛洪不仅用于未知单播帧,还用于以下两种特殊帧:

  1. 广播(Broadcast)
    • 目标MAC地址是 FF:FF:FF:FF:FF:FF(全是F)。
    • 行动:交换机必须将其从所有端口(除接收端口外)转发出去。因为广播帧是发给局域网内所有人的(例如ARP请求)。
  2. 组播(Multicast)
    • 目标MAC地址是一个特定的组播地址。
    • 默认行动:默认情况下,交换机会像处理广播一样将其泛洪。但可以通过高级功能(如IGMP Snooping)来优化,只发给感兴趣的设备。
1.5.1.5 工作流程举例

假设一个拥有4个端口的交换机,连接着三台电脑:

  1. 学习A:A(MACA)发给B(MACB)一个数据帧。交换机从端口1收到,学习到 MACA 在端口1,并将此条目加入MAC表。
  2. 泛洪:交换机查询MAC表,找不到 MACB。于是将帧从端口2、3、4泛洪出去。
  3. 学习B:B收到了这个帧,并回复A。回复帧的源地址是 MACB,目标地址是 MACA。交换机从端口2收到,学习到 MACB 在端口2。
  4. 精准转发:交换机查询MAC表,发现 MACA 在端口1。于是它将回复帧从端口1转发给A。端口3和4完全不受影响。

经过这一来一回,交换机就完整地学习到了A和B的位置,之后它们之间的所有通信都将是非常高效的点对点精准转发。

1.5.1.6 交换机核心工作原理小结

交换机的工作原理核心是 “学习源MAC,转发目标MAC”

  • 学习:记录数据帧的源MAC地址入端口的对应关系,构建MAC地址表。
  • 转发决策:查看数据帧的目标MAC地址
    • 已知单播 -> 精准转发到对应端口(过滤其他端口)。
    • 未知单播/广播 -> 泛洪到所有其他端口。
  • 循环往复:这个过程持续不断,使得交换机能够自动适应网络变化,实现高效、安全的局域网内部数据传输。

1.5.2 环路避免与STP协议

在复杂网络拓扑中,交换机使用生成树协议(STP)来防止广播风暴:

  • 自动检测网络中的环路
  • 阻塞冗余路径,形成无环树形拓扑
  • 当主路径故障时,自动启用备份路径

1.6 交换机配置基础

交换机通过Console线缆进行配置管理,使用SecureCRT等终端软件进行连接和配置。

1.7 高级特性与硬件支撑

  1. 消除冲突:交换机的每个端口都是一个独立的冲突域。它使用全双工通信,允许设备同时发送和接收数据,从而完全避免了早期集线器(Hub)带来的冲突问题。
  2. 硬件转发:现代交换机使用ASIC(专用集成电路) 芯片来执行查表和转发操作,速度极快,接近线速(Wire Speed)。
  3. MAC地址老化:MAC地址表中的条目不是永久存在的。如果一段时间(例如300秒)内没有收到某个MAC地址发来的帧,该条目会被自动删除。这是为了适应网络拓扑的变化(比如设备更换了端口)。
  4. VLAN(虚拟局域网):这是交换机最重要的高级功能之一。它允许在一台物理交换机上划分多个逻辑上独立的交换机,从而隔离广播域,增强安全性和管理效率。

二、网络层协议

2.1 网络层功能

网络层是OSI模型的第三层,主要负责跨网络的通信,其核心功能包括:

  • IP地址编址与逻辑寻址:为设备分配唯一的IP地址
  • 转发数据包(Packet Forwarding):根据选择好的路径,将数据包从一个接口接收,再从另一个合适的接口发送出去。
  • 最佳路径选择:根据内置的算法,实时计算并选择发送数据包的最佳路径。
  • 互联异构网络:路由器可以连接不同的物理网络,比如将你家的Wi-Fi(无线局域网)和运营商的广域网(WAN)连接起来。它处理不同的网络协议和数据帧结构。

2.2 IP数据包格式

IP数据包包含头部和数据两部分,头部字段包括:

  • 版本(4位):IPv4或IPv6
  • 首部长度(4位):头部长度(单位4字节)
  • 服务类型(8位):数据包优先级
  • 总长度(16位):整个IP包的长度
  • 标识符、标志、段偏移量(32位):分片与重组控制
  • TTL(8位):生存时间,防环路
  • 协议号(8位):上层协议类型(6=TCP,17=UDP)
  • 首部校验和(16位):头部差错检测
  • 源地址和目标地址(各32位):IP地址
  • 可选项:额外功能字段
  • 数据:上层协议数据

2.3 路由器工作原理详解

路由器是网络层的核心设备,负责在不同网络之间转发数据包,其工作原理基于IP地址和路由表。

2.3.1 路由表结构与维护

路由表是路由器的"地图",包含以下信息:

  • 目的网络:目标IP地址所在的网络
  • 子网掩码:用于确定网络范围
  • 下一跳地址:数据包应该发送到的下一个路由器
  • 出接口:数据包发出的物理接口
  • 度量值:路径的成本(跳数、带宽、延迟等)

2.3.2 路由决策过程

  1. 接收数据包:从某个接口接收IP数据包
  2. 提取目标IP:读取数据包头部中的目标IP地址
  3. 最长前缀匹配:在路由表中查找最匹配的路由条目
  4. 选择最佳路径:根据度量值选择最优路径
  5. 转发数据包:通过出接口转发到下一跳

2.3.3 路由协议类型

静态路由

  • 管理员手动配置路由表
  • 简单可靠,但不适应网络变化
  • 适用于小型稳定网络

动态路由协议

  • 距离矢量协议(如RIP):基于跳数,定期广播整个路由表
  • 链路状态协议(如OSPF):基于链路状态,快速收敛,支持大型网络
  • 路径矢量协议(如BGP):用于互联网骨干网,基于策略路由

2.3.4 NAT地址转换

路由器通过NAT实现公私网地址转换:

  • 静态NAT:一对一固定映射
  • 动态NAT:地址池动态分配
  • PAT(端口地址转换):多对一映射,使用端口号区分

2.3.5 分组转发优化技术

  • 快速转发:基于缓存的快速查找
  • CEF(Cisco快速转发):预先计算转发表
  • 负载均衡:在多条路径间分配流量

好的,我们来详细、深入地解析一下路由器的工作原理。

可以把路由器理解为一个智能的交通枢纽,它的核心任务是在复杂的网络世界(互联网)中,为数据包选择最佳路径,并将其准确地转发到目的地。

工作原理详解:一个数据包的旅程

假设你的电脑(IP:192.168.1.100)想要访问谷歌的服务器(IP:8.8.8.8)。

2.3.6 工作原理详解:数据包的旅程

2.3.6.1 步骤 1:判断目的地(路由判断)
  1. 你的电脑首先会判断,目标 8.8.8.8 是否和自己在同一个网段。
  2. 192.168.1.100 的子网掩码通常是 255.255.255.0,这意味着本地网段是 192.168.1.0/24。而 8.8.8.8 显然不在这个网段内。
  3. 因此,你的电脑会将这个数据包发往默认网关(Default Gateway),也就是你家路由器的局域网IP地址(例如 192.168.1.1)。
2.3.6.2 步骤 2:数据包到达路由器(接收与解封装)
  1. 数据包通过Wi-Fi或网线到达路由器的局域网(LAN)接口
  2. 路由器会解封装数据链路层的帧头(如以太网帧头),提取出内部的IP数据包
  3. 路由器查看IP数据包的报头(Header),重点关注目标IP地址(Destination IP Address),也就是 8.8.8.8
2.3.6.3 步骤 3:查询路由表(Routing Table Lookup)

这是最核心的一步。路由器内部维护着一张“网络地图”——路由表(Routing Table)。路由表就像是一个路标,告诉路由器去往某个网络应该从哪个端口走。

一个简化的路由表可能长这样:

目标网络 (Destination Network)子网掩码 (Netmask)网关/下一跳 (Gateway/Next Hop)接口 (Interface)度量值 (Metric)
192.168.1.0255.255.255.0* (直接连接)LAN0
10.0.0.0255.0.0.0192.168.5.1WAN10
0.0.0.00.0.0.0100.64.1.1WAN1
  • 第一条:是直连路由。表示所有发往 192.168.1.0/24 这个网段的数据,直接从 LAN 口发出即可,因为设备就连接在这个口上。
  • 第二条:是静态路由或动态路由协议学来的。表示去往 10.0.0.0/8 网络,需要先把数据包发给 192.168.5.1 这个下一跳路由器,通过 WAN 口发出。
  • 第三条默认路由(Default Route)。这是最重要的条目。它就像一个“包治百病”的指示牌:如果你不知道数据包该往哪去,就把它发给 100.64.1.1(通常是运营商的路由器)0.0.0.0/0 匹配任何目标地址。

现在,路由器拿着目标地址 8.8.8.8,开始逐条与路由表进行最长前缀匹配

  • 它不会匹配第一条 (192.168.1.0/24)。
  • 它不会匹配第二条 (10.0.0.0/8)。
  • 最终会匹配第三条 (0.0.0.0/0),因为默认路由匹配所有地址。

于是,路由器决定:将这个数据包通过 WAN 接口,发送给下一跳地址 100.64.1.1

2.3.6.4 步骤 4: 转发与重封装(Forwarding and Re-encapsulation)
  1. 路由器将原始的IP数据包(源IP是你电脑的 192.168.1.100,目标IP是 8.8.8.8)几乎原封不动地准备好。
  2. 但是,数据链路层需要重新封装。因为从 WAN 口发出,使用的是PPPoE、DHCP等广域网协议。路由器会创建一个新的数据链路层帧头,其中的:
    • 源MAC地址 改为路由器WAN口的MAC地址。
    • 目标MAC地址 改为下一跳路由器(100.64.1.1)的MAC地址(通过ARP协议获取)。
  3. 然后,路由器通过 WAN 物理接口将这个重新封装好的数据帧发送出去。
2.3.6.5 步骤 5:网络地址转换(NAT - 家用到公网的关键)

这里有一个至关重要的步骤:网络地址转换(NAT)

  • 问题:你家网络的IP 192.168.1.100私有IP地址,不能在公网上被路由。互联网只认识你的路由器从运营商那里获取的公网IP(例如 203.0.113.10)。
  • 解决:在数据包通过WAN口发出之前,路由器会执行NAT操作:
    1. 它修改IP数据包的源IP地址,从 192.168.1.100 改为自己的公网IP 203.0.113.10
    2. 同时,它会修改传输层(如TCP/UDP)的源端口号,将其映射为一个随机的高位端口(例如 60500)。
    3. 路由器会创建一条NAT转换表记录下这个映射关系:(内网IP:端口 -> 公网IP:端口),即 (192.168.1.100:54321 -> 203.0.113.10:60500)

这样,当谷歌服务器回包时,目标地址就是 203.0.113.10:60500。路由器收到回包后,查询NAT表,就能准确地将回包的目标IP和端口转换回 192.168.1.100:54321,并发送给你的电脑。

2.3.6.6 步骤 6:旅程继续

这个数据包现在交给了运营商网络。运营商的各级核心路由器会重复上述 步骤2-4,根据自己庞大的路由表,一跳一跳(Hop-by-Hop)地将数据包最终送达谷歌的服务器。谷歌的回复则沿着相反的路径返回。


2.3.7、核心组件与技术支撑

  • 路由表生成方式

    • 直连路由 (Direct Routes):路由器自动添加其直接连接的网段。
    • 静态路由 (Static Routes):由网络管理员手动配置。简单可靠,适用于小型网络。
    • 动态路由协议 (Dynamic Routing Protocols):如 OSPF, BGP, RIP。路由器之间相互通信,自动交换网络信息,并动态计算和更新路由表。适用于大型复杂网络,能自动适应网络拓扑变化(如线路故障)。
  • 硬件组成

    • CPU:处理路由协议、管理配置、执行NAT等高级功能。
    • RAM/内存:存放路由表ARP缓存NAT转换表以及运行时的数据包缓存(快取)。重启会丢失。
    • NVRAM:存储启动配置文件(startup-config)。
    • Flash:存储路由器的操作系统(如Cisco的IOS)。
    • 网络接口 (Interfaces):多个LAN口和WAN口,用于连接不同网络。

2.3.8 路由工作原理小结

路由器的工作原理可以概括为以下流程:

接收数据包 -> 解封装至网络层 -> 提取目标IP -> 查询路由表(最长匹配)-> 决定出口接口和下一跳 -> (可选)执行NAT -> 根据出口链路协议重新封装数据链路层帧 -> 转发数据包

它通过路由表决定“去哪”,通过转发引擎执行“怎么走”,再借助NAT等技术解决了公私网地址转换的问题,从而成为了互联网这个“网络的网络”的核心枢纽。

2.4 ICMP协议

ICMP(Internet控制报文协议)是网络层的辅助协议,主要用于错误报告和网络诊断。

2.4.1 ICMP功能

  • 网络故障报警:显示目标不可达、超时等错误报告
  • 网络诊断工具:ping、traceroute(windows(tracert))等

2.4.2 ICMP封装过程

ICMP报文被封装在IP数据包中(协议号=1),IP包再被封装在数据链路层帧中。

2.5 ping命令

ping命令用于测试网络连通性,常用参数:

  • -t:持续ping(Windows)
  • -a:显示主机名
  • -l:设置ping包大小
  • -n:指定发送包的数量
  • -S:指定源IP地址

2.6 ARP协议详解

ARP(Address Resolution Protocol)是地址解析协议,负责在网络层IP地址和数据链路层MAC地址之间建立映射关系。

2.6.1 ARP协议工作原理深度解析

ARP请求过程

  1. 检查本地ARP缓存:主机在发送数据前,首先检查自己的ARP缓存表,看是否已有目标IP对应的MAC地址
  2. 构建ARP请求包:如果缓存中没有,主机构建一个ARP请求报文,包含:
    • 源IP地址和源MAC地址
    • 目标IP地址(要解析的地址)
    • 目标MAC地址设为全0(00:00:00:00:00:00)
  3. 广播ARP请求:将ARP请求包封装在以太网帧中,目标MAC地址设为广播地址(FF:FF:FF:FF:FF:FF),发送到本地网络
  4. 交换机处理:交换机收到广播帧后,将其泛洪到所有端口(除接收端口外)

ARP响应过程

  1. 接收ARP请求:网络中的所有主机都会收到ARP请求
  2. 地址匹配检查:每台主机检查请求中的目标IP是否与自己的IP匹配
  3. 丢弃或响应
    • 不匹配的主机:丢弃ARP请求包
    • 匹配的主机:准备ARP响应
  4. 构建ARP响应:目标主机构建ARP响应包,包含:
    • 自己的MAC地址
    • 请求主机的IP和MAC地址
  5. 单播发送响应:将ARP响应包直接发送给请求主机(使用请求包中的源MAC地址)

缓存更新机制

  • 动态表项:通过ARP协议学习到的表项,有生存时间(通常120-300秒)
  • 静态表项:手动配置的表项,永久有效
  • 老化机制:定期清理未使用的动态表项

2.6.2 ARP缓存表管理

ARP缓存表是ARP协议的核心数据结构,在完成一次由IP地址到MAC地址的转化后,将会在双方的ARP缓存表中进行“双向学习”,双方的ARP缓存表都存在双方对IP地址和MAC地址的对应信息,包含以下字段:

  • IP地址:网络层地址
  • MAC地址:对应的物理地址
  • 类型:动态或静态
  • 生存时间:表项的有效期
  • 接口:对应的网络接口

2.6.3 代理ARP

特殊场景下的ARP应用:

  • 路由器代理ARP:路由器代表其他网段的主机响应ARP请求
  • ARP欺骗检测:网络设备监控异常ARP流量

2.6.4 免费ARP

主机定期发送的ARP请求,用于:

  • 地址冲突检测:检测IP地址是否被其他设备使用
  • 更新邻居缓存:通知其他设备MAC地址变化

2.7 ARP相关命令

  • arp -a:查看ARP缓存表
  • arp -d [IP]:删除ARP表项
  • arp -s IP MAC:静态绑定

2.7.1 ARP攻击与防御

攻击原理:伪造ARP应答,实现中间人攻击

攻击类型

  • 欺骗攻击:伪造IP-MAC映射
  • 泛洪攻击:发送大量ARP请求耗尽资源
  • 拒绝服务:通过虚假ARP响应阻断通信

防御措施

  • 静态ARP绑定:手动配置重要设备的IP-MAC映射
  • 动态ARP检测:交换机监控ARP流量,过滤异常包
  • ARP监控软件:使用工具检测ARP欺骗
  • 网络分段:减少广播域范围
  • 加密通信:使用HTTPS/SSH防止数据窃取

2.8 tracert/traceroute命令

用于追踪数据包路径,显示经过的路由器信息。


三、传输层协议

3.1 TCP/IP传输层协议

传输层提供端到端的通信服务,主要协议:

  • TCP:面向连接的可靠传输
  • UDP:无连接的不可靠传输

3.2 TCP协议详解

3.2.1 TCP特点

  • 面向连接
  • 可靠传输
  • 流量控制
  • 拥塞控制

3.2.2 TCP报文段格式

  • 源端口号(16位):发送方端口
  • 目标端口号(16位):接收方端口
  • 序号(32位):数据字节编号
  • 确认号(32位):期望收到的下一个序号
  • 首部长度(4位):TCP头部长度
  • 控制标志(6位):
    • URG:紧急指针有效
    • ACK:确认有效
    • PSH:推送功能
    • RST:重置连接
    • SYN:同步序号
    • FIN:结束连接
  • 窗口大小(16位):流量控制
  • 校验和(16位):差错检测
  • 紧急指针(16位):紧急数据位置
  • 选项:可变长度选项字段

3.2.3 TCP三次握手详解

TCP三次握手是建立可靠连接的关键过程,确保双方都具有发送和接收能力。

第一次握手(SYN)

  • 客户端发送SYN包(SYN=1)到服务器
  • 随机生成初始序列号(Seq=x)
  • 客户端进入SYN_SENT状态
  • 目的:客户端向服务器发起连接请求,告知自己的初始序列号

第二次握手(SYN+ACK)

  • 服务器收到SYN包后,如果同意建立连接
  • 发送SYN+ACK包(SYN=1, ACK=1)
  • 确认号设置为x+1(Ack=x+1)
  • 随机生成服务器的初始序列号(Seq=y)
  • 服务器进入SYN_RECEIVED状态
  • 目的:服务器确认客户端的连接请求,同时发起自己的连接请求

第三次握手(ACK)

  • 客户端收到SYN+ACK包后
  • 发送ACK包(ACK=1)确认
  • 确认号设置为y+1(Ack=y+1)
  • 序列号设置为x+1(Seq=x+1)
  • 双方进入ESTABLISHED状态
  • 目的:客户端确认服务器的连接请求,完成连接建立

技术细节

  • 序列号随机化:防止TCP序列号预测攻击
  • 超时重传:如果未收到响应,会重传SYN包
  • 半连接队列:服务器维护未完成握手的连接队列
  • SYN Flood攻击防护:使用SYN Cookie等机制

3.2.4 TCP四次挥手详解

TCP四次挥手是正常终止连接的过程,确保数据完全传输后才断开连接。

第一次挥手(FIN)

  • 主动关闭方(如客户端)发送FIN包(FIN=1)
  • 序列号为当前序列号(Seq=u)
  • 进入FIN_WAIT_1状态
  • 含义:我已经没有数据要发送了

第二次挥手(ACK)

  • 被动关闭方(如服务器)收到FIN包
  • 发送ACK包确认(ACK=1)
  • 确认号为u+1(Ack=u+1)
  • 服务器进入CLOSE_WAIT状态
  • 客户端进入FIN_WAIT_2状态
  • 含义:我知道你没有数据要发了,但我可能还有数据要发

第三次挥手(FIN)

  • 服务器完成数据发送后
  • 发送FIN包(FIN=1)
  • 序列号为v(Seq=v)
  • 服务器进入LAST_ACK状态
  • 含义:我也没有数据要发了

第四次挥手(ACK)

  • 客户端收到FIN包后
  • 发送ACK包确认(ACK=1)
  • 确认号为v+1(Ack=v+1)
  • 客户端进入TIME_WAIT状态
  • 等待2MSL(最大报文段生存时间)后关闭
  • 服务器收到ACK后立即关闭

关键技术点

TIME_WAIT状态的重要性

  • 确保最后一个ACK能够到达
  • 允许旧的重复分组在网络中消逝
  • 默认等待时间为2MSL(通常为60-120秒)

半关闭状态

  • 一方发送FIN后仍可接收数据
  • 允许单向数据传输继续

同时关闭

  • 双方同时发起FIN的情况
  • 需要特殊处理序列号

异常处理

  • RST包:强制终止连接
  • Keepalive机制:检测空闲连接是否存活

3.2.5 半关闭状态

TCP连接可以处于半关闭状态,一方停止发送数据但仍可接收数据。

3.2.6 TIME_WAIT状态

确保最后一个ACK丢失后能够重传,防止旧连接的数据包干扰新连接。

3.3 UDP协议详解

3.3.1 UDP特点

  • 无连接
  • 不可靠传输
  • 开销小
  • 速度快

3.3.2 UDP报文格式

  • 源端口号(16位)
  • 目标端口号(16位)
  • 长度(16位):UDP报文总长度
  • 校验和(16位):可选差错检测

3.4 常见应用层协议端口

3.4.1 TCP协议端口:

  • HTTP/HTTPS:80/443
  • FTP:21
  • SMTP:25
  • TELNET:23
  • POP3:110
  • DNS:53
  • MySQL:3306

3.4.2 UDP协议端口:

  • DNS:53
  • NTP:123
  • DHCP:67/68
  • SNMP:161
  • TFTP:69
  • RPC:111

3.5 TCP与UDP对比

特性TCPUDP
连接方式面向连接无连接
可靠性可靠传输不可靠传输
速度较慢较快
开销较大较小
适用场景文件传输、网页浏览视频通话、在线游戏

总结

本文全面介绍了从数据链路层到传输层的网络通信原理,重点详细讲解了交换机工作原理、路由器原理、ARP协议、TCP三次握手与四次挥手等核心技术。

交换机工作原理:基于MAC地址学习和转发,通过MAC地址表实现高效的数据帧转发,支持多种工作模式和环路避免机制。

路由器原理:基于IP地址和路由表进行跨网络数据转发,支持静态和动态路由协议,实现网络互联和流量控制。

ARP协议:完成IP地址到MAC地址的解析,通过请求-响应机制建立地址映射,存在安全风险但有多重防护机制。

TCP连接管理:通过精确的三次握手建立可靠连接,通过四次挥手优雅终止连接,确保数据传输的完整性和可靠性。

层级核心协议主要功能
数据链路层以太网、交换机MAC地址转发
网络层IP、ICMP、ARPIP寻址、路由选择
传输层TCP、UDP端到端通信

这些技术共同构成了现代互联网的基础架构,理解这些原理对于网络设计、故障排查和安全防护都至关重要。希望本文能为读者提供扎实的网络基础。
最后,希望大家多多实践,夯实基础,聚沙成塔,与君共勉之!

http://www.xdnf.cn/news/18206.html

相关文章:

  • 用 C++ 构建高性能测试框架:从原型到生产实战指南
  • cursor+mcp-clickhouse进行数据分析
  • 无人机/航测/三维建模领域常见的“航线规划或建模方式
  • 【CPP】一个CPP的Library(libXXXcore)和测试程序XXX_main的Demo
  • 深入解析:Unity、Unreal Engine与Godot引擎中的Uniform变量管理
  • 易基因:常见生信分析图细节解析(第一期)
  • 通信方式:命名管道
  • 【科研绘图系列】R语言绘制多种小提琴和云雨图
  • Redisson 分布式锁核心机制解析
  • Hive 存储管理测试用例设计指南
  • GaussianLSS
  • RxJava 在 Android 即时通讯中的应用:封装、处理与控制
  • 基于zephyr使用stm32的LTDC点亮ARGB8888LCD触摸屏
  • 服务器数据恢复—硬盘坏道离线导致raid崩溃的StorNext文件系统数据恢复案例
  • 【服务器】Apache Superset功能、部署与体验
  • 解决 UniApp 自定义弹框被图片或 Canvas 覆盖的 Bug
  • 代码随想录算法训练营四十六天|图论part04
  • MFC中使用EXCEL的方法之一
  • UDI数据库应用之后端本地数据库搭建实战(二)
  • 【高并发内存池】一、简介 定长内存池实现
  • 156-基于Flask的北京市商铺数据可视化分析系统
  • k8sday11服务发现(2/2)
  • 微服务如何集成swagger3
  • 工业相机基本知识解读:像元、帧率、数据接口等
  • 解决linux中磁盘爆满(准确说是文件系统爆满)导致mysql启动失败的问题——对文件系统进行扩容
  • 微信小程序实现蓝牙开启自动播放BGM
  • Git#revert
  • Ansible 角色管理指南
  • UART串口通信编程自学笔记30000字,嵌入式编程,STM32,C语言
  • 【Linux仓库】进程创建与进程终止【进程·柒】