内容和图片来源于网络,附有详细链接,综合多篇笔记,汇总的
1.2 网络接入--路由
路由协议
静态路由和动态路由:
- 静态 (
Static Routing)路由:事先设置好路由器和主机中并将路由信息固定的一种方法 - 动态 (
Dynamic Routing)路由:让路由协议在运行过程中自动地设置路由控制信息的一种方法。 - 静态路由的设置通常是由使用者手工操作完成的。缺点:1). 每增加一个新网络,就需要将这个被追加的网络信息设置在之前所有的路由器上。2). 一旦某个路由器发生故障,基本只能由管理员手工设置以后才能恢复正常。
- 使用动态路由,管理员必须设置好路由协议,其设定过程的复杂程度与具体要设置路由协议的类型有直接关系。如
RIP就简单,而OSPF就复杂。 - 动态路由能避免静态的
1,2点问题,缺点:1). 路由器为能够定期相互交换必要的路由控制信息,会与相邻的路由器之间互发消息,这些互换的消息会给网络带来一定程序的负荷,特别是环路情况下,需要特别注意。 - 不管是静态路由还是动态路由,不要只使用其中一种,可以将它们组合起来使用。
路由协议:
-
一种指定数据包转送方式的网上协议。
-
Internet网络的主要节点设备是路由器,路由器通过路由表来转发接收到的数据。 -
互联网是由路由器连接的网络组合而成的。为了能让数据包正确地到达目标主机,路由器必须在途中进行正确地转发。这种向“正确的方法”转发数据所进行的处理就叫做路由控制或路由。
-
路由器根据路由控制表(
Routing Table)转发数据包。它根据所收到的数据包中目标主机的IP地址与路由控制表的比较得出下一个应该接收的路由器。因此,这个过程中路由控制表的记录一定要正确无误。但凡出现错误,数据包就有可能无法到达目标。 -
在具有较小规模的网络中,人工指定转发策略(通过静态路由、策略路由等方法)没有任何问题。
-
在具有较大规模的网络中(如跨国企业网络、
ISP网络),如果通过人工指定转发策略,巨大的工作量,管理、维护路由表上也变得十分困难。为了解决这个问题,动态路由协议应运而生。动态路由协议可以让路由器自动学习到其他路由器的网络,并且网络拓扑发生改变后自动更新路由表。网络管理员只需要配置动态路由协议即可。 -
路由协议通过在路由器之间共享路由信息来支持可路由协议。路由信息在相邻路由器之间传递,确保所有路由器知道到其它路由器的路径。总之,路由协议创建了路由表,描述了网络拓扑结构;路由协议与路由器协同工作,执行路由选择和数据包转发功能。
-
路由协议主要运行于路由器上,路由协议是用来确定到达路径的,起到一个地图导航,负责找路的作用。它工作在网络层。
-
路由选择协议主要是运行在路由器上的协议,主要用来进行路径选择。
-
路由协议作为
TCP/IP协议族中重要成员之一,其选路过程实现的好坏会影响整个Internet网络的效率。 -
常见的路由协议有
RIP,IGRP(Cisco私有协议),EIGRP(Cisco私有协议),OSPF,IS-IS,BGP。 -
RIP、IGRP、EIGRP、OSPF、IS-IS是内部网关协议(IGP),适用于单个ISP的统一路由协议的运行,一般由一个ISP运营的网络位于一个 AS(自治系统)内,有统一的 AS number(自治系统号)。 -
BGP是自治系统间的路由协议,是一种外部网关协议,多用于不同ISP之间交换路由信息,以及大型企业、政府等具有较大规模的私有网络。这里网关是路由器的旧称。 -
IS-IS与 OSPF 在质量和性能上的差别并不大,但OSPF更适用于IP,较IS-IS更具有活力。IETF始终在致力于OSPF的改进工作,其修改节奏要比IS-IS快得多。这使得OSPF正在成为应用广泛的一种路由协议。不论是传统的路由器设计,还是即将成为标准的MPLS(多协议标记交换),均将OSPF视为必不可少的路由协议。 -
外部网关协议最初采用的是
EGP。EGP是为一个简单的树形拓扑结构设计的,随着越来越多的用户和网络加入Internet,给EGP带来了很多的局限性。为了摆脱EGP的局限性,IETF(边界网关协议工作组)制定了标准的边界网关协议--BGP。 -
BGP 属于外部或域间网关路由协议,
BGP的主要目标是为处于不同AS中的路由器之间进行路由信息通信提供保障。BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。这是因为BGP在发布到一个目的网络的可达性的同时,包含了在IP分组到达目的网络过程中所必须经过的AS的列表。通路向量信息时十分有用的,因为只要简单地查找一下BGP路由更新的AS编号就能有效地避免环路的出现。BGP对网络拓扑结构没有限制, -
BGP 详细:边界网关协议 - 搜狗百科 (sogou.com)
IGP 与 EGP:
- 路由协议大致分为两大类,一类是外部网关协议
EGP,另一类是内部网关协议IGP. IP地址分为网络部分和主机部分,EGP和IGP的关系与IP地址类似,EGP类似IP的网络部分,可以根据EGP在区域网络之间(或ISP之间)进行路由选择;IGP类似IP的主机部分,根据IGP在区域网络内部(或ISP内部)进行主机识别。- 由此,路由协议被分为
EGP和IGP两个层次,没有EGP就不可能有世界上各个不同组织机构之间的通信,没有IGP机构内部也就不可能进行通信。 IGP中还可能使用RIP,RIP2,OSPF等众多协议,EGP使用的是BGP协议。
1.3 网络接入--ARP 协议
ARP 协议
- 地址解析协议,即
ARP(Address Resolution Protocol),是根据IP地址获取物理地址(MAC地址)的一个TCP/IP协议。 OSI模式把网络工作分为七层,彼此不直接打交道,只通过接口 (layre interface).IP地址在第三层(网络层),MAC地址在第二层(数据链路层)。协议在发送数据包时,首先要封装第三层(IP地址)和第二层 (MAC地址)的报头, 但协议只知道目的节点的IP地址,不知道其物理地址,又不能跨第二、三层,所以得用ARP的服务拿到 MAC 地址。- 地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送
ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;
ARP 工作过程
假设主机 A 和 B 在同一个网段,主机 A 要向主机 B 发送信息,具体的地址解析过程如下:
- 主机
A首先查看自己的ARP缓存表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。 - 如果主机
A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。 - 主机
B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。 - 主机
A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
- 当主机
A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。 - 如果网关没有主机
B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。
ARP 表
- 网络设备一般都有一个
ARP缓存(ARP Cache),ARP缓存用来存放IP地址和MAC地址的关联信息。学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。 - 在有效期内,设备可以直接从这个表中查找目的
MAC地址来进行数据封装,而无需进行ARP查询。 - 过了这段有效期,
ARP表现会被自动删除。如果目标设备位于其他网络则源设备会在ARP缓存表中查找网关的MAC地址,然后将数据发送给网关,网关再把数据转发给目的设备。 ARP表项又分为动态ARP表项和静态ARP表项。
动态 ARP 表项
动态 ARP 表项由 ARP 协议通过 ARP 报文自动生成和维护,可以被老化,可以被新的 ARP 报文更新,可以被静态 ARP 表项覆盖。每个动态 ARP 缓存项的潜在生命周期是 10 分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后 2 分钟内没有再使用,则此项目过期并从 ARP 缓存中删除;如果某个项目已在使用,则又收到 2 分钟的生命周期;如果某个项目始终在使用,则会另外收到 2 分钟的生命周期,一直到 10 分钟的最长生命周期。
静态 ARP 表项
静态 ARP 表项通过手工配置和维护,不会被老化,不会被动态 ARP 表项覆盖。直到重新启动计算机为止。
静态 ARP 表项分为短静态 ARP 表项和长静态 ARP 表项。
-
在配置长静态
ARP表项时,除了配置IP地址和MAC地址项外,还必须配置该ARP表项所在VLAN和出接口。长静态ARP表项可以直接用于报文转发。 -
在配置短静态
ARP表项时,只需要配置IP地址和MAC地址项。 -
如果出接口是三层以太网接口,短静态
ARP表项可以直接用于报文转发; -
如果出接口是
VLAN虚接口,短静态ARP表项不能直接用于报文转发,当要发送IP数据包时,先发送ARP请求报文,如果收到的响应报文中的源IP地址和源MAC地址与所配置的IP地址和MAC地址相同,则将接收ARP响应报文的接口加入该静态ARP表项中,之后就可以用于IP数据包的转发。
当希望设备和指定用户只能使用某个固定的 IP 地址和 MAC 地址通信时,可以配置短静态 ARP 表项,当进一步希望限定这个用户只在某 VLAN 内的某个特定接口上连接时就可以配置长静态 ARP 表项。
ARP 报文格式
在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即 IP 地址)。但是仅仅有 IP 地址是不够的,因为IP 数据报文必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从 IP 地址到物理地址的映射。APR 就是实现这个功能的协议。
ARP 协议是通过报文进行工作的,是一个独立的三层协议,所以 ARP 报文在向数据链路层传输时不需要经过 IP 协议的封装,而是直接生成自己的报文,其中包括 ARP 报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。ARP 报文分为 ARP 请求和 ARP 应答报文两种,它们的报文格式可以统一为下图所示。
![[Pasted image 20230805153455.png]]
ARP报文格式详解_arp响应包_hq_buddhist的博客-CSDN博客
免费 ARP
免费 ARP(Gratuitous ARP)包是一种特殊的 ARP 请求,它并非期待得到 IP 对应的 MAC 地址,而是当主机启动的时候,发送一个 Gratuitous ARP 请求,即请求自己的 IP 地址的 MAC 地址。
- 该类型报文起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机自己的 IP 地址和 MAC 地址。
- 可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文,则说明网络内已经存在使用该 IP 地址的主机。
- 可用于更新其他主机的 ARP 缓存表。如果该主机更换了网卡,而其他主机的 ARP 缓存表仍然保留着原来的 MAC 地址。这时,可以发送免费的 ARP 数据包。其他主机收到该数据包后,将更新 ARP 缓存表,将原来的 MAC 地址替换为新的 MAC 地址。
ARP 代理
当局域网内部主机发起跨网段的 ARP 请求时,出口路由器/网关设备将自身 MAC 地址回复该请求时,这个过程称为代理 ARP。
详情:彻底搞懂系列之:ARP协议 - 知乎 (zhihu.com)
1.4 网络接入--IP 协议
IP 协议
- IP 协议(Internet Protocol,互联网协议)
- TCP/IP 协议栈中最核心的协议之一
- IP 协议提供了 IP 地址,IP 地址保证联网设备的唯一性
- 实现网络通信的面向无连接和不可靠传输功能
- IP 协议只能知名数据包的从哪来到哪去,但是不能保证数据包一定送到目标地,可能会被丢弃。
当然,IP 协议不仅仅只有"快递单"功能,它还能防止数据包环路、为数据打上重要或不重要等标签实现流量控制、能验证数据包是否损坏、能实现数据包分片和组装功能;而要深入学习这些功能,必须掌握 IP 头部的封装格式。
IP 协议头部长什么样?
抓包例子: 图解IP协议(一) IP协议原理与实践 - 知乎 (zhihu.com) 按这个
- 谷歌服务器地址:8.8.8.8
- 用过滤器抓包
- 命令终端执行
ping 8.8.8.8
IP 协议字段解读
- Version(版本号):标识 IP 协议的版本号,目前 V4 版本地址已经枯竭,V6 慢慢成为主流
标记 IP 头部和上层数据边界:
-
Header Length(头部长度):默认 20 字节,最大 60 字节
-
Total Length (总长度):标识 IP 头部+上层数据包大小,IP 包总长度为 65535 个字节 当收到数据包后,网卡模块?会对数据包进行拆分,修改 IP 头部信息,重新数据封装等操作。如果长度字段标识错误,网卡进行差分的时候会出现划分错误,数据部分如果不完整,接收方会得到一个损坏数据包(无法打开)。
-
Differentiated Services Field (服务区分符 DSCP):用于为不同的 IP 数据包定义不同的服务质量,前身教 TOS(Type of Service,服务类型),它们都是 QoS 服务质量里面的技术实现。可以实现流量控制。高优先级的 DSCP 值的优先转发。
实现 IP 数据分片和重组
-
Identification(标识符):用于区分 IP 分片的重组,标识分片属于哪个进程,不同进程通过不同 ID 区分
-
Flags(标志符):用来确认是否还有 IP 分片或是否能执行分片
-
Fragment offset(分片偏移量):用于标识 IP 分片位置,实现 IP 分片重组
-
Time to live(生存时间):标识 IP 数据包还能生存多久,根据操作系统不同,TTL 默认值不同,每经过一个三层设备如路由器的处理,则 TTL 减去 1,当 TTL=0 时,则此数据包“死亡”,此时路由器会向源发送者返回一个“TTL Exceed”的 ICMP 报错包。可以实现通信防环(防止数据包环路),避免一直绕环,占用带宽,浪费资源。“被动式”解决环路的做法。 ![[Pasted image 20230805171215.png]] TTL 值占用 8 个 bit 为,所以最大值为 255(二进制 11111111)
-
Protocol(协议号):标识 IP 协议上层应用(标识传输层协议)。当上层协议为 ICMP 时,协议号为 1,TCP 协议号为 6,UDP 协议号为 17,根据协议号调用对应的上层协议或应用来进行上层数据处理(调用 ICMP 协议处理 ICMP 数据包,才能正确解读并返回)。标记上层应用。
-
Header checksum(头部校验):用于检验 IP 数据包是否完整或被修改,如果校验失败则丢弃数据包。可以数据包完整性校验。IP 协议的 checksum 值只校验 IP 头部,不包括数据部分,但是 TCP 和 UDP 校验包含数据部分。
IP 协议最核心的字段
- Source(源 IP 地址):标识发送者 IP 地址,占 32bit
- Destination(目的 IP 地址):标识接收者 IP 地址,占 32bit
MAC 地址
MAC地址(Media Access Control Address)也叫物理地址、硬件地址,MAC地址在一定程度上与硬件一致,是基于物理的,能够标识具体的网络节点。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。MAC地址的长度为 48 位 (6个字节),通常表示为12个 16 进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由 IEEE (电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号MAC地址就如同身份证上的身份证号码,具有唯一性。
实用:
- 大多数接入
Internet的方式是把主机通过局域网组织在一起,然后再通过交换机或路由器等设备和Internet相连接。这样一来就出现了如何区分具体用户,防止IP地址被盗用的问题。由于IP地址只是逻辑上的标识,任何人都能随意修改,因此不能用来具体标识一个用户。 - 而
MAC地址则不然,它是固化在网卡里面的。从理论上讲,除非盗来硬件即网卡,否则一般是不能被冒名顶替的。基于MAC地址的这种特点,因此局域网采用了用MAC地址来标识具体用户的方法。 - 在具体的通信过程中,通过交换机内部的交换表把
MAC地址和IP地址一一对应。当有发送给本地局域网内一台主机的数据包时,交换机首先将数据包接收下来,然后把数据包中的IP地址按照交换表中的对应关系映射成MAC地址,然后将数据包转发到对应的MAC地址的主机上去。这样一来,即使某台主机盗用了这个IP地址,但由于此主机没有对应的MAC地址,因此也不能收到数据包,发送过程和接收过程类似。 - 所以,无论是局域网,还是广域网中的计算机之间进行通信时,最终都表现为将数据包从某种形式的链路上的一个初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的传递都是由 ARP(
Address Resolution Protocol:地址解析协议)负责将IP地址映射到MAC地址上来完成的。
查看 MAC 地址:
- 在命令提示符下输入命令
ipconfig /all回车之后就会显示当前计算机的一些网络信息,其中Physical Address字样的这一项就是当前计算机中网卡的MAC地址。当然,如果计算机中安装有多个网卡,则会有多Physical Address字样
IP 地址
-
IP 地址(
Internet Protocol Address)的全称叫作互联网协议地址,它的本义是为互联网上的每一个网络和每一台主机配置一个唯一的逻辑地址,用来与物理地址(MAC地址)作区分。 -
IP地址分为:IPv4 和 IPv6。我们这里着重讲的是IPv4地址,IP地址是由 32 位的二进制数组成,它们通常被分为4个“8位二进制数”,我们可以把它理解为4 个字节,它地格式表示为:(A.B.C.D)。其中,A,B,C,D这四个英文字母表示为0-255的十进制的整数。例:192.168.1.1。 -
最初设计互联网络时,为了便于寻址和层次化构造网络,每个
IP地址包括两个标识码 (ID),也就是网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机 (包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。
IP 地址分为:
- 公有地址(
Public address),我们通过公有IP地址是可以实现直接访问因特网的。私有地址(Private address),分为五类:A类、B类、C类、D类、E类。
在这个其中,A、B、C 类私有地址是由 InternetNIC 公司在全球范围内统一分配的,D、E 类为特殊地址。
A类IP地址(适用于大型网络)的网络的标识(网络ID)长度为 8 位,主机标识 (主机ID)长度为 24 位,它的范围:1.0.0.1-127.255.255.254;B类IP地址 (适用于中型网络)的网络ID为 16 位,主机ID长度为 16 位,它的范围:128.0.0.1-191.255.255.254;C类IP地址 (适用于小型网络)网络ID为 24 位,主机ID长度为 8 位,它的范围:192.0.0.1-223.255.255.254。D类地址被叫做多播地址 (multicast address),即组播地址,它的范围:224.0.0.0-239.255.255.255。E类地址主要用于Internet试验和开发,它的范围:240.0.0.0-255.255.255.255
MAC 地址和 IP 地址对比
IP 地址和 MAC 地址相同点是它们都唯一,不同的特点主要有:
- 对于网络上的某一设备,如一台计算机或一台路由器,其 IP 地址是基于网络拓扑设计出的,同一台设备或计算机上,改动
IP地址是很容易的(但必须唯一),而 MAC 则是生产厂商烧录好的,一般不能改动。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址不可由本地连接内的配置进行修改。如果一个计算机的网卡坏了,在更换网卡之后,该计算机的MAC地址就变了。 - 长度不同。
IP地址为32位,MAC地址为48位。 - 分配依据不同。
IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。 - 寻址协议层不同。
IP地址应用于OSI第三层,即网络层,而MAC地址应用在 OSI 第二层,即数据链路层。数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。
- IPv4:互联网终端节点的唯一标识
- IPv6:不仅仅是IP地址长度的增加