IP三层转发详解
1.网络层的定义
网络层(network layer ):它位于OSI模型中的第三层,介于运输层与数据链路层之间,提供发信端到目标端之间的信息传输服务。网络层的数据以IP数据报的形式传输。2.IP协议
IP提供了不可靠,无连接的数据报传送服务。它定义了在互联网上传输数据的具体格式。IP实现两个基本功能:寻址及分片。IP地址由网络号和主机号两部分组成,网络号标识互联网中的一个特定网络,主机号标识在该网络中的一台特定主机,最常用的地址表示方法是点分十进制法。如:192.168.10.1关于IP协议的具体讲解见《TCP/IP 基础学习》
3.ARP
ARP,即地址解析协议,实现通过IP地址到物理地址的映射。在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址,而在TCP/IP协议栈中网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。
4.基本转发的概念
在数据通信网络中,设备之间的通信基本上是根据TCP/IP协议,在IP网络中运行的特定功能的设备,都可以称之为端系统,PC是一种最常见的端系统,网络中路由器、交换机就是用来互联不同的端系统,让它们进行透明的通信。三层转发基本原理
二层转发是一种基于OSI中的数据链路层的数据帧的存储转发技术,二层交换是依靠MAC地址和VID号来确定转发方向的。那么,三层转发和二层转发有什么区别呢?
- 数据转发依靠的关键字不同,二层转发主要依靠MAC地址,而三层转发主要依靠IP地址。
- 数据交换的范围不同,二层交换指在同一网段内的通信,三层交换指跨网段的通信。
- 在三层转发的过程中,还要进行二层的封装。也就是说,在转发过程中二层帧头中的(源、目的)MAC地址是要改变的。但是IP数据报中的源IP和目的IP地址是不会改变的
5.IP路由表
路由是IP层转发的依据,如下图
- 直连路由–本地接口IP网段对应的路由,优先级最高
- 静态路由-手工配置的路由,优先级较高
- 动态路由-各种路由协议产生的路由优先级有高有低由匹配
路由的匹配原则是最长路径匹配原则,详见另一片文章《IP发展史》
6.三层转发举例
PC1准备向PC2发送数据包
- PC1检查报文的目的IP地址,发现和自己不在同一网段,则需要进行三层转发,通过网关转发报文信息
- PC1检查自己的ARP表,发现网关的MAC地址不在自己的ARP表里;PC1向Router发起arp请求
- PC1—>Router(网关)发出ARP请求报文
- Router将PC1的MAC地址学习到自己的ARP表
- Router(网关)—>PC1发出ARP应答报文
- PC1学习到Router(网关)的mac地址,发出报文,此时源ip、目的ip不变,目的mac为Router(网关)的mac
- PC1—> Router(网关)发出报文
- Router(网关)收到报文,会将数据提交给上层IP协议栈
- Router(网关)检查自己的路由表,发现目的IP在自己的直连网段
- Router检查自己的arp表,如果发现有与目的ip对应的mac地址则直接封装报文(目的ip、源ip不变,目的mac为查arp表所得mac)发送给PC2
- 如果查ARP表没有得到与目的ip对应MAC,则重复(3)发arp请求
- PC2收到ARP广播报文,发现目的IP是自己的IP,于是给Router发送ARP应答报文。报文中会附上自己的mac地址。
- Router收到应答报文后,目的mac改为PC2的mac,然后向PC2发送数据帧。
- PC2向Router发送报文
- Router收到报文后,向PC1转发报文
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!