IPv4,IPv6,TCP,路由
主要回顾一下TCP/IP的传输过程,在这个过程中,做了什么事情
ip : 网际协议,IP协议能让世界上任意两台计算机之间进行通信。
- IP协议的三大功能:
- 寻址和路由
- 传递服务:不可靠(尽最大努力交付传输数据包),可靠性由上层协议提供;无连接
- 数据包分片重组
OSI七层架构(理论) 和 TCP/IP的4层架构(实现)
 
IP的主要作用是在复杂的网络环境中将数据包发给最终的目标地址。
 
主机和路由器的区别:
- 主机是配置有IP地址,但是不进行路由控制
- 路由器是即配有IP地址,又具有路由控制能力
- 主机和路由器都可被当作网络节点
由于IP地址包括网络标识和主机标识,在路由的过程中正是利用IP地址的网络标识进行路由。
网络号相同则属于统一网段内的主机,网络号不同则不属于同一网络。
实现IP通信的主机和路由器必须要有路由表:指明路由器或主机的信息。
路由表的形成方式:
- 管理员手动设置;(静态路由)
- 路由器与其他路由器相互交换时自动刷新。(动态路由)
路由表中包含了信息:
路由表中的表项内容包括:
destination:目的地址,用来标识IP包的目的地址或者目的网络。
mask:网络掩码,与目的地址一起标识目的主机或者路由器所在的网段的地址。
pre:标识路由加入IP路由表的优先级。可能到达一个目的地有多条路由,但是优先级的存在让他们先选择优先级高的路由进行利用。
cost:路由开销,当到达一个目的地的多个路由优先级相同时,路由开销最小的将成为最优路由。
interface:输出接口,说明IP包将从该路由器哪个接口转发。
nexthop:下一跳IP地址,说明IP包所经过的下一个路由器。
IP地址的网络地址部分被用来进行路由控制

DNS查询流程图:

域名是怎样变成数据帧中的目标地址的:
 
ARP协议:
    以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备对应的MAC地址,如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。
ARP数据包报文结构:
 
- 以太网帧头部(Ethernet Frame Header):包含目的MAC地址和源MAC地址。
- 以太网帧类型(Ethernet Type):指示数据帧中的上层协议类型,对于ARP数据包,该字段的值为0x0806。
- ARP帧头部(ARP Frame Header):包含以下字段:
- 硬件类型(Hardware Type):指示网络适配器的类型,例如以太网的硬件类型为1。
- 协议类型(Protocol Type):指示上层协议的类型,例如IPv4的协议类型为0x0800。
- 硬件地址长度(Hardware Address Length):指示硬件地址的长度,例如以太网的硬件地址长度为6个字节。
- 协议地址长度(Protocol Address Length):指示协议地址的长度,例如IPv4的协议地址长度为4个字节。
- 操作码(Operation Code):指示ARP请求或ARP响应的类型。ARP请求的操作码为1,ARP响应的操作码为2。
- 发送方硬件地址(Sender Hardware Address):指示发送方的MAC地址。
- 发送方协议地址(Sender Protocol Address):指示发送方的IP地址。
- 目标硬件地址(Target Hardware Address):在ARP请求中,该字段为空;在ARP响应中,该字段指示目标的MAC地址。
- 目标协议地址(Target Protocol Address):指示目标的IP地址。

 通过ARP数据包中的这些字段,可以实现ARP协议的功能,即通过IP地址解析对应的MAC地址。
发送ARP请求时,目标硬件地址和目标协议地址为空;接收到ARP请求后,目标主机会发送ARP响应,将目标硬件地址和目标协议地址填充到响应中,以便发送方可以获取目标主机的MAC地址。
ARP是如何知道MAC地址的:借助ARP请求和ARP响应两种类型的包确定MAC地址。
原理:ARP高速缓存中存储的有IP和MAC的映射表,但是生命周期只有20分钟,如果在主机发送IP数据包的时候,ARP的高速缓存刚好失效或在高速缓存中不存在IP-MAC的映射记录,那么主机就会发送ARP广播包,此时在同一子网内的所有设备都会收到此广播包,所有的主机都会检查自己的IP是否是主机的目的IP,如果是则发送自己的MAC地址给主机,主机在收到MAC地址后,首先对自己的ARP高速缓存列表进行更新,然后再对目标设备发送数据。
ARP协议工作原理:
 
路由选择协议:自适应的,那个随着网络通信量和拓扑结构的变化而自适应的进行调整。
    以上情况是,源主机与目标主机在同一子网下的操作方式,那么如果源主机与目的主机不在同一子网下,又该如何应对呢?此时就体现出了,路由的重要性了。当源主机与目的主机不在同一子网下,ARP广播包就会发送到默认网关,有默认网关转发至同一网络下的其他路由器或者设备,直到找到目的主机,目的主机在进行ARP响应的操作。ARP响应包并非沿着路由的路径原路返回给源主机的,因为目的主机在进行响应的时候是知道源主机的MAC地址的,所以会直接将ARP响应包发送给源主机,以确保响应包能够直接到达源主机。
路由转发流程:
 
 为什么IP地址可以唯一标识一台主机,在进行数据传输的时候还要知道MAC地址?
因为IP地址是在逻辑上唯一标识一台主机或者网络设备,IP地址工作在网络层,实际上的数据传输需要经过数据链路层,将数据封装成数据帧,在数据帧首部插入源MAC地址和目标MAC地址,通过MAC地址来确保数据的准确传输。
在数据包从源主机到达目标主机的过程中,需要使用物理层(OSI模型的第一层)的MAC地址来实际传输数据帧。MAC地址是一个全球唯一的硬件地址,它是由网络适配器(网卡)厂商分配的。每个网络适配器都有一个唯一的MAC地址,用于在局域网中识别设备。
因此,尽管IP地址提供了逻辑上的唯一标识,但在实际的数据传输中,需要使用MAC地址来确保数据帧能够正确地在局域网中传输到目标设备。知道目标设备的MAC地址可以准确地将数据帧发送到目标设备,从而实现数据的传输。
IPv4数据报首部:
 
    标识:当IP数据报的长度大于MTU时,就需要进行分片传输,传输之后,相同标识符的数据片会被重新组装成一个数据报。此标识并非排序标识。标志:占三位,一般有用的是前两位,最低位叫做MF,MF=1表示后面还有若干个数据报,MF=0表示这已经是最后一个数据报了;中间位叫做DF,DF表示不能进行分片,DF=0才可以进行分片。ttl:跳数,也就是IP数据报生存周期,最多只能有255跳,经过一个路由器此值就减一,超过255就丢弃。

特殊IP地址:
- 广播地址: 一个子网内所有网络接口都能收到此广播消息。 直接广播:带目标网络号,主机地址二进制全1的地址。(使用的范围在当前网段下) 有限广播:网络号和主机地址二进制全为1的地址(即255.255.255.255)。(使用范围限于当前网段下 ,通常用于 DHCP
客户端向DHCP服务器请求时设置的报文目的地 IP 地址,且目标 MAC 为 FF:FF:FF:FF:FF:FF)- 组播地址
- 环回地址
- 私有地址
子网技术
划分子网的步骤:
- 根据所需的网络数确定需要多少二进制位子网号标识网络上的每一个子网
- 根据子网中的主机数确定需要多少主机号来标识每个子网上的每一条主机。
- 根据网络好和子网号的位数,计算符合网络要求的子网掩码
- 确定标识每个子网的网络地址。
- 确定每一个子网所使用的主机地址范围。
IPV6
ipv6的地址表示方法:
- IPv6 地址采用十六进制的表示方法,共 128 位,分 8 组表示,每组 16 位,每组表示 4 个十六进制数。
- 各组之间用 “ : ”号隔开,例如:1080:0:0:0:8:800:200C:417A
- 在 IPv6 地址段中有时会出现连续的机组0,为了简化书写,这些 0 可以用“ : : ”代替,但一个地址中只能出现一次“ : : ”。
IPv6 包含 IPv4 地址:在某些情况下,IPv4 地址需要包含在 IPv6 地址中,这时,IPv6 的最后两组用现在习惯使用的 IPv4 地址的十进制表示法,前6组用 IPv6表示。例如:IPv4地址 61.1.133.1 包含在 IPv6地址中表示为 0:0:0:0:0:0:61.1.133.1 或者 ::61.1.133.1
IPv6的地址结构:
 128位的IPv6地址由64位网络地址 和64位主机地址组成。其中,64位的网络地址又分为48位的全球网络标识符和16位的本地子网标识符:
 
 网际控制报文协议ICMP
 icmp是为了更有效的转发IP数据报和提高交付成功的机会。
 
 
ping主要用来测试两台主机之间的连通性。
    原理:通过向目的主机发送ICMP Echo请求报文,目的主机收到后会发送Echo回答报文。ping会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。
ping过程中都经历了什么设备,会发送什么数据包?
 在这个过程中,数据包会经过交换机、路由器等网络设备,根据目标主机的IP地址进行转发。ARP请求和响应消息在局域网中进行广播,以获取目标主机的MAC地址。一旦获取到目标主机的MAC地址,ICMP消息会直接发送到目标主机。整个过程中,源主机和目标主机之间的连通性和路由路径都会被测试和确定。
在Ping的过程中,通常会发送以下几个包,并经历以下设备和流程:
1.     发送ICMP回显请求消息(Echo Request):源主机(发送方)向目标主机(接收方)发送一个ICMP回显请求消息,该消息包含一个唯一的标识符和序列号,以及其他必要的字段。
2.     ARP请求:如果源主机和目标主机之间没有建立过通信,源主机会发送一个ARP请求广播,询问局域网中的其他主机,以获取目标主机的MAC地址。
3.     ARP响应:目标主机收到ARP请求后,会发送一个ARP响应,将自己的MAC地址告诉源主机。
4.     获取目标主机的MAC地址:源主机收到ARP响应后,将目标主机的MAC地址添加到ARP缓存表中,并使用该MAC地址发送ICMP回显请求消息。
5.     目标主机接收ICMP回显请求消息:目标主机接收到ICMP回显请求消息后,会检查目标IP地址是否与自己匹配。
6.     目标主机发送ICMP回显应答消息(Echo Reply):如果目标主机的IP地址与ICMP回显请求消息中的目标IP地址匹配,它会生成一个ICMP回显应答消息,并将该消息发送回源主机。
7.     源主机接收ICMP回显应答消息:源主机接收到ICMP回显应答消息后,会检查标识符和序列号是否与之前发送的ICMP回显请求消息匹配。
8.     分析结果:根据接收到的ICMP回显应答消息,源主机可以判断目标主机是否可达。如果接收到回答消息,说明主机之间连通;如果没有接收到回答消息,说明主机之间不可达。
通俗来讲ping命令(将DNS域名解析,ARP地址解析,ICMP连通性测试综合叙述):
    假设有主机A和主机B,现在哪个都不知道有彼此的存在,但是现在有一条业务线,需要主机A给主机B发送消息,主机A现在只知道主机B的IP的域名,那么再发送消息之前主机A就需要确认与主机B的连通性啊?他此时就会发送一条ping命令, ping主机B。那么A主机在收到ping命令的时候,首先A主机会判断ping的是域名还是IP,如果目标地址是一个域名,那么主机会向本地的域名解析器发送一条DNS查询请求,请求解析该域名对应的IP地址。域名解析器会先查询本地的DNS缓存,如果找到对应的IP地址,就将这个IP地址返回给主机,如果在高速缓存中没有找到对应的IP地址,DNS解析器会向根域名服务器发送查询请求,根域名服务器会返回一个顶级域名服务器的IP地址,域名解析器会在向顶级域名服务器发从查询请求,顶级域名服务器在返回下一级域名服务器的IP,域名解析器继续发送查询请求,以此步骤不断迭代,知道查询到域名对应的IP地址,域名解析器将查询到的IP地址返回给主机。主机知道IP地址之后,就会向该IP发送一个ICMP回显请求数据包,确认网络通路。此时ARP协议就要登场了,因为此时我们只知道目标主机B的IP地址,并不知道其MAC地址。此时主机就会在本地的ARP高速缓存进行查询,如果查到目标地址的IP-MAC记录,就可以直接向目标主机发送ICMP数据包;但我们当前的前提下,A的ARP高速缓存中肯定是没有B的记录的,此时A会将ARP请求进行广播,所有的主机对照自己的IP地址,目的主机会将自己的MAC地址放在ARP响应包中,发送给源主机A。此时万事具备,只欠东风!源主机A已经知道目标主机B的MAC地址和IP地址,以此为基础,对目标主机B发送ICMP回显请求数据包,当目标主机B收到请求后,目标主机会检查目标IP地址是否与自己匹配,如果ICMP回显请求消息中的IP地址与目标主机B自己的IP地址匹配,目标主机会生成一个ICMP回显应答消息,并将此应答消息发送给源主机。源主机接收到ICMP回显应答消息后,会检查标识符与序列号是否与之前发送的ICMP请求消息匹配。根据分析结果,源主机A判断与目标主机B是否可达。如果接收到回答消息,说明主机可通,如果没有收到,说明主机之间不可达。
traceroute用来跟踪一个分组从源点到终点的路径。
 原理:
 1. traceroute发送的IP数据报封装的是无法交付的UDP用户数据报,并由目的主机发送终点不可达差错报告报文。
 2. 源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;
 3. 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。
 4. 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
 5. 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。
因特网采用的设计思路:网络层向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
与IP协议配套的四个协议:
 1. 地址解析协议ARP
 2. 逆地址解析协议RARP
 3. 网际控制报文协议ICMP
 
ping 命令都做了那些事情?
    在进行ping操作时,通常会发送一系列的数据包,并且会经历以下过程:
- 发送请求数据包:发送方(通常是ping命令所在的主机)向目标主机发送一个ICMP Echo Request(请求回显)数据包。
- 路由选择:发送方的操作系统将数据包发送到默认网关(路由器),或者根据路由表选择合适的下一跳路由器。数据包将通过网络传输到达目标主机。
- 目标主机接收数据包:目标主机接收到ICMP Echo Request数据包。
- 目标主机生成回复数据包:目标主机收到请求后,会生成一个ICMP Echo Reply(回复回显)数据包作为响应。
- 回复数据包返回:回复数据包通过网络返回到发送方。
- 发送方接收回复数据包:发送方接收到ICMP Echo Reply数据包。
- 统计信息显示:发送方的ping命令会显示接收到的回复数据包的数量、往返时间(RTT)以及丢包率等统计信息。
在这个过程中,数据包通过网络传输,经过多个路由器和网络设备,最终到达目标主机,并返回到发送方。每个数据包都包含源IP地址、目标IP地址、ICMP协议头部和数据部分。路由器根据目标IP地址将数据包转发到下一个跳点,直到到达目标主机。目标主机接收到数据包后,根据协议头部的信息进行处理,并生成回复数据包发送回发送方。
在传输过程中,数据包可能会经历延迟、丢包、重新排序等情况。这些情况可能由网络拥塞、路由器故障、链路质量等原因引起。ping命令通过发送多个数据包并统计回复数据包的情况,可以评估网络的可达性和性能。
路由器的结构:
 
路由表和转发表的区别:
路由器的结构结构可划分为两大部分:路由选择部分和分组转发部分
路由选择部分也叫做控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由协议构造出路由表,同时经常或定期地和相邻的路由器交换路由信息而不断地更新和维护路由表。
分组转发部分由三部分组成:交换结构、输入端口和输出端口。交换结构的作用就是根据转发表(forwarding table)对分组进行处理,将某个输入端口进入的分组从一个合适的输入端口转发出去。
路由表和转发表是两种不同的表,他们共享相同的信息,但是用于不同的目的。
路由表是根据路由选择算法得出的,而转发表是从路由表得出的;转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化;路由表总是由软件实现的,而转发表可由硬件实现。
转发表(交换机根据转发表来转发数据帧)
 又称MAC表。内部存储的是MAC-port的对应关系。
 交换机本质上也是一个计算机,他会维护一张记录着局域网主机端口MAC地址与交换机端口对应的表, 交换机就是根据这张表负责将数据帧传输到指定的主机端口上的。
 交换机的存储转发功能:
 * 交换机接收到数据帧之后,首先会记录数据帧中的源MAC地址和对应的到达端口到转发表中,这一过程称作自学习,不需要任何的人工干预;
 * 接着交换机检查自己的MAC表是否有数据帧中目的MAC地址的匹配条目,如果有,则会根据MAC表中记录的对应端口将数据帧转发出去,这一转发方式称为“单播”。而如果没有,则会将该数据帧从非达到端口的其他全部端口发送出去,这一转发方式成为“广播”
 
交换机转发的步骤如下:
 1. 主机A会将一个源MAC地址为本机网卡物理地址,目的MAC地址为主机B网卡物理地址的数据帧发送给交换机1;
 2. 交换机收到此数据帧后,首先将数据帧中的源MAC地址和对应的输入端口0记录到交换机维护的MAC地址表中;
 3. 然后交换机会检查自己的MAC地址表中是否有数据帧中的目的MAC地址的信息,如果有,则从MAC地址表中记录的对应端口发送出去,如果没有,则会将此数据帧从非接收端口的所有端口发送出去,这里仅从端口1发出;
 4. 这时,局域网的所有主机(通过交换机相连的全部主机)都会收到此数据帧,但是只有主机B收到此数据帧时会响应这个广播帧,并回应一个数据帧(这个回应由什么机制确定的,需要再查资料确定一下~TCP的ACK包?),此数据帧中包括主机B网络设备的MAC地址;
 5. 当交换机收到主机B回应的数据帧后,也会记录数据帧中的源MAC地址,即主机B网络设备的MAC地址,这时,再当主机A和主机B相互通信时,交换机就根据MAC地址表中的记录,实现单播了,一趟转发流程实际交换机就“学习”到了两个转发表条目。
 那么当局域网内存在多个交换机互联时,交换机的MAC地址表应该如何记录呢?
 
-  主机A将一个源MAC地址为本机网卡物理地址,目的MAC地址为主机C网卡物理地址的数据帧发送给交换机1; 
-  交换机1收到此数据帧后,会学习源MAC地址,并检查MAC地址表,发现没有目的MAC地址的记录,则会将数据帧广播出去,主机B和交换机2都会收到此数据帧; 
-  交换机2收到此数据帧后也会将数据帧中的源MAC地址和对应的端口记录到MAC地址表中,并检查自己的MAC地址表,发现没有目的MAC地址的记录,则会广播此数据帧,主机C和主机D都会收到此数据帧; 
-  主机C收到数据帧后,会响应这个数据帧,并回复一个源MAC地址为本机网卡物理地址的数据帧,该帧最终会送往主机A,这时交换机1和交换机2都会将主机C的MAC地址记录到自己的MAC地址表中,并且以单播的形式将此数据帧发送给主机A; 
-  这时,主机A和主机C通信就可以以单播的形式传输数据帧了,A与D、B与C及B与D的通信与上述过程一样,因此交换机2的MAC地址表中记录着主机A和主机B的MAC地址都对应其端口3。 
 总结: 交换机具有动态自学习源MAC地址与物理端口映射的功能,并且交换机的一个端口可以对应对各MAC地址,但是一个MAC地址只能对应一个端口。
 交换机动态学习的MAC地址默认只有300s的有效期,如果300s内记录的MAC地址没有对应的通信过程来更新对应条目,则会自动删除此记录,这是由交换机中的一个计时器所维护的
 ARP表
 在以太网环境下,同一个网段的主机之间需要知道对方的MAC地址,才能进行通信。
 在构造数据包准备发送时,源主机究竟要如何获得目的主机网络设备MAC地址?
 这时就需要使用到ARP协议。在网络拓扑中的每个节点或说主机上,实际都维护有一张ARP表,他记录这主机的IP地址到MAC地址的映射关系。
 ARP地址解析协议: 工作在网络层,运行在各网络节点上,负责完成主机IP地址到MAC地址的映射。
 ARP协议的工作原理:
  1. 如果主机A想发送数据包给同一网段内的另一台主机B(通过交换机相连的节点处于同一网段),很明显,A的用户应用程序要么已经知道B的IP地址,或者说域名(Domain Name,DNS协议会完成主机名到IP地址的映射,这里不是重点),那么主机A首先会检查自己的ARP缓存表(ARP Cache),查看是否有主机B的IP地址与其MAC地址的对应关系,如果有,则直接将主机B网络设备的MAC地址作为目的MAC地址封装到数据帧中,无需进一步操作即获取到数据帧封装所需的全部信息,此后完成封装并发送数据帧到目的MAC地址。如果没有,主机A则会发送一个ARP请求信息(ARP Request),请求的目的IP地址是主机B的IP地址,目的MAC地址是MAC层的广播地址(即ff:ff:ff:ff:ff:ff),源IP地址和MAC地址是主机A的IP地址及其MAC地址;2. 当交换机接收到此数据帧之后,发现此帧是广播帧,因此,会将此数据帧从非接收的所有端口发送出去;3. 同一网段中的所有节点都会接收到该ARP请求数据包,目的IP不匹配的节点会直接忽略该请求,而当主机B接收到此数据帧后,解析到IP地址与自己的IP地址一致,先将主机A的IP地址及其MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答(ARP Response),应答数据包源MAC地址即主机B自身网络设备的MAC地址,该应答通过交换机转发至主机A;4. 主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时主机A已经可以继续封装准备发往主机B的数据帧,而交换机也已经学习到了主机A和主机B的MAC地址与其端口的对应关系,之后主机A发送的数据帧通过交换机转发至主机B。
这里有一点值得注意的是传输过程中IP地址与MAC的地址的变化问题:
 * MAC地址在同一个广播域中传播时始终不变,但在跨越广播域(即经过路由器)时,会由于重新封装而改变,源MAC地址将变为路由器的输出端口的MAC地址,目的MAC地址随网络拓扑实际情况而定,若路由器与目的主机所在网段直连,此时目的MAC地址就是目的主机的MAC地址;而不管是源IP地址还是目的IP地址,在数据包传输过程中都始终不会改变。、
路由器之间是如何进行数据传输的?
路由器之间的数据传输是通过路由协议和转发表来实现的。当一个路由器接收到一个数据包时,它会根据目标IP地址查找转发表,确定下一跳路由器,并将数据包发送给下一跳路由器。路由器之间数据传输的基本过程:
路由协议选择:路由器使用路由协议(如RIP、OSPF、BGP等)来学习和交换路由信息。这些协议允许路由器之间互相通信,交换关于网络拓扑和可达性的信息。
转发表构建:路由器通过路由协议学习到的路由信息被存储在转发表中。转发表中包含目标网络的IP地址范围和对应的下一跳路由器的信息。路由器根据转发表来决定将数据包发送到哪个下一跳路由器。
数据包转发:当路由器收到一个数据包时,它会检查数据包的目标IP地址,并与转发表进行匹配。如果找到匹配的目标网络,路由器会将数据包发送给转发表中指定的下一跳路由器。如果找不到匹配的目标网络,路由器会根据默认路由进行转发,或者丢弃数据包。
下一跳选择:路由器根据转发表中的下一跳路由器信息,选择合适的出接口将数据包发送出去。这通常涉及到路由选择算法,如距离矢量算法、链路状态算法等。
数据包传输:路由器将数据包发送到下一跳路由器,通过物理链路进行传输。下一跳路由器接收到数据包后,会进行类似的处理过程,根据转发表决定下一个跳点,直到数据包到达目标主机。
整个过程中,路由器之间通过交换路由信息和更新转发表来实现数据的转发。路由器根据目标IP地址和转发表中的路由信息,选择合适的路径将数据包转发到下一跳路由器,最终到达目标主机。这样,数据就能在不同的路由器之间进行传输和转发。
确认下一跳的路由的过程:
- 路由选择算法:路由选择算法是用来确定数据包的转发路径的算法。常见的路由选择算法包括距离矢量算法(Distance Vector)、链路状态算法(Link State)和路径矢量算法(Path
Vector)等。这些算法使用不同的指标和策略来选择最佳路径,其中包括考虑距离、开销、带宽、负载均衡等因素。- 路由表的使用:路由表是存储在路由器或主机上的一张表格,记录了网络的拓扑结构和路由信息。路由表中的每一条路由条目都包含了目的网络地址、下一跳、出接口等信息。当数据包到达路由器或主机时,根据数据包的目的网络地址,通过查找路由表中的匹配条目,确定下一跳路由。
具体的确认下一跳路由的过程如下:- 数据包到达路由器或主机时,根据数据包的目的IP地址,查找路由表中匹配的路由条目。
- 路由表中的路由条目包含了目的网络地址、下一跳、出接口等信息。根据路由选择算法,选择最佳的路由条目。
- 如果路由条目中的下一跳是一个具体的IP地址,那么将数据包发送到该IP地址。如果下一跳是一个出接口,那么将数据包发送到该接口。
- 数据包继续按照下一跳路由进行转发,直到到达目的网络。
需要注意的是,路由表中的路由条目是动态更新的,路由器会根据网络拓扑的变化、链路状态的变化等信息进行路由表的更新。所以,在确认下一跳路由时,需要及时查看和更新路由表的信息。
默认路由的作用?
默认路由是一种特殊的路由,用于处理目标网络无法匹配的情况。当一个路由器收到一个数据包时,如果目标IP地址在转发表中找不到匹配的路由信息,路由器将使用默认路由来决定下一跳路由器。
默认路由的作用如下:
处理未知目标网络:当路由器收到一个数据包,目标IP地址在转发表中找不到匹配的路由信息时,路由器会使用默认路由来决定下一跳路由器。这样,即使目标网络是未知的,数据包也不会被丢弃,而是被转发到默认路由指定的下一跳路由器。
连接到其他网络:默认路由可以用于连接到其他网络。当一个路由器连接到多个网络时,它可以使用默认路由将数据包转发到另一个网络。这样,路由器就可以将数据包传递给其他网络中的路由器,实现网络间的通信。
简化路由表:默认路由可以帮助简化路由表。如果一个路由器只需要将数据包转发到一个默认网关,而不需要为每个目标网络都配置具体的路由信息,那么路由表会更加简洁和易于管理。
总之,默认路由在处理未知目标网络和连接到其他网络时起到了关键作用。它允许路由器将数据包转发到一个默认网关,确保数据包不会被丢弃,并且简化了路由表的配置和管理。
相关文章:
 
IPv4,IPv6,TCP,路由
主要回顾一下TCP/IP的传输过程,在这个过程中,做了什么事情 ip : 网际协议,IP协议能让世界上任意两台计算机之间进行通信。 IP协议的三大功能: 寻址和路由传递服务:不可靠(尽最大努力交付传输数据包&…...
Java 计算文本相似度
接受一个字符串和一个字符串列表作为参数的 Java 方法,用于计算两个字符串之间的相似度。 方法 import java.util.HashSet; import java.util.List; import java.util.Set;public class StringSimilarity {/*** 计算两个字符串之间的相似度* param str1 第一个字符…...
MySQL 视图
目录 一、视图概述 二、视图的作用和优点 三、视图的使用规则 四、视图操作 1、创建视图 2、查看视图 1)查看视图基本信息 2)查看视图详细信息 3、修改视图 4、更新视图 5、删除视图 一、视图概述 视图是数据库中的一个虚拟表,同真…...
 
深入理解回调函数qsort:从入门到模拟实现
🍁博客主页:江池俊的博客 💫收录专栏:C语言进阶之路 💡代码仓库:江池俊的代码仓库 🎪我的社区:GeekHub 🎉欢迎大家点赞👍评论📝收藏⭐ 文章目录 前…...
【Git基础】获取远程仓库
我们通常从远程服务器克隆一个Git仓库或者将本地仓库初始化为Git仓库。 1 从远程服务器克隆一个Git仓库 $ git clone https://github.com/your-username/your-repo-name你可以自定义其仓库名称: $ git clone https://github.com/your-username/your-repo-name cu…...
 
chatGPT界面
效果图: 代码: <!DOCTYPE html> <html> <head><title>复选框样式示例</title> </head> <style>* {padding:0;margin: 0;}.chatpdf{display: flex;height: 100vh;flex-direction: row;}.chatpdf .pannel{widt…...
windows一键启动jupyter
windows一键启动jupyter jupyter简介 Jupyter是一个开源的交互式计算环境,主要用于数据分析、数据可视化和科学计算。它的名字来源于三种编程语言的缩写:Julia、Python和R,这三种语言都可以在Jupyter环境中运行。如果您想进行数据分析、科学…...
 
树形结构的快速生成
背景 相信大家都遇到过树形结构,像是文件列表、多级菜单、评论区的设计等等,我们都发现它有很多层级,第一级可以有多个,下边的每一个层级也可以有多个;有的可以设计成无限层级的,有的只能设计成两级。那么…...
Android笔记(二十七):自定义Dialog实现居中Toast
背景 记录实现符合项目需求的Toast弹窗 具体实现 class MyTipDialog private constructor(val context: Activity): Dialog(context, R.style.MyTipTheme) {val resId ObservableField(0)private val mainHandler Handler(Looper.getMainLooper())init {setCanceledOnTouc…...
 
css实现文字的渐变,适合大屏
1 在全局写一个全局样式,文字渐变 2 在组件中使用 CSS3利用-webkit-background-clip: text;实现文字渐变效果_css如何把盒子底部的文字变成透明渐变_I俩月亮的博客-CSDN博客 CSS 如何实现文字渐变色 ?_css字体颜色渐变_一个水瓶座程序猿.的博客-CSDN博客…...
软考高级系统架构设计师系列论文八十七:论企业应用集成
软考高级系统架构设计师系列论文八十七:论企业应用集成 一、企业应用集成相关知识点二、摘要三、正文四、总结一、企业应用集成相关知识点 软考高级系统架构设计师系列之:企业集成平台技术的应用和架构设计二、摘要 本文讨论了某公司的应用系统集成项目。某公司为了应对市场变…...
 
C++设计模式之适配器模式
一、适配器模式 适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换成另一个类所期望的接口,以便两个类能够协同工作。 适配器模式可以解决现有类接口与所需接口不匹配的问题,使得原本因接口不…...
 
山西电力市场日前价格预测【2023-08-24】
日前价格预测 预测明日(2023-08-24)山西电力市场全天平均日前电价为319.98元/MWh。其中,最高日前电价为370.78元/MWh,预计出现在19: 30。最低日前电价为272.42元/MWh,预计出现在12: 45。 价差方向预测 1: 实…...
 
一文速学-让神经网络不再神秘,一天速学神经网络基础(一)
前言 思索了很久到底要不要出深度学习内容,毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新,很多坑都没有填满,而且现在深度学习的文章和学习课程都十分的多,我考虑了很久决定还是得出神经网络系列文章,…...
百度Q2财报:营收341亿元实现加速增长,净利润高速增长44%,增长强劲全线重构
北京时间8月22日,百度发布了截至2023年6月30日的第二季度未经审计的财务报告。第二季度,百度实现营收341亿元,同比增长15%;归属百度的净利润(non-GAAP)达到80亿元,同比增长44%。营收和利润双双实…...
 
ARM DIY(二)配置晶振频率
文章目录 前言串口乱码问题定位内核修改晶振频率uboot 修改晶振频率番外篇 前言 上篇文章《ARM DIY 硬件调试》介绍了 DIY ARM 板的基础硬件焊接,包括电源、SOC、SD 卡座等,板子已经可以跑起来了。 但是发现串口乱码,今天就来解决串口乱码问…...
高等数学:线性代数-第三章
文章目录 第3章 矩阵的初等变换与线性方程组3.1 矩阵的初等变换3.2 矩阵的秩3.3 方程组的解 第3章 矩阵的初等变换与线性方程组 3.1 矩阵的初等变换 矩阵的初等变换 下面三种变换称为矩阵的初等变换 对换两行(列),记作 r i ↔ r j ( c i …...
深入理解 SQL 注入攻击原理与防御措施
系列文章目录 文章目录 系列文章目录前言一、SQL 注入的原理二、防御 SQL 注入攻击的措施1. 使用参数化查询2.输入验证与过滤3.最小权限原则4.不要动态拼接 SQL5.ORM 框架6.转义特殊字符三、实例演示总结前言 SQL 注入是一种常见的网络攻击方式,攻击者通过在输入框等用户交互…...
 
QT5.12.12通过ODBC连接到GBase 8s数据库(CentOS)
本示例使用的环境如下: 硬件平台:x86_64(amd64)操作系统:CentOS 7.8 2003数据库版本(含CSDK):GBase 8s V8.8 3.0.0_1 为什么使用QT 5.12.10?该版本包含QODBC。 1&#…...
 
爱校对发布全新PDF校对工具,为用户带来更为便捷的校正体验
随着数字化文档使用的普及,PDF格式已经成为最为广泛使用的文件格式之一。为满足广大用户对于高效、准确PDF文档校对的需求,爱校对团队经过深入研发,正式推出全新的PDF校对工具! 这一全新工具针对PDF文件格式进行了深度优化&#…...
 
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
 
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
 
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
 
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
 
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
 
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...


