计算机网络
静态路由
静态路由是一种由网络管理员手动配置的路由方式,用来明确指示网络设备(如路由器、三层交换机)如何转发数据包到特定的目的网络。与动态路由不同,静态路由不会根据网络状态自动调整,需要管理员手动设置和维护。
基本原理
当一个数据包到达路由器时,路由器会查找其路由表,决定如何转发这个数据包。路由表包含了目的网络的 IP 地址以及到达该网络的下一跳(即下一个路由器的 IP 地址或本地接口)。静态路由就是在路由表中手动添加的特定路径,明确指出某个目的网络应该通过哪个下一跳路由器或接口来转发。
工作原理
- 路由表的匹配:
- 路由器接收到数据包后,检查数据包的目的 IP 地址。
- 路由器会将目的 IP 地址与其路由表中的每一条路由记录进行匹配,寻找最佳的匹配路径。
- 查找静态路由:
- 如果路由表中有静态路由,并且它匹配数据包的目的网络,路由器会根据这条静态路由指示的下一跳或接口来转发数据包。
- 数据包转发:
- 路由器将数据包转发给指定的下一跳路由器或通过指定的接口直接发送到目的网络。
- 无匹配处理:
- 如果没有找到合适的匹配路由,路由器可能会丢弃数据包,或者如果配置了默认路由(
0.0.0.0/0),则将数据包发往默认路由指定的路径。
- 如果没有找到合适的匹配路由,路由器可能会丢弃数据包,或者如果配置了默认路由(
例子
假设网络中有两个子网 192.168.1.0/24 和 192.168.2.0/24,它们分别连接在两个不同的路由器上。如果路由器A连接到 192.168.1.0/24 网络,而路由器B连接到 192.168.2.0/24,你可以在路由器A上添加一条静态路由,指示去往 192.168.2.0/24 网络的数据包应通过路由器B的 IP 地址发送。可以做到两个子网之间数据包的互通,尤其是对于主路由下设备访问子路由设备的情况(另外一种实现方式是端口转发)。
静态NAT表
计算机网络中,静态NAT表是一种由管理员手动配置的地址(含端口)转换记录,用于建立内部私有地址,与外部公有地址之间永久、一对一的映射关系。这种表的核心作用是确保特定的私有IP地址始终被转化为固定的公网地址,并且允许双向通信。适用于需要从公网地址反向访问内官的场景。(就是端口映射、虚拟服务器这些概念)。
静态NAT表配置时通常需要填写:内网服务ip:port,公网ip:port,协议(如TCP/UDP)。
OSI七层模型
OSI模型(开放系统互联模型)是一个标准的网络通信模型,它将网络通信过程分为七个不同的层级,每一层负责不同的功能。以下是OSI七层模型的各层和其主要功能:
一、物理层(Physical Layer)
- 负责物理设备之间的信号传输,如电缆、光纤和无线信号等。
- 传输原始比特流
二、数据链路层(Data Link Layer)
- 负责在物理设备之间建立、维护和断开连接
- 处理帧数据的发送、接收以及错误检测与纠正。
- 常见协议:以太网(Ethernet)、PPP、帧中继(Frame Relay)。
三、网络层(Network Layer)
- 负责数据包的路由和转发
- 处理IP地址和网络协议(如IP协议)的相关操作。
- 常见协议:IP(Internet Protocol)、ICMP(Internet Control Message Protocol)
四、传输层(Transport Layer)
- 负责提供端到端的通信服务,包括流量控制、错误检测和纠正。
- 确保数据包的可靠传输,可能使用分段、重组机制。
- 常见协议:TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)。
五、会话层(Session Layer)
- 负责在通信双方之间建立、管理和终止会话。
- 提供会话恢复、数据同步等功能。
- 例子包括:NetBIOS、RPC(Remote Procedure Call)。
六、表示层(Presentation Layer)
- 负责数据的格式化、编码和加密。
- 确保不同系统间的数据能够互相理解,例如文本、图像、压缩和加密等。
- 常见功能包括数据压缩、加密、解密等。
七、应用层(Application Layer)
- 直接为用户和应用程序提供网络服务。
- 处理应用程序之间的交互,如文件传输、电子邮件和远程登录等。
- 常见协议:HTTP、FTP、SMTP、DNS等。
ARP协议
ARP(地址解析协议)是 链路层(Layer 2)的协议。具体来说,ARP 是用于将 IP 地址(网络层协议)映射到 MAC 地址(数据链路层协议)的协议,因此它运行在 OSI 模型的链路层。
ARP 主要用于 局域网(LAN)内的设备之间。它的主要功能是将 32 位的 IP 地址(在 IPv4 中)转换为 48 位的 MAC 地址,从而使得以太网等链路层协议能够正确地传输数据。
- 链路层(Layer 2) 负责的是 MAC 地址的转发。
- 网络层(Layer 3) 负责的是 IP 地址的路由和转发。
因此,当主机需要发送数据到另一个设备的 IP 地址时,它需要知道对方的 MAC 地址。ARP 通过广播方式询问网络中谁拥有某个 IP 地址,然后获取对应的 MAC 地址。
ARP 在 OSI 模型中的位置
- 链路层(Layer 2):ARP 协议本身运行在链路层,它帮助设备在同一网络段内识别目标设备的 MAC 地址。
- 网络层(Layer 3):ARP 主要解决的是网络层的 IP 地址与链路层的 MAC 地址之间的映射。
ARP 工作原理
- 主机 A 想要向主机 B 发送数据,它知道 B 的 IP 地址,但不知道 B 的 MAC 地址。
- 主机 A 发送一个 ARP 请求,这是一个广播消息,询问网络中谁拥有 IP 地址
192.168.1.2(主机 B 的 IP 地址)。 - 所有在同一网络上的设备都会接收到这个请求,但只有拥有该 IP 地址的设备(主机 B)会发送一个 ARP 响应,其中包含它的 MAC 地址。
- 主机 A 获取到主机 B 的 MAC 地址后,将数据包发送到该 MAC 地址。
ARP 与其他协议的关系
- Ethernet(以太网)是链路层的协议,它通过 MAC 地址来转发数据帧。ARP 帮助设备在发送以太网帧之前知道目标设备的 MAC 地址。
- IP(Internet Protocol)是网络层协议,负责根据目标 IP 地址来进行路由。ARP 协议桥接了网络层和链路层之间的鸿沟,使得设备能够在局域网内根据 IP 地址进行通信。
HTTP协议
X-Forward-For(XFF)
X-Forward-For是一个HTTP请求字段,用于识别通过HTTP代理或负载均衡器连接到Web服务器的客户端的原始IP地址。
网络拥塞控制
URL
常见问题
问题:mysql、mongodb的数据库连接url中不能包含#(尤其是密码,需要进行编码):
原因:URL(统一资源定位符)通常由几个部分组成:
# 协议://主机名:端口/路径?查询参数#片段标识符
scheme://hostname:port/path?query#fragment一些预留的字符有自己特殊的含义,用到时需要进行URL编码(百分号编码),也就是将特殊字符转换为%加上其十六进制ASCII值的形式。
?->%3F:查询参数分隔符&->%26:查询参数连接符/->%2F:路径分隔符(空格)->%20或+#->%23:片段标识符%->%25