计算机网络(四)网络层

news2025/2/7 20:46:37

网络层

基本概念

网络互联:

将两个以上的计算机网络,通过一定的办法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。中间设备又称中间系统或中继系统

中继系统分为4种:

  1. 物理层中继系统:中继器,集成器
  2. 数据链路层中继系统:网桥和交换机
  3. 网络层中继系统:路由器
  4. 网络层以上的中继系统:网关

IPV4

IP(Internet Protocol)是互联网协议的缩写,它定义了计算机如何在互联网上寻址和传输数据。IP协议是互联网的核心技术之一,它允许全球范围内的计算机网络相互通信

IPv4分组(也称为IPv4数据报)的格式包括一个头部和一个可选的数据部分头部包含控制信息,用于指导分组在网络中的传输,而数据部分则包含要传输的实际数据
在这里插入图片描述

IP数据报首部 + 数据部分

IP首部部分重要字段
  1. 版本(Version):占 4 位,指示了IPv4协议的版本号,通常为 4

  2. 首部长度(Header Length):占 4 位,表示IPv4首部的长度(记录了整个首部的长度),以 32 位字为单位。IPv4首部的长度是可变的,通常为 20 字节,最大为 60 字节。

    假设首部长度:0101 (5) ,按照一个字32位来算,那5则是(5 * 4 = 20B(字节)); 表示该首段部分总共为20个字节

  3. 总长度(Total Length):占 16 位,表示整个IPv4数据报的长度,包括首部和数据部分的总长度

    16位表示最大数为216 - 1 =65536,表示最大能有65536个字节
    在这里插入图片描述

    由于以太网的最大传输单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部 + 数据部分) 不能超过下面的数据链路层的MTU值

  4. 服务类型(Type of Service):占 8 位,用于描述数据报的服务类型和优先级,如优先权、延迟、吞吐量等。通常用于流量控制和QoS(服务质量)

  5. 标识(Identification):占 16 位,它是一个计数器,每产生一个数据报就加1,并赋给标识字段。但它并不是“序号”。当一个数据报的长度超过网络的MTU时,必须分片(后面介绍),(就是数据部分太大了,超过了范围,必须拆分,拆分后需要有个标识,清楚拆分后属于哪个包就需要有个标识)。此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报

  6. 标志(Flags):占 3 位,包括 DF(Don’t Fragment)、MF(More Fragments)和保留位

    MF = 1表示后面还有分片,MF = 0表示最后一个分片

  7. 片偏移(Fragment Offset):占 13 位,用于标识分段数据报在原始数据报中的位置

  8. 生存时间(Time to Live):占 8 位,指定数据报在网络中的生存时间,每经过一个路由器就减 1,当生存时间为 0 时,数据报将被丢弃

  9. 协议(Protocol):占 8 位,指定了数据报中的上层协议类型,如TCP、UDP、ICMP等

  10. 首部校验和(Header Checksum):占 16 位,用于校验IPv4首部的完整性,保证数据报在传输过程中没有被损坏

  11. 源 IP 地址和目的 IP 地址(Source IP Address, Destination IP Address):每个地址占 32 位,分别指定了数据报的源地址和目的地址

  12. 选项(Options):可选字段,用于指定一些可选的参数和控制信息,如记录路由选项、时间戳选项等

  13. 填充(Padding):用于填充首部使得其长度是32位的整数倍

IP数据报分片

IP数据报分片(IP Datagram Fragmentation)是指在IPv4协议中,当一个数据报太大,无法通过某个网络接口的MTU(最大传输单元)时,网络设备(通常是路由器)会将其分割成多个较小的数据报片段(分片),以便能够通过该网络接口。每个分片都包含一个IP头和一部分原始数据

分片的格式:

  1. 标识(Identification):
    标识字段用于标识分片的原始数据报
    每个分片和原始数据报都包含相同的标识值
  2. 标志(Flags):
    标志字段包含一个分片标志(0),表示这是分片还有一个保留标志,用于未来的扩展,目前应该设置为0
  3. 片偏移(Fragment Offset):
    片偏移字段用于指示每个分片在原始数据报中的位置分片的偏移量以8字节为单位,所以最大值为127 x 8 = 1024字节
  4. 数据(Data):
    分片包含原始数据报的一部分
    数据的长度由总长度字段决定
网络层转发分组的流程
  1. 接收数据报:

    路由器的网络接口接收到一个数据报(或数据包),该数据报通常包含了目标IP地址和源IP地址等信息

  2. 解析目标IP地址:

    路由器解析数据报中的目标IP地址,以确定数据报的目标网络

  3. 查询路由表

    路由器查询本地路由表,根据目标IP地址查找最佳的转发路径。
    路由表中存储了网络层地址与输出接口的映射关系,以及下一跳路由器的地址(如果有)

  4. 选择下一跳路由器

    如果目标IP地址与路由表中的网络地址不匹配,路由器将选择一个下一跳路由器来转发数据报。
    下一跳路由器是能够将数据报转发到目标网络的路由器。

  5. 转发数据报

    路由器根据路由表的信息,将数据报转发到相应的输出接口或下一跳路由器。
    路由器根据目标MAC地址将数据报封装成帧,并通过物理链路发送出去。

  6. 到达目标网络

    经过一系列路由器的转发,数据报最终到达目标网络。
    在目标网络上,路由器将根据目标IP地址将数据报交付给目标主机或下一跳路由器。

  7. 目标主机处理

    如果数据报到达了目标主机,目标主机将从数据报中提取数据,并进行相应的处理,如TCP连接建立、数据包转发等

IPV4地址

IP地址,都是由网络号和主机号两个部分组成。即IP地址:{<网络号>, <主机号>} 其中网络号标主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的

IPV4地址分类:
在这里插入图片描述

IP地址的重要特点:

  1. 每个IP地址都由网络号和主机号两部分组成,一种分级等级地址结构

    IP地址管理机构在分配IP地址时只分配网络号;主机号则由第一级该网络的单位自行分配,方便了IP地址的管理

    路由器仅根据目的主机所连接的网络号来转发分组,从而减少了路由器表所占的存储空间

  2. IP地址是标志一台主机(或路由器)和一条链路的接口

  3. 用转发器或桥接器(网桥)连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,主机号必须不同

  4. IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的

  5. 同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有两个以上的IP的地址路由器的每个端口都有一个不同网络号的IP地址

网络地址转换(NAT(Network Address Translation))

是一种在路由器或防火墙等网络设备上执行的技术,用于将私有IP地址转换为公共IP地址,以实现内部网络和外部网络(例如互联网)之间的通信

为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接(私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet)

私有IP网段

在IPv4中,有一部分IP地址被保留用于私有网络,这些地址不会在互联网上公开路由,因此被称为私有地址。私有地址网段是由互联网号码分配 authority (IANA) 定义的标准,它们可以在任何组织内部自由使用,而不会与互联网上的其他设备冲突

A类:10.0.0.0 到 10.255.255.255(10.0.0.0/8)
B类:172.16.0.0 到 172.31.255.255(172.16.0.0/12)
C类:192.168.0.0 到 192.168.255.255(192.168.0.0/16)

NAT的工作过程

地址转换规则配置:管理员配置NAT设备的地址转换规则,包括内部私有地址和外部公共地址的映射关系。通常包括源地址转换(将内部私有地址转换为外部公共地址)和目标地址转换(将外部公共地址转换为内部私有地址)。

内部主机发送数据:当内部主机发送数据包到外部网络时,数据包的源IP地址是内部私有地址,目标IP地址是外部公共地址。

NAT设备进行地址转换:NAT设备接收到数据包后,根据预先配置的地址转换规则,将数据包的源IP地址替换为外部公共地址,并更新数据包的校验和等相关字段。

路由器转发数据:NAT设备根据转换后的地址信息,将数据包转发到外部网络中的目标主机或路由器。

目标主机返回数据:外部网络中的目标主机收到数据包后,将响应数据包发送回内部网络。响应数据包的目标IP地址是NAT设备的外部公共地址。

NAT设备进行逆向地址转换:NAT设备接收到响应数据包后,根据预先配置的地址转换规则,将数据包的目标IP地址替换为内部私有地址,并更新相关字段。

内部主机接收数据:最后,NAT设备将转换后的响应数据包发送到内部网络中的目标主机,完成数据通信过程

eg:

  1. 假设某个宿舍办理了100Mb/s电信宽带,那这个宿舍就获得了一个全球IP地址(假设138.76.30.7),而宿舍内4台主机使用私有地址(如192.168.0.0)
  2. 宿舍的网关路由器启动NAT功能,并应用路由器上的NAT转换表
  3. 当路由器从LAN端口收到源IP及源端口号为192.168.0.2:2233的数据报时,将其映射成138.76.30.7:5001,然后从WAN端口发送到因特网上
  4. 当路由器从WAN端口收到目的IP及目的端口为138.76.30.7:5060的数据报时,就将其映射成192.168.0.3:1234,完后从LAN端口发送给相应的本地主机。
  5. 这样,只需一个全球地址,就可以让多台主机同时访问因特网
子网划分

子网划分纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络

从主机号借用若干比特号作为子网号,当然主机号也就相应减少了相同的比特。三级IP地址的结构:IP地址 = {<网络号>, <子网号>, <主机号>}

子网掩码

子网掩码(Subnet Mask)是一种32位的二进制数字,用于指示一个IP地址中网络号和主机号的边界。子网掩码中的连续的1表示网络号部分,连续的0表示主机号部分。子网掩码通常与IPv4地址一起使用,用于划分IP地址空间,将一个网络划分为若干个子网

子网掩码的常见表示方法有两种:点分十进制表示法和CIDR表示法

  1. 点分十进制表示法将32位的二进制子网掩码划分为4个8位的二进制数,并将每个8位的二进制数转换为对应的十进制数,用点号分隔开

    例如,子网掩码255.255.255.0的二进制表示是11111111.11111111.11111111.00000000

  2. CIDR(Classless Inter-Domain Routing)表示法将子网掩码表示为IP地址后面跟着一个斜杠和一个数字,表示网络号占用的位数

    例如,CIDR表示法中,子网掩码255.255.255.0通常表示为“/24”,表示网络号占用了前24位,主机号占用了后8位

ARP

ARP(Address Resolution Protocol)是一种用于在IPv4网络中解析IP地址与MAC地址之间对应关系的协议。它是网络通信中的重要组成部分,用于将IP地址转换为对应的MAC地址,以实现数据包在局域网中的传输

每台主机都设有一个ARP高速缓存,用来存放局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表

工作原理

  1. 当主机A要发送数据到主机B时,它首先检查自己的ARP缓存中是否有主机B的IP地址对应的MAC地址。如果有,则直接使用缓存中的MAC地址发送数据包

  2. 如果主机A的ARP缓存中没有主机B的IP地址对应的MAC地址,它会发送一个ARP请求广播帧到局域网中的所有主机,询问谁拥有目标IP地址对应的MAC地址

  3. 局域网中的其他主机收到ARP请求后,会检查请求中的IP地址是否与自己匹配。如果匹配,则向主机A发送ARP响应,包含自己的MAC地址

  4. 主机A收到ARP响应后,将目标IP地址与MAC地址的对应关系存储到自己的ARP缓存中,并使用这个MAC地址发送数据包

DHCP

DHCP(Dynamic Host Configuration Protocol)是一种网络协议,用于动态地为网络中的设备分配IP地址和其他网络配置参数,如子网掩码、默认网关、DNS服务器等。DHCP协议能够自动化地管理和分配网络配置,简化了网络管理人员的工作,并提高了网络的灵活性和可扩展性

过程

  1. 客户端发现:当一个设备加入网络时(例如打开电脑或连接到无线网络),它会发送一个DHCP发现广播消息到局域网中的所有设备,请求获取网络配置信息。

  2. DHCP服务器提供IP地址:局域网中的DHCP服务器收到客户端的发现消息后,会从可用的IP地址池中选择一个IP地址,并将其分配给客户端。
    DHCP服务器向客户端发送一个DHCP提供消息,包含分配给客户端的IP地址和其他网络配置参数。

  3. 客户端请求网络配置:客户端收到DHCP提供消息后,会向DHCP服务器发送一个DHCP请求消息,确认接受分配的IP地址和其他网络配置参数。

  4. DHCP确认:DHCP服务器收到客户端的请求消息后,会向客户端发送一个DHCP确认消息,确认客户端已经成功获取了网络配置信息。

  5. 网络配置应用:客户端收到DHCP确认消息后,会将分配到的IP地址和其他网络配置参数应用到自己的网络设置中,从而完成网络配置过程

IP组播

IP组播(IP Multicast)是一种用于在IP网络中向多个目的地发送数据的通信模式。它允许一个发送者将数据发送到一个IP组播地址,然后网络中的多个接收者可以通过加入该组播组来接收数据

组播地址

IP组播地址是一个特殊的IP地址范围,用于标识一个组播组。IPv4的组播地址范围是224.0.0.0到239.255.255.255,IPv6的组播地址范围是FF00::/8

组播地址中的每个接收者都可以通过加入相应的组播组来接收发送到该组播地址的数据

加入组播组

主机可以通过使用特定的协议(如IGMP或MLD)向本地路由器发送请求,请求加入一个或多个组播组

当路由器收到加入组播组的请求后,它会在自己的路由表中添加相应的条目,以便将组播数据转发到相应的主机

组播数据传输

发送者将数据发送到特定的组播地址,而不是发送到单个主机的IP地址

中间路由器负责将组播数据转发到所有加入了该组播组的主机

路由器使用多播路由协议(如PIM)来维护和更新组播转发树,确保组播数据沿着最有效的路径传输到所有接收者

应用

主机可以通过使用特定的协议(如IGMP或MLD)向本地路由器发送请求,请求加入一个或多个组播组

当路由器收到加入组播组的请求后,它会在自己的路由表中添加相应的条目,以便将组播数据转发到相应的主机

组播数据传输

发送者将数据发送到特定的组播地址,而不是发送到单个主机的IP地址

中间路由器负责将组播数据转发到所有加入了该组播组的主机

路由器使用多播路由协议(如PIM)来维护和更新组播转发树,确保组播数据沿着最有效的路径传输到所有接收者

应用

IP组播通常用于流媒体、在线游戏、多播文件传输等应用场景,其中需要向多个接收者同时传输相同的数据流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1598286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

thinkphp 框架封装curl请求

tp6 或者 tp8框架 在框架的app/common.php 文件里加一些方法就可以 app\common.php 在这个文件里加 以下代码 就可以实现基于 curl的请求方法 (记得要开启 php的curl扩展) 查看方法 cmd里输入 php -m if (!function_exists(get)) {/*** 发送get请求* param string $url 请求…

ChatGPT实用指南2024

随着ChatGPT技术的演进&#xff0c;越来越多的人开始在工作中利用此工具。以下是关于ChatGPT的实用指南&#xff0c;适合不太熟悉此技术的朋友参考。 一、ChatGPT概述 1. ChatGPT是什么&#xff1f; ChatGPT是基于OpenAI开发的GPT大型语言模型的智能对话工具。它能够通过自然语…

前端框架模板

前端框架模板 1、vue-element-admin vue-element-admin是基于element-ui 的一套后台管理系统集成方案。 **功能&#xff1a;**https://panjiachen.github.io/vue-element-admin-site/zh/guide/#功能 **GitHub地址&#xff1a;**GitHub - PanJiaChen/vue-element-admin: :t…

网盘——添加好友

关于添加好友&#xff0c;过程如下&#xff1a; A、首先客户端A发送加好友的请求&#xff0c;发送的信息包括双方的用户名 B、当服务器收到请求之后&#xff0c;服务器将数据库中在线用户查找出来&#xff0c;如果客户端B已经是你的好友了&#xff0c;服务器告诉客户端A他已经…

【深度学习】深度学习md笔记总结第5篇:神经网络与tf.keras,学习目标【附代码文档】

深度学习笔记完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;深度学习课程&#xff0c;深度学习介绍要求,目标,学习目标,1.1.1 区别,学习目标,学习目标。TensorFlow介绍&#xff0c;2.4 张量学习目标,2.4.1 张量(Tensor),2.4.2 创建张量的指令,2.4.3 张量…

Sublime Text下载,安装,安装插件管理器,下载汉化插件

SublimeTest官网 © Sublime Text中文网 下载安装 一路点击安装即可 安装插件管理器 管理器官网安装 - 包控制 (packagecontrol.io) 手动安装将3 位置点击网址下载 再打开SublimeTest 点击 选择第一个Browse Packages..... 将会跳转到文件夹中 进入上一个文件夹 在进入…

【模拟】Leetcode 提莫攻击

题目讲解 495. 提莫攻击 算法讲解 前后的两个数字之间的关系要么是相减之差 > 中毒时间 &#xff0c;要么反之 那即可通过示例&#xff0c;进行算法的模拟&#xff0c;得出上图的计算公式 class Solution { public:int findPoisonedDuration(vector<int>& time…

MySql 安装,小白也可以学会成功安装的保姆级教程

MySql 安装 文章目录 MySql 安装1.Mysql下载1.1 访问下载链接1.2 选择合适版本1.3 下载安装包 2.MySql安装3.安装成功检测验证3.1 mysql自带控制台验证3.2 win系统控制台进入验证 4. mysql 配置path5. navicat 连接 mysql 1.Mysql下载 1.1 访问下载链接 MySQL Downloads 这里…

定时器、PWM定时器、UART串口通信

我要成为嵌入式高手之4月15日ARM第八天&#xff01;&#xff01; ———————————————————————————— 定时器 S3C2440A 有 5 个 16 位定时器。其中定时器 0、1、2 和 3 具有脉宽调制&#xff08;PWM&#xff09;功能。定时器 4 是一个无 输出引脚的内部…

电商技术揭秘二十五:电商平台的智能库存管理与优化

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

【DM8】ET SQL性能分析工具

通过统计SQL每个操作符的时间花费&#xff0c;从而定位到有性能问题的操作&#xff0c;指导用户去优化。 开启ET工具 INI参数&#xff1a; ENABLE_MONITOR1 MONITOR_SQL_EXEC1 查看参数 select * FROM v$dm_ini WHERE PARA_NAMEMONITOR_SQL_EXEC;SELECT * FROM v$dm_ini WH…

Fiddler工具的操作和功能时-----定位到步骤图(助力抓包)

前言&#xff1a; 继续上一篇&#xff0c;已经对fiddler的安装、配置和代理的问题进行了讲解&#xff1a; Fiddle配置代理&#xff0c;保手机模拟器访问外部网络-CSDN博客 本章&#xff0c;讲对一些fiddler的操作进行一系列讲解&#xff01;Fiddler作为一款网络调试工具&…

小型时间继电器ST3PA-C DC24V 带插座PF085A 导轨安装 JOSEF约瑟

ST3P系列时间继电器 系列型号 ST3PF-2Z(JSZ3F-2Z) 5s AC110V ST3PF(JSZ3F) 10s AC48V ST3PC-1(AH3-3) 5s DC24V ST3PC-1(AH3-3) 2h AC220V ST3PC-F(JSZ3C-F) AC380V ST3PA-E(JSZ3A-E) DC24V ST3PA-F(JSZ3A-F) DC24V ST3PF(JSZ3F) 10s AC36V ST3PC-1(AH3-3) 10s AC24V ST3PC-1…

基于SSM+Jsp+Mysql的贝儿米幼儿教育管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

【包邮送书】MicroPython项目开发实战

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

读天才与算法:人脑与AI的数学思维笔记01_洛夫莱斯测试

1. 创造力 1.1. 创造力是一种原动力&#xff0c;它驱使人们产生新的、令人惊讶的、有价值的想法&#xff0c;并积极地将这些想法付诸实践 1.2. 创造出在表面上看似新的东西相对容易 1.3. 在遇到偶然间的创造性行为时&#xff0c;都会表现得异…

建立时间/保持时间为负是什么情况

目录 建立时间为负保持时间为负参考 在说明建立时间和保持时间为何为负的情况下&#xff0c;首先可以看看建立时间Tsu和保持时间Th的由来&#xff0c;可参考如下两篇文章&#xff1a; 建立时间和保持时间理解_为什么要满足建立时间和保持时间-CSDN博客 ic基础|时序篇&#xff…

分布式文件系统HDFS-1

文章目录 主要内容一.分布式文件系统HDFS1.定义2.优缺点3.原理4.设计思想及原则5.框架结构 6.HDFS的主要组件包括7.块、名称节点和数据节点8.HDFS冗余数据保存9.数据存取策略 总结 主要内容 HDFS 一.分布式文件系统HDFS 1.定义 HDFS&#xff08;Hadoop Distributed File Syst…

使用python在本地指定的目录临时模拟服务器(3),2024年最新网易 面经

先自我介绍一下&#xff0c;小编浙江大学毕业&#xff0c;去过华为、字节跳动等大厂&#xff0c;目前阿里P7 深知大多数程序员&#xff0c;想要提升技能&#xff0c;往往是自己摸索成长&#xff0c;但自己不成体系的自学效果低效又漫长&#xff0c;而且极易碰到天花板技术停滞…

二叉树的前、中、后序遍历【c++】

前序遍历&#xff1a;根左右 中序遍历&#xff1a;左根右 后序遍历&#xff1a;左右根 #include <iostream> #include <vector> using namespace std;//双链表节点结构 typedef struct treeNode {int value;struct treeNode* left;struct treeNode* right;treeNod…