网络层概述
- 网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间。
- 它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。
- 简单的说网络层负责定义数据通过网络流动所经过的路径。
- 主要功能总结
- 定义了基于 IP 协议的逻辑地址
- 选择数据通过网络的最佳路径
- 连接不同的媒介类型
- 主要内容
- 虚电路分组交换和数据报分组交换
- 路由选择算法
- 阻塞控制方法
- X.25协议
- 综合业务数据网(ISDN)
- 异步传输模式(ATM)
- 网际互连原理与实现
网络层关键技术
- 路由选择算法
- 数据包转发机制
- IP协议
核心技术与功能
路由选择算法
这是网络层的核心功能之一,用于确定数据包传输的最优路径。常见的算法包括:
- 距离向量算法(如RIP):通过相邻节点交换路由信息,计算最短路径。
- 链路状态算法(如OSPF):基于全局网络拓扑信息构建路由表,适用于复杂网络环境。
- 路径向量算法(如BGP):主要用于自治系统间的路由选择。
数据包转发机制
- 网络层根据路由表将数据包从源地址转发到目标地址,涉及路由表查询、下一跳地址匹配等操作。
- 现代路由器采用高效的数据结构(如最长前缀匹配算法)提升转发效率。
逻辑地址分配与IP协议
- IPv4/IPv6协议:IPv4使用32位地址,IPv6扩展至128位地址,解决地址枯竭问题并增强安全性。
- 地址解析协议(ARP):将IP地址映射为物理MAC地址,确保数据链路层正确传输。
- ICMP协议:用于网络状态监测与错误反馈(如ping命令)。
关键技术拓展
流量控制与拥塞管理
- 通过丢包策略、流量整形等机制避免网络拥塞,例如TCP拥塞控制与网络层的协同工作。
通信协议协同
- 短距离通信协议(如蓝牙、ZigBee)通常应用于物联网场景,与网络层的长距离协议(如IP)配合完成端到端数据传输。
- 超宽带(UWB)技术通过脉冲无线电实现高精度定位,延伸了网络层的应用范围。
典型应用场景
- 企业级路由OSPF协议在大型企业网络中广泛使用,支持动态路由更新。
- 物联网ZigBee网络通过低功耗协议实现传感器数据的汇聚与转发。
- 互联网骨干网BGP协议确保跨运营商网络的稳定互联。
网络层核心协议
- TCP/IP网络层的核心是IP协议,它是TCP/IP协议族中最主要的协议之一。
- 在TCP/IP协议族中,网络层协议包括:
- IP协议(网际协议)
- ICMP协议(Internet互联网控制报文协议),
- ARP 协议(地址解析协议)
- IGMP协议(Internet组管理协议)等
IPv4
- 网际协议版本4(英语:InternetProtocolversion4,IPv4),又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。
- IPv4是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6,直到2019年,IPv4位址完全用尽时,IPv6仍处在部署的初期。
- IPv4的核心技术包括IPv4地址分配规则、IP数据报文格式、网络的分组交换机制及路由选择等。
- 这些技术共同构成了IPv4的基本功能,使得它可以在全球范围内有效地管理和分配网络地址,并实现数据包的路由和传输。
- 特殊的IP地址:均不能指派给任何一个主机使用
- 主机号全0→网络本身,只能用于路由表,转发表
- 主机号全1→广播地址,向目的网络整个网络(网络号相同的)广播
- 主机号为nbit的网络,最多可支持台主机+路由器
- 网路号全0,主机号非0→表示本网络中主机号对应的主机(不能做目的地址)
- 网络号、主机号全0→本网络上的本主机(不能做目的地址,用于DHCP协议)
- 网络号、主机号全1→向本网络上的主机广播(不能做源地址)
- 网络号为127,主机号非全0或非全1→环回自检地址(不会被发上网络,会从网络层发回自己)
IP数据报文格式
- TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报,由首部和数据两部分组成
- 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的
- 在首部的固定部分的后面是一些可选字段,其长度是可变的
- 首部中的源地址和目的地址都是IP协议地址
IP头格式
中文名 | 英文名 | 长度(bit) | 解释 |
---|---|---|---|
版本 | Version | 4 | IP协议版本号,固定为4 |
首部长度 | Internet Header Length,IHL | 4 | 以4字节为单位,最小值5 (20Byte),最大值15 (60Byte) |
服务类型 | Type of Service,TOS | 8 | 几乎不用 |
总长度 | Total Length | 16 | 整个数据报的长度,2^16-1=65535字节,不过由于链路层的MTU限制,超过1480 字节后就会被分片(以太帧MTU最大为1500-固定首部20) |
标识 | Identification | 16 | 报文的唯一标识 |
标志 | Flag | 3 | 是否分片的标志。 DF:Don’t Fragment;MF:More Fragment DF=1:不能分片,DF=0:允许分片 MF=1:后面还有分片,MF=0:最后一个 |
片偏移 | Fragment Offset | 13 | 分片在原分组中的相对位置,以8个字节为偏移单位 |
生存时间 | Time To Live, TTL | 8 | 数据报可以经过的最多路由器数,每经一个,值减1,为时丢弃该报文 |
协议 | Protocol | 8 | 封装的协议类型:ICMP(1)、IGMP(2)、TCP(6)、UDP(17) |
头部校验和 | Header CheckSum | 16 | 仅校验数据报的首部,使用二进制反码求和 |
源地址 | Source Address | 32 | 源IP 地址 |
目的地址 | Destination Address | 32 | 目标IP地址 |
可选项 | Options | 可变 | 主要用于测试 |
填充 | Padding | 填充0,确保首部长度为4字节的整数倍 | |
数据 | Data | 报文数据部分 |
主机发送IP数据报过程
路由器转发IP数据报过程
IP分组转发
IP分组转发是指在互联网络中路由器根据IP分组的目的地址,将其从接收接口转发到合适的输出接口的过程。
主要步骤:
- 提取目的IP地址
路由器从接收到的数据包中提取目的IP地址,这是转发决策的基础。 - 判断是否直接相连
路由器检查目的IP地址是否与自身直接相连的网络匹配。如果匹配,数据包将直接交付给该网络。 - 查找路由表
如果目的网络不直接相连,路由器会查询其路由表,寻找与目的IP地址最匹配的路由。 - 最长前缀匹配
当存在多个匹配的路由时,路由器会选择具有最长前缀的路由,以确保最精确的转发。 - 使用默认路由
如果路由表中没有匹配的路由,路由器会使用默认路由,将数据包转发给指定的下一跳地址。 - 转发数据包
路由器将数据包从相应的输出接口转发出去,继续向目的网络传输。 - 地址解析
在转发过程中,路由器可能需要使用ARP协议将IP地址解析为MAC地址,以便在数据链路层进行传输。
通过这些步骤,IP分组能够在复杂的网络环境中被准确地转发到目的地。
IP地址分配
- 网络号用户(公司或学校等)申请时统一分配的,主机号是用户自己给每台主机设定的
- 每台主机,每个路由器接口分配的IP地址全球唯一
- 路由器与路由器相连的接口可以不分配IP,但与其他结点相连的一定要分配
- 同一个网络下的主机、路由器接口网络号相同
- 每台主机接入网络时都要分配IP地址,配置默认网关
- 默认网关指主机接入互联网要经过的路由器接口的IP地址
- 主机接入互联网有多个路由可选时,选择其中一个
子网划分知识补充
- 对于没有进行子网划分的网络,在IP分组转发时本质其实和划分了子网的一致
- 在路由器转发IP分组时,先根据高几位去判断这是ABC哪一类网络,然后将其和路由表目的网络高8/16/24位对比是否一致,判断该从哪个接口转发(主机接收同理)
- 在主机发送时,也是先检查目的IP与自己是否在一个网络:判断自己是哪类网络,再用网络号与目的IP的对应位数相比,一致则不经过路由器转发
- 不一致说明不是同一个网络,将IP数据报送至默认网关,将目的地址的主机号置0后与转发表的目的网络号逐行对比,看从哪个端口转发出去
ICMP协议
- ICMP(Internet Control MessageProtocol,互联网控制报文协议)是TCP/IP协议族中的一个重要协议,主要用于IP主机和路由器之间传递控制信息和错误消息。
- ICMP 是一个“错误侦测与回馈机制”,通过IP数据包封装,用来发送错误和控制消息。
- 其目的是使管理员能够掌握网络的连通状况。
- ICMP位于OSI参考模型的网络层(第三层),是IP协议的一部分。ICMP是一个面向消息的协议,它的消息嵌入在IP数据包中,由IP协议承载。
- ICMP协议被广泛用于网络诊断工具。两个最常见的工具是:
- Ping:
Ping工具使用ICMP Echo Request和Echo Reply消息来测试目标主机是否可达,并测量往返时间(RTT)。 - Traceroute:
Traceroute工具利用ICMP Time Exceeded消息来追踪数据包从源到目的地的路径。
- Ping:
ping命令
- 在网络中,ICMP 协议的使用是靠各种命令来实现的。
- ping 命令的基本格式:
- ping [–t] [-l 字节数] [-a] [-i] IP_Address| target_name
- [ ]中的参数为可选参数
- 在检查网络连通性时,ping 命令是用得最多的。
- 当 ping 一台主机时,本地计算机发出的就是一个典型的 ICMP 数据包,用来测试两台主机是否能够顺利连通。ping 命令能够检测两台设备之间的双向连通性,即数据包能够到达对端,并能够返回
- ping命令返回值
- bytes值:数据包大小,也就是字节。
- time值:响应时间,这个时间越小,说明你连接这个地址速度越快。
- TTL值:Time To Live,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。
- 可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列:
- 100~130ms之间,Windows系统
- 240~255ms之间,UNIX/Linux系统
- 可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列:
- 可以使用 ping /?命令查看ping命令的可用参数
ping命令的常用参数
- -t 参数会一直不停的执行ping
- Ctrl+C可以中断命令
- -a 参数可以显示主机名称
- -l 参数可以设定ping包的大小
- 单位为字节
- 可用于简单测试通信质量
ping命令进阶用法
- 批量ping网段检测,并将结果放入对应的文件中(ping通的IP和不通的IP分别放到两个文件里面)
- for /l %D in (1,1,255) do (ping 192.168.56.%D -n 1 && echo 192.168.56.%D>>D:/ping/ok.txt || echo192.168.56.%D >>D:/ping/no.txt)
- 把ping的地址写到这个文件里面,同时可以ping 1000个ip地址以上,代码会自己读取这个文件里面的ip地址,并且把结果放到两个文件里面去
- for /f %D in (D:/ping/ip.txt) do (ping %D -n 1 && echo %D>>D:/ping/ok.txt || echo %D >>D:/ping/no.txt)
对Ping后返回信息的分析
- Request timed out——超时
- 对方已关机或者网络上根本没有这个地址。
- 与本身不在同一网段内,经过路由也没法找到对方,但有时对方确实是存在的,固然不存在也是返回超时的信息。
- 对方确实存在,但设置了 ICMP 数据包过滤(好比防火墙设置)。
- 用带参数-a 的ping 命令探测对方,若是能获得对方的 NETBIOS 名称,则说明对方是存在的,是有防火墙设置,若是得不到,多半是对方不存在或关机,或不在同一网段内。
- 错误设置 IP 地址
- 正常状况下,一台主机应该有一个网卡,一个 IP 地址,或多个网卡,多个IP地址(这些地址必定要处于不一样的 IP 子网)。
- 但若是一台电脑的“拨号网络适配器”的TCP/IP设置中,设置了一个与网卡 IP 地址处于同一子网的 IP 地址,这在IP 层协议看来,这台主机就有两个不一样的接口处于同一网段内。当从这台主机ping 其余的机器时,会存在这样的问题:
- 主机不知道将数据包发到哪一个网络接口,由于两个网络接口都链接在同一网段。
- 主机不知道用哪一个地址做为数据包的源地址。所以,从这台主机去ping其余机器,IP 层协议会没法处理,超时后,ping 就会给出一个“超时无应答”的错误信息提示。但从其余主机 ping 这台主机时,请求包从特定的网卡来,ICMP 只须简单地将目的、源地址互换,并更改一些标志便可,ICMP应答包能顺利发出,其余主机也就能成功 ping 通这台机器了。
- Destination Host Unreachable——连不上服务器
- 对方与本身不在同一网段内,而本身又未设置默认的路由。
- 网线出了故障。
- “destination host unreachable”和“time out”的区别
- 若是所通过的路由器的路由表中具备到达目标的路由,而目标由于其余缘由不可到达,这时候会出现“time out”
- 若是路由表中连到达目标的路由都没有,那就会出现“destination host unreachable”。
- Bad IP Address——IP有问题
- 这个信息表示可能没有链接到 DNS 服务器,因此没法解析这个IP地址,也多是IP 地址不存在。
- Source Quench Received——服务器忙
- 这个信息比较特殊,它出现的机率不多。它表示对方或中途的服务器繁忙没法回应。
- Unknown Host——不知名主机
- 这种出错信息的意思是,该远程主机的名字不能被域名服务器(DNS)转换成IP地址。故障缘由多是域名服务器有故障,或者其名字不正确,或者网络管理员的系统与远程主机之间的通讯线路有故障。
- No Answer——无响应
- 这种故障说明本地系统有一条通向中心主机的路由,但却接收不到它发给该中心主机的任何信息。故障缘由多是下列之一:中心主机没有工作;本地或中心主机网络配置不正确;本地或中心的路由器没有工作;通讯线路有故障;中心主机存在路由选择问题。
- ping 127.0.0.1:127.0.0.1是本地循环地址——TCP/IP 协议不工作
- 若是本地址没法Ping通,则代表本地机 TCP/IP 协议不能正常工作。
- no rout to host——网卡工作不正常
- transmit failed, error code: 10043——网卡驱动不正常
ARP协议
- 在局域网中,交换机通过MAC 地址进行通信,要获得目的主机的 MAC 地址就需要使用ARP协议将目的IP地址解析成目的 MAC 地址。
- ARP(Address ResolutionProtocol,地址解析协议)的基本功能是负责将一个已知的IP地址解析成MAC 地址,以便在交换机上通过MAC地址进行通信。
ARP缓存表
ARP协议工作流程
IP地址解析为MAC地址:
- PC1发送数据给PC2,查看缓存没有PC2的MAC地址
- PC1发送ARP请求消息(广播)
- 所有主机收到ARP请求消息
- PC2回复ARP应答(单播)
- 其他主机丢弃
- PC1将PC2的MAC地址保存到缓存中,发送数据
ARP命令
- arp -a
- 功能:显示本地ARP缓存表,列出当前已解析的IP地址与MAC地址对应关系。
- 用途:排查IP冲突、检查设备连接状态或识别局域网中的设备。
- arp -s IP地址 MAC地址
- 功能:手动添加静态ARP绑定,将指定IP与MAC地址固定关联。
- 用途:防止IP地址篡改(如办公网络)或防御ARP欺骗攻击。
- 使用 arp -s ip-address mac-address 命令对IP地址和MAC地址进行绑定,该操作为临时性的,重启系统后,绑定失效。
- ARP 项添加失败: 拒绝访问,解决方法:
- netsh interface ipv4 show neighbors 查看网卡接口序号
- 这个命令可以帮助网络管理员了解本地计算机当前与哪些设备建立了网络连接,以及这些连接的详细信息
- 然后运行命令 netsh interface ipv4 set neighbors 网卡接口序号 IP地址 MAC地址
- 再次运行 arp -a,类型已经是“静态”,静态绑定的ARP条目默认将一直存在,即使系统重启也会存在。该操作可实现永久性绑定
- arp -d
- 功能:删除所有ARP映射关系(包括静态绑定的ARP 条目)
- 用途:清空ARP缓存表
- arp -d [IP] --windows下需要使用管理员权限打开cmd
- 功能:删除指定IP的ARP记录(若未指定IP则清空整个缓存表)。
- 用途:解决因缓存错误导致的网络故障(如网关MAC被篡改)。
- 其他参数
- arp -g:功能同arp -a,部分系统兼容使用。
- arp -n:显示ARP缓存但不解析主机名,提升查询效率。
ARP命令典型应用
- 网络故障排查
- 若无法上网,可通过arp -a对比其他设备,检查网关MAC是否被篡改(ARP欺骗)。
- 清除错误缓存(arp -d)后重新获取正确地址。
- IP-MAC绑定
- 在监控或办公网络中,使用arp -s绑定设备IP与MAC,避免地址冲突。
- 安全风险提示
- ARP协议易受欺骗攻击(如伪造网关MAC),需结合交换机端口绑定等增强措施。
ARP攻击和ARP欺骗
- ARP 攻击
- 主要目的是使网络无法正常通信,它主要包括以下两种行为:
- 攻击主机制造假的 ARP 应答,并发送给局域网中除被攻击主机之外的所有主机。ARP应答中包含被攻击主机的IP地址和虚假的 MAC 地址。
- 攻击主机制造假的 ARP 应答,并发送给被攻击主机。ARP 应答中包含除被攻击主机之外的所有主机的IP地址和虚假的 MAC 地址。
- 主要目的是使网络无法正常通信,它主要包括以下两种行为:
- ARP欺骗
- ARP 欺骗并不会使网络无法正常通信,而是通过冒充网关或其他主机使到达网关或主机的流量通过攻击主机进行转发。
- 攻击主机通过转发流量可以对流量进行控制和查看,从而控制流量或得到机密信息。
- ARP 欺骗发送 ARP 应答给局域网中其他主机,其中包含网关的 IP 地址和进行ARP 欺骗的主机MAC地址;并且也发送 ARP 应答给网关,其中包含局域网中所有主机的 IP 地址和进行ARP 欺骗的主机MAC地址(有的软件只发送 ARP 应答给局域网中的其他主机,并不发送ARP 应答欺骗网关)。当局域网中主机和网关收到ARP应答更新ARP表后,主机和网关之间的流量就需要通过攻击主机进行转发
- 冒充网关
- 冒充主机