网络通信流程
目录
♫IP地址
♫子网掩码
♫MAC地址
♫相关设备
♫ARP寻址
♫网络通信流程
♫IP地址
我们已经知道 IP 地址由网络号+主机号组成,根据 IP 地址的不同可以有5钟划分网络号和主机号的方案:
其中,各类地址的表示范围是:
分类 范围 适用网络 网络数量 主机最大连接数 A类 0.0.0.0 ~ 127.255.255.255 大型网络 126 16777214 【(2^24)-2】 B类 128.0.0.0 ~ 191.255.255.255 中等规模网络 约16000 个 65534 【(2^16)-2】 C类 192.0.0.0 ~ 223.255.255.255 小型网络 - 254 【2^8-2】 D类 224.0.0.0 ~ 239.255.255.255 E类 240.0.0.0 ~ 247.255.255.255 上面 A 类、B 类、C 类的 IP 地址由网络号标识不同的广域网网段,而若想在广域网里再划分子网,就要通过子网掩码对 IP 地址进行子网划分。
♫子网掩码
子网掩码是一个32位地址,由连续的1和0组成,连续的1表示网络号,连续的0表示主机号,通过0的个数可以计算出子网中主机的IP地址范围。
如:用子网掩码255.255.255.252划分一个 C 类 IP 192.1.1.0:
①.将255.255.255.252转换为二进制为11111111.11111111.11111111.11111100,表示每个子网中只有4个IP地址(2^2)
②.192.1.1.0~192.1.1.255的地址段共可划分64(256/4)个子网,其中第一个子网的地址范围是192.1.1.0-192.1.1.3,第二个子网的地址范围是192.1.1.4-192.1.1.7,以次类推。
将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得到的结果就是网络标识(划分子网后的网络号/ 网段(划分前的网络号+子网号))。 将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。
注:
①.每个子网的第一个IP地址为网段地址(如:192.1.1.0、192.1.1.4),最后一个IP地址(如:192.1.1.3、192.1.1.7)为广播地址,都不可用。
②.IP 地址描述的是路途总体的起点和终点,是给人使用的网络逻辑地址。
♫MAC地址
MAC地址,即 Media Access Control Address,用于标识网络设备的硬件物理地址(每个网卡都有唯一的一个MAC地址),用于识别数据链路层中相连的节点,在网卡出厂时就确定了,不能修改。MAC地址长度为48位,一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19) 。
注:
①.广播数据报(对象为同网段所有主机)的MAC地址为: FF:FF:FF:FF:FF:FF。
②.MAC地址描述的是路途上的每一个区间的起点和终点,是给网络硬件设备使用的网络物理地址。
♫相关设备
♩.集线器:集线器工作在物理层,发送到集线器的任何数据,都只是简单的将数据复制并转发到其他所有端口(集线器后边的物理端口)。
♩.交换机:交换机工作在数据链路层,交换机内部会记录并维护一张 MAC 地址转换表:
①. MAC 地址转换表主要记录 MAC 地址与端口(交换机后边的物理端口)之间的映射。
②. 主机连接到交换机,及主机发送数据的时候,交换机都可以学习并记录该主机 MAC 地址与端口信息。
③. 交换机接收到数据报以后,在 MAC 地址转换表中,通过目的 MAC 查找到对应的端口,则目的主机为与该端口相连接的主机,只需要将数据报转发到对应端口上即可。
④.如果通过目的 MAC 找不到对应端口,交换机则设置数据报目的 MAC 为广播地址 FF:FF:FF:FF:FF:FF,发送到其他所有端口,目的主机返回响应后,交换机再记录该主机MAC与端口的映射信息。
♩.路由器:配有 IP 地址,可以进行路由选择(在复杂的网络结构中,找出一条通往终点的路线);是一种网关设备,可以划分公网和局域网(内网),同时还可以把局域网划分为多个子网(不同网段):
①. 划分局域网多个子网时,可以直接通过ARP寻址找到局域网任意主机。(这里的局域网就是路由器下的多个子网组成的局域网)。
②. 划分公网和局域网时,局域网内主机发送数据报到公网主机时,需要基于NAPT协议,将局域网主机的IP地址和端口号,转换为路由器公网IP和端口号(指路由器中运行的程序的端口)。
注:局域网IP+端口需要转换为公网IP+端口,原因是接收端返回的响应数据报,目的IP和目的端 口无法使用局域网IP和端口。
♫ARP寻址
ARP是一个介于数据链路层和网络层之间的协议,ARP 协议建立了IP地址与 MAC 地址的映射关系。 在数据链路层,寻找下一跳设备 MAC 地址的过程,称为 ARP 寻址:
①.主机和路由器中都保存了一张 ARP 缓存表,通过 IP 地址可以找到对应的 MAC 地址。
②.根据下一跳设备的 IP 地址,在 ARP 缓存表中能找到对应的 MAC 地址,则可以设置目的 MAC 并发送数据报。
③.如果找不到,则发送 ARP 广播数据报:目的 MAC 为广播地址,询问下一跳设备的 MAC 地址。
♫网络通信流程
发送数据报时,发送端主机都需要先根据网络分层从上到下封装:
封装过程中需要根据根据目的 IP 通过 ARP 寻址获取到目的设备的 MAC 地址,在数据链路层以太网帧头中,设置目的MAC并发送数据包。封装好数据后,就需要根据发送端主机(源主机)与接收端主机(目的主机)是否在同一网段,来设置下一跳设备:
①. 源主机和目的主机在同一个网段时,下一跳设备就是目的主机:
集线器找到目的 MAC 地址的情况:
集线器没找到目的 MAC 地址的情况:
交换机情况:
②.源主机和目的主机在不同网段时,发送端主机是无法知道目的主机在哪,此时会设置下一跳设备为网关设备:
相关文章:
网络通信流程
目录 ♫IP地址 ♫子网掩码 ♫MAC地址 ♫相关设备 ♫ARP寻址 ♫网络通信流程 ♫IP地址 我们已经知道 IP 地址由网络号主机号组成,根据 IP 地址的不同可以有5钟划分网络号和主机号的方案: 其中,各类地址的表示范围是: 分类范围适用…...
数据结构一:绪论
(一)数据结构的基本概念 1.相关名词 【1】数据 1.信息的载体,描述客观事物 2.能被输入到计算机中 3.能被计算机程序识别和处理的符号的集合。 【2】数据元素 1.数据的一个“个体” 2.数据的基本单位 3.有时候也被称为元素、结点、顶点…...
使用OpenFeign在不同微服务之间传递用户信息时失败
文章目录 起因原因解决方法: 起因 从pay-service中实现下单时,会调用到user-service中的扣减余额。 因此这里需要在不同微服务之间传递用户信息。 但是user-service中始终从始至终拿不到user的信息。 原因 在pay-service中,不仅要Enable O…...
js中【Worker】相关知识点详细解读
什么是 JavaScript 中的 Worker? JavaScript 中的 Worker 是一个可以在后台线程中运行代码的 API,这样可以避免主线程(通常是 UI 线程)被阻塞。使用 Worker 时,JavaScript 可以在多线程环境中工作,解决了单…...
使用Apify加载Twitter消息以进行微调的完整指南
# 使用Apify加载Twitter消息以进行微调的完整指南## 引言在自然语言处理领域,微调模型以适应特定任务是提升模型性能的常见方法。本文将介绍如何使用Apify从Twitter导出聊天信息,以便进一步进行微调。## 主要内容### 使用Apify导出推文首先,我…...
【C++算法】滑动窗口
长度最小的子数组 题目链接: 209. 长度最小的子数组 - 力扣(LeetCode)https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 算法原理 代码步骤: 设置left0,right0设置sum0,len0遍历l…...
(c++)猜数字(含根据当前时间生成伪随机数代码)
#include<iostream> #include<ctime>/*用srand((unsigned int)time(NULL));要包含这个头文件,如果没有这两个,rand()函数会一直生成42这个伪随机数。*/using namespace std;int main() {srand((unsigned int)time(NULL));//种子,…...
优化批处理流程:自定义BatchProcessorUtils的设计与应用
优化批处理流程:自定义BatchProcessorUtils的设计与应用 | 原创作者/编辑:凯哥Java | 分类:个人小工具类 在我们开发过程中,处理大量的数据集是一项常见的任务。特别是在数据库操作、文件处理或者…...
Framebuffer应用编程
目录 前言 LCD操作原理 涉及的 API 函数 open函数 ioctl 函数 mmap 函数 Framebuffer程序分析 源码 1.打开设备 2.获取LCD参数 3.映射Framebuffer 4.描点函数 5.随便画几个点 上机实验 前言 本文介绍LCD的操作原理和涉及到的API函数,分析Framebuffer…...
MongoDB根据字段内容长度查询语句
db.getCollection("qlzx_penalties_business_raw").find({$expr: {$lt: [{ $strLenCP: "$punish_name" }, 5]},"punish_name_type" : "机构", "source_data" : /中国/,})解释: 1-"source_data" : /中…...
Android中的单例模式
在Android开发中,单例模式(Singleton Pattern)是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式在需要控制资源访问、管理共享资源或配置信息的场景下特别有用。在Androi…...
python做游戏好用吗
Python做游戏是完全可以的,而且也非常简单,有一个专门针对游戏开发的平台(模块)—pygame,允许开发人员快速设计游戏而又摆脱了低级语言的束缚,下面我简单介绍一下这个模块的安装和使用: 1、首先…...
常用游戏运行库下载
包含以下资源: DirectX Repair.exe DirectX Repair(Enhanced Edition). vcredist C2013 x64.exe 微软常用运行库合集 下载链接...
(1)CLIP
CLIP 概述1. 训练与推理2. 最终效果与局限性3.后续应用3.1 DALL-E3.2 ActionCLIP3.3 CLIP-Event 概述 CLIP:contrastive language-image pretraining 利用文本的监督信号训练一个迁移能力特别强的视觉模型 传统的视觉模型,人工标注图像,那么…...
MongoDB高可用和分片集群知识
一、MongoDB实现高可用 1. MongoDB复制集(Replication Set) 在实际生产中,MongoDB要实现高可用,以免MongoDB单实例挂了,服务不可用。MongoDB实现高可用是以MongoDB复制集的形式实现,和集群部署概念相同,MongoDB复制集…...
【Python日志功能】一.日志基础与基本配置
文章目录 相关链接第一篇:日志基础与基本配置1 日志的概念与用途2 Python logging 模块介绍3 日志级别4 配置日志格式和输出位置4.1 配置日志格式4.2 配置输出位置 5 实验:基本日志配置和输出实验1:基本日志配置实验2:使用配置文件…...
深圳铨顺宏科技展邀您体验前沿人工智能技术
我们诚挚地邀请您参加即将举行的展会,探索RFID技术在资产与人员管理中的广泛应用。这些展会将为您提供一个深入了解前沿技术和创新解决方案的机会。 东莞台湾名品博览会(东莞台博会)展会时间:9月5日至8日。此次展会展示了来自台湾…...
Lombok:Java开发者的代码简化神器【后端 17】
Lombok:Java开发者的代码简化神器 在Java开发中,我们经常需要编写大量的样板代码,如getter、setter、equals、hashCode、toString等方法。这些代码虽然基础且必要,但往往占据了大量开发时间,且容易在属性变更时引发错误…...
[linux]GCC G++官方源码国内下载地址汇总
【GCC介绍】 GCC(GNU Compiler Collection,GNU编译器套件)是由GNU项目开发的一套编程语言编译器,也是GNU计划的关键部分。它最初作为GNU C Compiler(GNU C语言编译器)出现,但随着时间的推移&…...
部署opengauss5.0.3,细节满满
部署opengauss5.0.3 1.关闭安全服务 修改/etc/selinux/config文件中的“SELINUX”值为“disabled”。临时关闭selinux setenforce 0 查看selinux状态 getenforce2.host配置 [rootcentos79 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 local…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...






