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

网络编程--网络理论基础(二)

这里写目录标题

  • 网络通信流程
    • mac地址、ip地址
    • arp协议
    • 交换机
    • 路由器
      • 简介
      • 子网划分
      • 网关
    • 路由
    • 总结
  • 为什么ip相同的主机在与同一个互联网服务通信时不冲突
    • 公网ip
    • 对于同一个路由器下的不同设备,虽然ip不冲突,但是因为都是由路由器的公网ip转发通信,接收返回的数据时,如何区分
  • VPN
    • 简介
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录

网络通信流程

mac地址、ip地址

在网络中通讯,本质上都在依赖网卡进行通讯,mac地址唯一标识一张网卡,相当于一张网卡的唯一id号,所以,发送数据时,知道了发送端的mac地址以及接收端的mac地址,就可以实现两个设备的网络通信
而ip地址,是在网络环境中唯一标识一台主机,是网络层的标识,ip地址是可变的(由相关设备进行分配),并不像mac地址一样(出厂即固定),尽管ip是可变的,但是我们可以固定一台主机的ip,所以这并不影响通信时,ip与mac的对应,所以,就有了arp协议

arp协议

由于网络通信本质上是网卡在进行数据传输,所以,我们发送一个数据时,我们肯定知道发送端的mac地址,但是接收端,我们一般只知道其ip地址,且在应用层,是使用ip地址进行代码编写,并不能指定其mac地址,那该如何呢,这时就用到了arp协议,arp协议会根据目标主机的ip地址,在当前的网络环境中进行广播(可能是交换机(内网)、也可能是互联网),发送arp报文请求,而对应的ip主机会收到该arp报文请求,并回复一份arp报文,将自己的mac地址告诉发送端,这样,发送端就知道了接收端的mac地址,且发送端会缓存每次请求来的mac地址

交换机

在这里插入图片描述
交换机是两张网卡通讯的桥梁,一个交换机上有许多的端口,交换机的各个端口之间是可以互相通信的,而每个端口又连接着一个网卡,所以,网卡与网卡之间的通讯,实际上是通过交换机的端口来进行,交换机就是网卡与网卡通讯的桥梁

在这里插入图片描述
这个端口与网卡的mac对应表,称为mac地址表

在这里插入图片描述
当一个网卡想给另一个网卡发送数据包时,依据交换机,如何可以直接在当前交换机查询到目标端口,则直接从目标端口发送到目标mac地址,而如果查询不到,则将该数据群发,称之为泛洪。
之所以群发,是因为交换机本身也不是孤立的,交换机可以与其他多台交换机连接,形成一张大的连接网,这就叫网络,群发的话,数据就会被发送到别的交换机,只要目标mac在当前的网络中,就一定可以找到目标mac

路由器

简介

在这里插入图片描述
路由器分为LAN口和WAN口,LAN口用来接各种家庭中的设备,而WAN口用来接运营商提供的互联网,从而连接到互联网中
LAN也被称为局域网,WAN也被称为广域网

如果没有WAN口,那么路由器就是一台交换机,也是一个子网
而WAN口,实际上是另一台交换机,只不过这台交换机是全球通信的巨大的一张网,称为互联网,是另一个子网
而路由器就是网关,负责两个子网之间的通信的桥梁

子网划分

在这里插入图片描述
首先要清楚子网掩码,子网掩码默认为255.255.255.0,用二进制表示就是111111…11100000000,前24位都是1,最后8位是0
而一个ip与子网掩码相&的结果,就是其子网,如果两个ip与子网掩码相&的结果相同,那么就说这两个ip在同一个子网中

而相&的规则是,1 & x = x,0 & x = 0,基于此规则,我们可以得出结论,如果两个ip的前三段一样,那么这两个ip就是在同一个子网中,如
192.168.1.6与192.168.1.7是在一个子网中

可以知道,连接在同一个路由器LAN口的设备,属于同一个子网,也就属于同一个交换机

在这里插入图片描述
我们可以使用1的数量来表示掩码是多少,因为掩码除了1就是0,所以可以使用子网的前三段再加上/掩码(1的个数),来表示一个子网。

而子网中0越多,表示可使用的ip数量越多,对应的也就1越少,而1越少,根据“可以使用1的个数来表示掩码”的原理,1越少,掩码越小
所以,就有:
调小子网掩码->就可以扩大ip数量
调大子网掩码->就可以减少ip数量

网关

在这里插入图片描述
而tcp/ip协议规定,不同子网直接是不可以直接进行网络通信的,而担当起不同子网之间通信的桥梁,就是网关,网关会安装不同的网卡,分配配置上“适用于不同子网的ip”,这样,网关就可以负责不同子网之间的通信连接了

当发生端想要发送数据时,先判断目标mac的ip是否在子网,如果是,那么目标就是在交换机上的内网,则直接通过网卡发出,如果不是子网,那么就将目标mac地址改为网关的mac,发送给网关,之后网关通过路由表,查询到对应的子网,将数据以自己的mac地址为源,发送到目标端

上面的这个判断过程,就是路由,由路由器判断如何进行数据发送以及完成最后的数据发送

补充:网关关注于网络间的数据传输和协议转换,其作用是连接和中介不同的网络环境。数据传输:就是我们上面谈到的不同子网之间数据的传输。而我们要补充的是,网关还负责着不同协议直接的转换,如下图:
在这里插入图片描述
在网关上下,有着两种不同类型的协议,网关可以负责帮助在不同协议之间进行数据的传输

路由

在这里插入图片描述
在这里插入图片描述
如果没有WAN口,那么路由器就是一台交换机,也是一个子网
而WAN口,实际上是另一台交换机,只不过这台交换机是全球通信的巨大的一张网,称为互联网,是另一个子网
而路由器就是网关,负责两个子网之间的通信的桥梁

而路由器根据ip判断是通过内网还是通过网关,进行数据发送,并执行数据发送的行为,就是路由(可见上面“网关”的最后一段话)

总结

路由器内LAN口:子网,内网,相当于普通内部道路
路由器内WAN口:另一个子网,互联网,相当于贯通全国的高速公路
网关:路由器就担任网关的角色,相当于高速收费站,是普通内部路到高速,或者高速到内部路的关卡、桥梁

为什么互联网可以连接那么广,可以将他视为一个巨大的交换机,每个路由器的WAN口都对应其中一个端口,通过WAN口可以与任何一个接通LAN口的路由器通讯,而路由器又可以完成互联网到内网的转发,从而保证任何“连接了互联网”的主机可以访问任何“连接到互联网”的内网服务
在这里插入图片描述

为什么ip相同的主机在与同一个互联网服务通信时不冲突

在这里插入图片描述

公网ip

在这里插入图片描述
那是因为主机连接的路由器会有一个公网ip,发出时,将源ip改为路由器公网ip发出(这个操作就叫snat),服务器回发数据时,将发给公网ip,路由器接到数据后,将目标ip改成主机ip,发送到主机上,这样,同一个路由器下的不同设备,ip不可能冲突,而不同路由器下的设备,虽然ip可能相同,但是因为使用的是路由器的公网ip进行互联网通信,所以,正是由于路由器不同,公网ip才不同,就不会产生ip冲突了

对于同一个路由器下的不同设备,虽然ip不冲突,但是因为都是由路由器的公网ip转发通信,接收返回的数据时,如何区分

在这里插入图片描述

在这里插入图片描述
对于这个情况,发出时,snat时,不仅仅在路由器层面修改源ip,同时再修改源端口号,哪怕两个主机ip相同以及端口号相同,发出时,会以公网ip+不同的端口号进行发送,即,会将两个主机的端口在路由器的位置,修改成不同的端口,接收时,根据端口号,判断是哪个主机,然后再改回原来主机的真实ip+端口号

VPN

简介

VPN是虚拟专用网络,主要用途是建立一条数据传输网络通道,并且该通道是加密通道,可以保护数据不被互联网的其他节点窃取
其次,VPN可以代理IP地址,可以隐藏自己真实的IP,伪装成不同地域的IP
或者包装数据为合规数据,进而绕过防火墙的检查

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

相关文章:

网络编程--网络理论基础(二)

这里写目录标题 网络通信流程mac地址、ip地址arp协议交换机路由器简介子网划分网关 路由总结 为什么ip相同的主机在与同一个互联网服务通信时不冲突公网ip对于同一个路由器下的不同设备,虽然ip不冲突,但是因为都是由路由器的公网ip转发通信,接…...

Python MongoDB 基本操作

本文内容主要为使用Python 对Mongodb数据库的一些基本操作整理。 目录 安装类库 操作实例 引用类库 连接服务器 连接数据库 添加文档 添加单条 批量添加 查询文档 查询所有文档 查询部分文档 使用id查询 统计查询 排序 分页查询 更新文档 update_one方法 upd…...

Node.js 入门:

Node.js 是一个开源、跨平台的 JavaScript 运行时环境,它允许开发者在浏览器之外编写命令行工具和服务器端脚本。以下是一些关于 Node.js 的基础教程: 1. **Node.js 入门**: - 了解 Node.js 的基本概念,包括它是一个基于 Chro…...

java8 List的Stream流操作 (实用篇 三)

目录 java8 List的Stream流操作 (实用篇 三) 初始数据 1、Stream过滤: 过滤-常用方法 1.1 筛选单元素--年龄等于18 1.2 筛选单元素--年龄大于18 1.3 筛选范围--年龄大于18 and 年龄小于40 1.4 多条件筛选--年龄大于18 or 年龄小于40 and sex男 1.5 多条件筛…...

机器学习python实践——数据“相关性“的一些补充性个人思考

在上一篇“数据白化”的文章中,说到了数据“相关性”的概念,但是在统计学中,不仅存在“相关性”还存在“独立性”等等,所以,本文主要对数据“相关性”进行一些补充。当然,如果这篇文章还能入得了各位“看官…...

MySQL——触发器(trigger)基本结构

1、修改分隔符符号 delimiter $$ $$可以修改 2、创建触发器函数名称 create trigger 函数名 3、什么样在操作触发,操作哪个表 after :……之后触发 before :……之后触发 insert :……之后触发 update :……之后触…...

数字孪生定义及应用介绍

数字孪生定义及应用介绍 1 数字孪生(Digital Twin, DT)概述1.1 定义1.2 功能1.3 使用场景1.4 数字孪生三步走1.4.1 数字模型1.4.2 数字影子1.4.3 数字孪生 数字孪生地球平台Earth-2 参考 1 数字孪生(Digital Twin, DT)概述 数字孪…...

数据赋能(122)——体系:数据清洗——技术方法、主要工具

技术方法 数据清洗标准模型是将数据输入到数据清洗处理器,通过一系列步骤“清理”数据,然后以期望的格式输出清理过的数据。数据清洗从数据的准确性、完整性、一致性、惟一性、适时性、有效性几个方面来处理数据的丢失值、越界值、不一致代码、重复数据…...

【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——中

1. 某学校对入学的新生进行性格问卷调查(没有心理学家的参与),根据学生对问题的回答,把学生的性格分成了8个类别。请说明该数据挖掘任务是属于分类任务还是聚类任务?为什么?并利用该例说明聚类分析和分类分析的异同点。 解答: (a)该数据…...

2024年注册安全工程师报名常见问题汇总!

​ 注册安全工程师报名 24年注册安全工程师报名已正式拉开序幕,报名时间为6月18日—7月10日,考试时间为10月26日—10月27日。 目前经有12个地区公布了2024年注册安全工程师报名时间: 注册安全工程师报名信息完善 根据注安报名系统提示&am…...

JRebel-JVMTI [FATAL] Couldn‘t write to C:\Users\中文用户名-完美解决

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 热部署下载参考博客解决第一步第二步第三步:第四步: 热部署下载 下载后启动报错:JRebel-JVMTI [FATAL] Couldn’t write to C:\…...

STM32基于DMA数据转运和AD多通道

文章目录 1. DMA数据转运 1.1 初始化DMA步骤 1.2 DMA的库函数 1.3 设置当前数据寄存器 1.4 DMA获取当前数据寄存器 2. DMA数据转运 2.1 DMA.C 2.2 DMA.H 2.3 MAIN.C 3. DMAAD多通道 3.1 AD.C 3.2 AD.H 3.3 MAIN.C 1. DMA数据转运 对于DMA的详细解析可以看下面这篇…...

安卓应用开发——Android Studio中通过id进行约束布局

在Android开发中,布局通常使用XML文件来描述,而约束(如相对位置、大小等)可以通过多种方式实现,但直接使用ID进行约束并不直接对应于Android的传统布局系统(如LinearLayout、RelativeLayout等)。…...

Elasticsearch过滤器(filter):原理及使用

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...

Docker配置与使用详解

一、引言 随着云计算和微服务的兴起,Docker作为一种轻量级的容器化技术,越来越受到开发者和运维人员的青睐。Docker通过容器化的方式,将应用程序及其依赖项打包成一个可移植的镜像,从而实现了应用程序的快速部署和扩展。本文将详…...

触控MCU芯片(1):英飞凌PSoC第6代第7代

前言: 说到触摸MCU芯片,这个历史也是很久了,比如日常经常接触到的洗衣机、电冰箱、小家电,隔着一层玻璃,轻轻一按就能识别按键,感觉比过去纯机械式的按键更高级更美观,不仅白电,现在很多汽车也都在进行触摸按键的改版,不再使用笨重的机械按键,比如空调调温按键、档位…...

git pull报错:unable to pull from remote repository due to conflicting tag(s)

背景 我在vscode里正常拉取代码,突然就报了如题所示的错误。 原因 因为vscode的拉取按钮执行的实际命令是:git pull --tags origin branch-name,该命令的实际含义是从远程仓库拉取指定的分支和该远程仓库上的所有标签。 在拉取标签时本地的…...

Python将字符串用特定字符分割并前面加序号

Python将字符串用特定字符分割并前面加序号 Python将字符串用特定字符分割并前面加序号,今天项目中就遇到,看着不难,得花点时间搞出来急用啊,在网上找了一圈,没发现有完整流程的文章。所以就搞出来并写了这个文章。仅…...

【第16章】Vue实战篇之跨域解决

文章目录 前言一、浏览器跨域二、配置代理1.公共请求2.代理配置 总结 前言 前后端项目分离衍生出浏览器跨域问题,开发之前我们通过配置代理解决这个问题。 一、浏览器跨域 浏览器的跨域问题主要是由于浏览器的同源策略导致的。同源策略是浏览器的一个安全功能&…...

【PB案例学习笔记】-22制作一个语音朗读金额小应用

写在前面 这是PB案例学习笔记系列文章的第22篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

【AI学习】三、AI算法中的向量

在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究

摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...