计算机网络 TCP/IP体系 网络层
一. 网络层的基本概念
网络层主要负责将数据从源端主机发送到目的端主机。在这一过程中,网络层要解决的关键问题是数据包的路由选择,即确定数据包通过互联网的最佳路径。
1.1 网络层的信息类型
- 数据包:这是网络层传输的主要形式,包含了从源端到目的端的实际用户数据。数据包通常包含头部和负载两部分。头部包含了源地址、目的地址、协议类型等关键信息,用于指导数据包在网络中的传输;而负载则是用户数据本身。
- 控制信息:这类信息主要用于动态路由协议,如RIP、OSPF等。这些协议通过交换路由表信息来帮助路由器发现并维护到达其他网络的最佳路径。
1.2 数据包服务
网络层向其上层只提供简单灵活的, 无连接的, 尽最大可能交付的数据报服务。网络层不提供服务质量的承诺。
二. IP协议
2.1 IP地址
- IPv4地址:32位,通常以点分十进制形式表示,分为网络部分和主机部分,使用子网掩码区分。例如:192.168.1.1。
- IPv6地址:128位,通常以冒号十六进制形式表示,分为前缀和接口标识符,支持零压缩和前导零省略。例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。
2.2 网段划分
2.2.1 分配IP地址
这种分类方法是在IPv4地址的早期设计中引入的,目的是为了方便网络管理和地址分配。根据IP地址的第一个字节的值,IPv4地址被划分为五类:A类、B类、C类、D类和E类。
- A类地址
范围:1.0.0.0 到 126.255.255.255
网络部分:第一个字节(8位)
主机部分:剩余三个字节(24位)
默认子网掩码:255.0.0.0 或 /8
用途:适用于大型网络 - B类地址
范围:128.0.0.0 到 191.255.255.255
网络部分:前两个字节(16位)
主机部分:剩余两个字节(16位)
默认子网掩码:255.255.0.0 或 /16
用途:适用于中型网络 - C类地址
范围:192.0.0.0 到 223.255.255.255
网络部分:前三个字节(24位)
主机部分:最后一个字节(8位)
默认子网掩码:255.255.255.0 或 /24
用途:适用于小型网络 - D类地址
范围:224.0.0.0 到 239.255.255.255
用途:用于多播(组播)通信 - E类地址
范围:240.0.0.0 到 255.255.255.255
用途:保留用于实验和研究
但这种分类方法存在一些明显的局限性:
- 地址浪费:每个类别的地址空间分配固定,导致地址资源的浪费。
- 灵活性差:不能很好地适应不同规模的网络需求。
2.2.2 无类域间路由(CIDR)
无类域间路由是一种IP地址分配和路由的方法,它消除了传统分类IP地址的固定界限,允许更灵活地分配和使用IP地址。CIDR的主要目标是提高IP地址的利用率,减少路由表的大小,并简化网络管理。
CIDR 的概念:
- 可变长度子网掩码:
在CIDR中,子网掩码的长度可以变化,不再局限于传统的8位、16位和24位。这意味着网络部分和主机部分的长度可以灵活调整。例如,一个网络可以使用 /24 子网掩码(255.255.255.0),而另一个网络可以使用 /26 子网掩码(255.255.255.192)。 - 网络前缀:CIDR使用网络前缀来表示一个IP地址块。网络前缀是一个IP地址的前N位,后面跟一个斜杠和一个数字,表示前缀的长度。例如,192.168.1.0/24 表示前24位是网络前缀,剩下的8位是主机部分。
工作机制:
-
地址分配:
- ISP分配:互联网服务提供商(ISP)可以分配一个CIDR地址块给客户。例如,ISP可以分配 192.168.1.0/24 给一个客户。
- 子网划分:客户可以根据需要进一步划分子网。例如,192.168.1.0/24 可以划分为两个 /25 子网:192.168.1.0/25 和 192.168.1.128/25。
-
路由聚合:
- 聚合多个网络:CIDR允许将多个连续的IP地址块汇总成一个更大的网络前缀。例如,如果有两个网络 192.168.1.0/24 和 192.168.2.0/24,可以将它们汇总为 192.168.0.0/23。
- 减少路由表大小:通过路由聚合,路由器只需要维护一个汇总的路由条目,而不是多个具体的路由条目,从而减少路由表的大小,提高路由效率。
2.3 IP报文的格式
IPv4报文的报头长度为20到60字节,其中基本报头长度为20字节,可选字段会增加报头的长度。
首部字段:
- 版本:
长度:4位
功能:标识IP协议的版本,对于IPv4,这个字段的值为4。 - 首部长度:
长度:4位
功能:表示IP报头的长度,以32位(4字节)为单位。最小值为5(即20字节),最大值为15(即60字节)。 - 服务类型:
长度:8位
功能:用于指示数据包的优先级和服务类型。这个字段现在通常被称为DS字段。 - 总长度:
长度:16位
功能:表示整个IP数据包的长度,包括报头和数据部分,以字节为单位。最大值为65535字节。 - 标识:
长度:16位
功能:用于唯一标识发送主机发出的数据包。主要用于分片和重组。 - 标志:
长度:3位
功能:
第一位保留,必须为0。
第二位:如果设置为1,表示不允许分片。
第三位:如果设置为1,表示还有后续的分片。 - 片偏移:
长度:13位
功能:表示该分片在原始数据包中的位置,以8字节为单位。 - 生存时间:
长度:8位
功能:表示数据包在网络中可以经过的最大跳数。每经过一个路由器,TTL值减1,当TTL值为0时,数据包会被丢弃。 - 协议:
长度:8位
功能:表示上层协议的类型,例如TCP(6)、UDP(17)、ICMP(1)等。 - 头部校验和:
长度:16位
功能:用于检测IP报头的完整性。注意,这个校验和不包括数据部分。 - 源地址:
长度:32位
功能:表示发送数据包的主机的IP地址。 - 目的地址:
长度:32位
功能:表示接收数据包的主机的IP地址。 - 选项:
长度:可变
功能:用于携带额外的控制信息,如路由记录、时间戳等。选项字段的存在使报头长度超过20字节。 - 填充:
长度:可变
功能:用于确保报头长度为32位的整数倍。
数据部分:
长度:可变
功能:包含上层协议的数据,如TCP或UDP数据。
2.4 IP层分片
IP层分组是指在网络层中,IP协议将上层传递下来的数据分割成适当大小的数据包,并通过网络进行传输的过程。其中MTU定义了数据链路层帧中数据部分的最大长度,IP层负责将数据包分割成适当大小的数据包。
IP层分片步骤如下:
- 接收上层数据:
IP层从传输层接收数据。这些数据通常是较大的数据块,需要被分割成适合在网络中传输的小数据包。 - 封装IP头部:
IP层为接收到的数据添加一个IP头部,包含必要的控制信息,如源IP地址、目的IP地址、协议类型等。IP头部的格式因IPv4和IPv6而异。 - 检查MTU:
IP层获取下一跳网络接口的MTU值。MTU定义了数据链路层帧中数据部分的最大长度,确保数据帧在物理网络中传输时不会过大,从而避免传输错误和提高传输效率。 - 分片:
- 分片条件:如果数据包的大小超过了MTU,IP层会将数据包分片,以便能够在网络中传输。
- 分片过程:
- 标识字段:为每个数据包分配一个唯一的标识字段,用于在接收端识别属于同一个原始数据包的分片。
- 标志字段:设置标志字段中的MF位,表示还有后续的分片。DF位用于禁止分片,如果设置为1,数据包不能被分片,否则会被丢弃。
- 片偏移字段:表示该分片在原始数据包中的位置,以8字节为单位。
- 传输分片:
- 封装分片:每个分片都被封装成一个新的IP数据包,包含新的IP头部。
- 发送分片:每个分片通过网络接口发送到下一跳路由器或最终目的地。
- 重组:
- 接收分片:接收端的IP层接收到所有分片。
- 重组过程:
- 缓冲区管理:接收端为每个数据包的标识字段创建一个缓冲区,用于存储接收到的分片。
- 分片排序:根据片偏移字段将分片按顺序排列。
- 完整性检查:确保所有分片都已到达,如果没有收到所有分片,可能会发送ICMP“超时”消息。
- 重组数据包:将所有分片合并成一个完整的数据包,并交给上层协议处理。
2.5 ARP协议
ARP是网络层的一个重要协议,用于将IP地址解析为物理地址(MAC地址)。
2.5.1 ARP数据报的格式
- 硬件类型:
长度:2字节
功能:表示使用的硬件类型。最常见的值是1,表示以太网。 - 协议类型:
长度:2字节
功能:表示使用的协议类型。最常见的值是0x0800,表示IPv4。 - 硬件地址长度:
长度:1字节
功能:表示硬件地址的长度。对于以太网MAC地址,长度为6字节。 - 协议地址长度:
长度:1字节
功能:表示协议地址的长度。对于IPv4地址,长度为4字节。 - 操作类型:
长度:2字节
功能:表示ARP操作的类型。常见的值包括:- ARP请求(ARP Request)
- ARP响应(ARP Reply)
- 发送方硬件地址:
长度:6字节
功能:发送ARP请求或响应的主机的MAC地址。 - 发送方协议地址:
长度:4字节(对于IPv4)
功能:发送ARP请求或响应的主机的IP地址。 - 目标硬件地址:
长度:6字节
功能:目标主机的MAC地址。在ARP请求中,这个字段通常为0,因为发送方不知道目标主机的MAC地址。在ARP响应中,这个字段包含目标主机的MAC地址。 - 目标协议地址:
长度:4字节(对于IPv4)
功能:目标主机的IP地址。
2.5.2 ARP协议的工作原理
- 发送ARP请求:
源主机A需要向目标主机B发送数据包,但不知道B的MAC地址。A构造一个ARP请求,包含自己的IP地址和MAC地址,以及B的IP地址。A将ARP请求以广播形式发送到局域网内的所有设备。 - 接收ARP请求:
局域网内的所有设备都会收到ARP请求。每个设备检查请求中的目标IP地址是否与自己的IP地址匹配。 - 发送ARP响应:
目标主机B发现请求中的目标IP地址与自己的IP地址匹配。B构造一个ARP响应,包含自己的IP地址和MAC地址。B将ARP响应以单播形式发送给源主机A。 - 接收ARP响应:
源主机A收到B的ARP响应,从中提取出B的MAC地址。A将B的IP地址和MAC地址对添加到自己的ARP缓存表中。 - 发送数据包:
A使用B的MAC地址将数据包封装在以太网帧中,并通过局域网发送给B。
2.6 ICMP协议
ICMP协议是一个网络层协议, 一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输。因此, ICMP正是提供这种功能的协议
2.6.1 ping
Ping 主要用于测试主机之间的可达性和延迟。
ping -c n example.com
-c: n 表示向example.com发送n次ICMP请求。
2.6.2 traceroute
Traceroute 用于查看从源主机到目标主机的详细路径信息,帮助诊断网络路径上的问题。
traceroute example.com
三. NAT技术
NAT是一种网络技术,它允许多个设备共享一个公共IP地址访问互联网,同时隐藏这些设备的真实内部IP地址。NAT的主要目的是解决IPv4地址资源不足的问题,并增强网络的安全性。
3.1 NAT的工作原理
- 地址转换:
- 当内部网络中的设备尝试通过路由器访问外部网络时,路由器会将内部设备的私有IP地址转换为公共IP地址。
- 返程的数据包到达路由器后,路由器再将公共IP地址转换回原始的私有IP地址,并将数据包转发给正确的内部设备。
- 端口映射:
- 为了区分来自同一内部IP地址的不同连接,NAT会在转换过程中使用不同的端口号。这样,即使多个内部设备使用相同的公共IP地址,路由器也能正确地将外部响应数据包发送给正确的内部设备。
- 这种机制称为端口地址转换(PAT),它是NAT的一种扩展形式。
3.2 NAT技术的缺陷
由于NAT依赖这个转换表, 所以有诸多限制:
- 无法从NAT外部向内部服务器建立连接。
- 装换表的生成和销毁都需要额外开销。
- 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开。
3.3 NAT和代理服务器
路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程。代理服务器看起来和NAT设备有一点像。客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器。服务器返回结果后, 代理服务器又把结果回传给客户端。
NAT和代理服务器的区别:
- 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器。
- 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层。
- 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网。
- 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上。
代理服务器一般分为两类: 正向代理, 反向代理。
3.3.1 正向代理
- 客户端配置代理服务器:
客户端需要配置代理服务器的地址和端口号。这通常是在浏览器设置、操作系统网络设置或应用程序配置中完成的。 - 客户端发起请求:
客户端向正向代理服务器发送请求。请求中包含目标服务器的地址和端口号。 - 正向代理服务器接收请求:
正向代理服务器接收到客户端的请求后,解析请求中的目标服务器地址和端口号。 - 正向代理服务器转发请求:
正向代理服务器根据解析到的目标服务器地址和端口号,向目标服务器发起新的请求。 - 目标服务器响应:
目标服务器接收到请求后,处理请求并生成响应数据包,然后将响应数据包发送回正向代理服务器。 - 正向代理服务器转发响应:
正向代理服务器接收到目标服务器的响应数据包后,将响应数据包转发给客户端。 - 客户端接收响应:
客户端接收到正向代理服务器转发的响应数据包,完成整个请求和响应过程。
3.3.2 反向代理
- 客户端发起请求:
客户端直接向反向代理服务器发送请求。客户端并不知道后端服务器的存在,只知道自己在访问反向代理服务器的地址和端口号。 - 反向代理服务器接收请求:
反向代理服务器接收到客户端的请求后,解析请求中的目标资源路径。 - 反向代理服务器选择后端服务器:
反向代理服务器根据配置规则(如负载均衡算法、会话保持策略等)选择一个合适的后端服务器。 - 反向代理服务器转发请求:
反向代理服务器将请求转发给选定的后端服务器。请求中可能包含一些额外的头信息,用于传递客户端的原始请求信息。 - 后端服务器响应:
后端服务器接收到请求后,处理请求并生成响应数据包,然后将响应数据包发送回6反向代理服务器。 - 反向代理服务器转发响应:
反向代理服务器接收到后端服务器的响应数据包后,将响应数据包转发给客户端。 - 客户端接收响应:
客户端接收到反向代理服务器转发的响应数据包,完成整个请求和响应过程。
————————————————————
感谢大家观看,不妨点赞支持一下吧喵~
如有错误,随时纠正喵~
原文地址:https://blog.csdn.net/Emilia_is_angel/article/details/143529552
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!