网络通信基础:从数据链路层到传输层
文章目录
- 前言
- 一、数据链路层与交换机原理
- 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 以太网发展历程
以太网技术经历了多个发展阶段:
- 实验性以太网(1973年,2.94 Mbps)
- DIX与IEEE 802.3标准(1980年,10 Mbps)
- 10兆以太网应用(10BASE5、10BASE2、10BASE-T)
- 快速以太网(1995年,100 Mbps,IEEE 802.3u)
- 千兆以太网(1998年,1000 Mbps,IEEE 802.3z/ab)
- 后续发展:万兆(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 Address | Port |
---|---|
AA:BB:CC:00:11:01 | Fa0/1 |
AA:BB:CC:00:11:02 | Fa0/2 |
AA:BB:CC:00:11:03 | Fa0/3 |
1.5.1.2 法宝一:学习(Learning)—— “认识新邻居”
交换机通过检查收到的数据帧的源MAC地址来学习设备的位置。
- 初始状态:刚启动时,MAC地址表是空的。
- 接收帧:假设电脑A(MAC地址:
AA:BB:CC:00:11:01
,连接在端口Fa0/1
)发送一个数据帧给电脑B。 - 学习过程:交换机从
Fa0/1
口收到这个帧,它一看帧头的源MAC地址是AA:BB:CC:00:11:01
。 - 更新表项:交换机立刻在MAC地址表中创建一条记录:MAC地址
AA:BB:CC:00:11:01
对应端口Fa0/1
。 - 持续进行:这个过程对每个端口收到的每一个数据帧都会进行。很快,交换机就能学习到所有活跃设备的MAC地址和端口对应关系。
这个过程是完全自动的,无需任何配置。
1.5.1.3 法宝二:转发与过滤(Forwarding/Filtering)—— “精准投递”
交换机通过检查收到的数据帧的目标MAC地址,并查询MAC地址表来决定如何发送。
- 查询表项:继续上面的例子,现在交换机要处理这个目标是电脑B(MAC:
AA:BB:CC:00:11:02
)的帧。 - 情况一:已知单播(Known Unicast)—— 精准转发
- 交换机在MAC地址表中查到了
AA:BB:CC:00:11:02
对应的端口是Fa0/2
。 - 行动:交换机仅将这个数据帧从
Fa0/2
端口转发出去。 - 优点:其他端口(如
Fa0/3
,Fa0/4
)完全看不到这个帧,既节省带宽,又保证了通信的私密性。这就是过滤。
- 交换机在MAC地址表中查到了
- 情况二:未知单播(Unknown Unicast)—— 泛洪
- 如果交换机查表,发现目标MAC地址
AA:BB:CC:00:11:02
不在表中(比如电脑B还没发过数据)。 - 行动:交换机会将这个数据帧从除了接收端口(Fa0/1)之外的所有其他端口发送出去。这个行为称为泛洪(Flooding)。
- 目的:虽然效率低,但能确保即使不知道目标在哪,数据也能被送达。当电脑B收到这个帧并回复时,交换机就能通过“学习”过程知道它的位置了。
- 如果交换机查表,发现目标MAC地址
1.5.1.4 法宝三:泛洪(Flooding)—— “大喇叭广播”
泛洪不仅用于未知单播帧,还用于以下两种特殊帧:
- 广播(Broadcast)
- 目标MAC地址是
FF:FF:FF:FF:FF:FF
(全是F)。 - 行动:交换机必须将其从所有端口(除接收端口外)转发出去。因为广播帧是发给局域网内所有人的(例如ARP请求)。
- 目标MAC地址是
- 组播(Multicast)
- 目标MAC地址是一个特定的组播地址。
- 默认行动:默认情况下,交换机会像处理广播一样将其泛洪。但可以通过高级功能(如IGMP Snooping)来优化,只发给感兴趣的设备。
1.5.1.5 工作流程举例
假设一个拥有4个端口的交换机,连接着三台电脑:
- 学习A:A(
MACA
)发给B(MACB
)一个数据帧。交换机从端口1收到,学习到MACA
在端口1,并将此条目加入MAC表。 - 泛洪:交换机查询MAC表,找不到
MACB
。于是将帧从端口2、3、4泛洪出去。 - 学习B:B收到了这个帧,并回复A。回复帧的源地址是
MACB
,目标地址是MACA
。交换机从端口2收到,学习到MACB
在端口2。 - 精准转发:交换机查询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 高级特性与硬件支撑
- 消除冲突:交换机的每个端口都是一个独立的冲突域。它使用全双工通信,允许设备同时发送和接收数据,从而完全避免了早期集线器(Hub)带来的冲突问题。
- 硬件转发:现代交换机使用ASIC(专用集成电路) 芯片来执行查表和转发操作,速度极快,接近线速(Wire Speed)。
- MAC地址老化:MAC地址表中的条目不是永久存在的。如果一段时间(例如300秒)内没有收到某个MAC地址发来的帧,该条目会被自动删除。这是为了适应网络拓扑的变化(比如设备更换了端口)。
- 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 路由决策过程
- 接收数据包:从某个接口接收IP数据包
- 提取目标IP:读取数据包头部中的目标IP地址
- 最长前缀匹配:在路由表中查找最匹配的路由条目
- 选择最佳路径:根据度量值选择最优路径
- 转发数据包:通过出接口转发到下一跳
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:判断目的地(路由判断)
- 你的电脑首先会判断,目标
8.8.8.8
是否和自己在同一个网段。 192.168.1.100
的子网掩码通常是255.255.255.0
,这意味着本地网段是192.168.1.0/24
。而8.8.8.8
显然不在这个网段内。- 因此,你的电脑会将这个数据包发往默认网关(Default Gateway),也就是你家路由器的局域网IP地址(例如
192.168.1.1
)。
2.3.6.2 步骤 2:数据包到达路由器(接收与解封装)
- 数据包通过Wi-Fi或网线到达路由器的局域网(LAN)接口。
- 路由器会解封装数据链路层的帧头(如以太网帧头),提取出内部的IP数据包。
- 路由器查看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.0 | 255.255.255.0 | * (直接连接) | LAN | 0 |
10.0.0.0 | 255.0.0.0 | 192.168.5.1 | WAN | 10 |
0.0.0.0 | 0.0.0.0 | 100.64.1.1 | WAN | 1 |
- 第一条:是直连路由。表示所有发往
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)
- 路由器将原始的IP数据包(源IP是你电脑的
192.168.1.100
,目标IP是8.8.8.8
)几乎原封不动地准备好。 - 但是,数据链路层需要重新封装。因为从
WAN
口发出,使用的是PPPoE、DHCP等广域网协议。路由器会创建一个新的数据链路层帧头,其中的:- 源MAC地址 改为路由器WAN口的MAC地址。
- 目标MAC地址 改为下一跳路由器(
100.64.1.1
)的MAC地址(通过ARP协议获取)。
- 然后,路由器通过
WAN
物理接口将这个重新封装好的数据帧发送出去。
2.3.6.5 步骤 5:网络地址转换(NAT - 家用到公网的关键)
这里有一个至关重要的步骤:网络地址转换(NAT)。
- 问题:你家网络的IP
192.168.1.100
是私有IP地址,不能在公网上被路由。互联网只认识你的路由器从运营商那里获取的公网IP(例如203.0.113.10
)。 - 解决:在数据包通过WAN口发出之前,路由器会执行NAT操作:
- 它修改IP数据包的源IP地址,从
192.168.1.100
改为自己的公网IP203.0.113.10
。 - 同时,它会修改传输层(如TCP/UDP)的源端口号,将其映射为一个随机的高位端口(例如
60500
)。 - 路由器会创建一条NAT转换表记录下这个映射关系:
(内网IP:端口 -> 公网IP:端口)
,即(192.168.1.100:54321 -> 203.0.113.10:60500)
。
- 它修改IP数据包的源IP地址,从
这样,当谷歌服务器回包时,目标地址就是 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请求过程:
- 检查本地ARP缓存:主机在发送数据前,首先检查自己的ARP缓存表,看是否已有目标IP对应的MAC地址
- 构建ARP请求包:如果缓存中没有,主机构建一个ARP请求报文,包含:
- 源IP地址和源MAC地址
- 目标IP地址(要解析的地址)
- 目标MAC地址设为全0(00:00:00:00:00:00)
- 广播ARP请求:将ARP请求包封装在以太网帧中,目标MAC地址设为广播地址(FF:FF:FF:FF:FF:FF),发送到本地网络
- 交换机处理:交换机收到广播帧后,将其泛洪到所有端口(除接收端口外)
ARP响应过程:
- 接收ARP请求:网络中的所有主机都会收到ARP请求
- 地址匹配检查:每台主机检查请求中的目标IP是否与自己的IP匹配
- 丢弃或响应:
- 不匹配的主机:丢弃ARP请求包
- 匹配的主机:准备ARP响应
- 构建ARP响应:目标主机构建ARP响应包,包含:
- 自己的MAC地址
- 请求主机的IP和MAC地址
- 单播发送响应:将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对比
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接 | 无连接 |
可靠性 | 可靠传输 | 不可靠传输 |
速度 | 较慢 | 较快 |
开销 | 较大 | 较小 |
适用场景 | 文件传输、网页浏览 | 视频通话、在线游戏 |
总结
本文全面介绍了从数据链路层到传输层的网络通信原理,重点详细讲解了交换机工作原理、路由器原理、ARP协议、TCP三次握手与四次挥手等核心技术。
交换机工作原理:基于MAC地址学习和转发,通过MAC地址表实现高效的数据帧转发,支持多种工作模式和环路避免机制。
路由器原理:基于IP地址和路由表进行跨网络数据转发,支持静态和动态路由协议,实现网络互联和流量控制。
ARP协议:完成IP地址到MAC地址的解析,通过请求-响应机制建立地址映射,存在安全风险但有多重防护机制。
TCP连接管理:通过精确的三次握手建立可靠连接,通过四次挥手优雅终止连接,确保数据传输的完整性和可靠性。
层级 | 核心协议 | 主要功能 |
---|---|---|
数据链路层 | 以太网、交换机 | MAC地址转发 |
网络层 | IP、ICMP、ARP | IP寻址、路由选择 |
传输层 | TCP、UDP | 端到端通信 |
这些技术共同构成了现代互联网的基础架构,理解这些原理对于网络设计、故障排查和安全防护都至关重要。希望本文能为读者提供扎实的网络基础。
最后,希望大家多多实践,夯实基础,聚沙成塔,与君共勉之!