当前位置: 首页 > news >正文

网络通信流程

目录

♫IP地址

♫子网掩码

♫MAC地址

 

 ♫相关设备

 ♫ARP寻址

 ♫网络通信流程


♫IP地址

我们已经知道 IP 地址由网络号+主机号组成,根据 IP 地址的不同可以有5钟划分网络号和主机号的方案:

其中,各类地址的表示范围是:

分类范围适用网络网络数量主机最大连接数
A类0.0.0.0 ~ 127.255.255.255大型网络12616777214    【(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));要包含这个头文件&#xff0c;如果没有这两个&#xff0c;rand()函数会一直生成42这个伪随机数。*/using namespace std;int main() {srand((unsigned int)time(NULL));//种子&#xff0c;…...

优化批处理流程:自定义BatchProcessorUtils的设计与应用

优化批处理流程&#xff1a;自定义BatchProcessorUtils的设计与应用 | 原创作者/编辑&#xff1a;凯哥Java | 分类&#xff1a;个人小工具类 在我们开发过程中&#xff0c;处理大量的数据集是一项常见的任务。特别是在数据库操作、文件处理或者…...

Framebuffer应用编程

目录 前言 LCD操作原理 涉及的 API 函数 open函数 ioctl 函数 mmap 函数 Framebuffer程序分析 源码 1.打开设备 2.获取LCD参数 3.映射Framebuffer 4.描点函数 5.随便画几个点 上机实验 前言 本文介绍LCD的操作原理和涉及到的API函数&#xff0c;分析Framebuffer…...

MongoDB根据字段内容长度查询语句

db.getCollection("qlzx_penalties_business_raw").find({$expr: {$lt: [{ $strLenCP: "$punish_name" }, 5]},"punish_name_type" : "机构", "source_data" : /中国/,})解释&#xff1a; 1-"source_data" : /中…...

Android中的单例模式

在Android开发中&#xff0c;单例模式&#xff08;Singleton Pattern&#xff09;是一种常用的设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。单例模式在需要控制资源访问、管理共享资源或配置信息的场景下特别有用。在Androi…...

python做游戏好用吗

Python做游戏是完全可以的&#xff0c;而且也非常简单&#xff0c;有一个专门针对游戏开发的平台&#xff08;模块&#xff09;—pygame&#xff0c;允许开发人员快速设计游戏而又摆脱了低级语言的束缚&#xff0c;下面我简单介绍一下这个模块的安装和使用&#xff1a; 1、首先…...

常用游戏运行库下载

包含以下资源&#xff1a; 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&#xff1a;contrastive language-image pretraining 利用文本的监督信号训练一个迁移能力特别强的视觉模型 传统的视觉模型&#xff0c;人工标注图像&#xff0c;那么…...

MongoDB高可用和分片集群知识

一、MongoDB实现高可用 1. MongoDB复制集(Replication Set) 在实际生产中&#xff0c;MongoDB要实现高可用&#xff0c;以免MongoDB单实例挂了&#xff0c;服务不可用。MongoDB实现高可用是以MongoDB复制集的形式实现&#xff0c;和集群部署概念相同&#xff0c;MongoDB复制集…...

【Python日志功能】一.日志基础与基本配置

文章目录 相关链接第一篇&#xff1a;日志基础与基本配置1 日志的概念与用途2 Python logging 模块介绍3 日志级别4 配置日志格式和输出位置4.1 配置日志格式4.2 配置输出位置 5 实验&#xff1a;基本日志配置和输出实验1&#xff1a;基本日志配置实验2&#xff1a;使用配置文件…...

深圳铨顺宏科技展邀您体验前沿人工智能技术

我们诚挚地邀请您参加即将举行的展会&#xff0c;探索RFID技术在资产与人员管理中的广泛应用。这些展会将为您提供一个深入了解前沿技术和创新解决方案的机会。 东莞台湾名品博览会&#xff08;东莞台博会&#xff09;展会时间&#xff1a;9月5日至8日。此次展会展示了来自台湾…...

Lombok:Java开发者的代码简化神器【后端 17】

Lombok&#xff1a;Java开发者的代码简化神器 在Java开发中&#xff0c;我们经常需要编写大量的样板代码&#xff0c;如getter、setter、equals、hashCode、toString等方法。这些代码虽然基础且必要&#xff0c;但往往占据了大量开发时间&#xff0c;且容易在属性变更时引发错误…...

[linux]GCC G++官方源码国内下载地址汇总

【GCC介绍】 GCC&#xff08;GNU Compiler Collection&#xff0c;GNU编译器套件&#xff09;是由GNU项目开发的一套编程语言编译器&#xff0c;也是GNU计划的关键部分。它最初作为GNU C Compiler&#xff08;GNU C语言编译器&#xff09;出现&#xff0c;但随着时间的推移&…...

部署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…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...