当前位置: 首页 > 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…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: ​onCreate()​​ ​调用时机​:Activity 首次创建时调用。​…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

sshd代码修改banner

sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...

Canal环境搭建并实现和ES数据同步

作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

MLP实战二:MLP 实现图像数字多分类

任务 实战(二):MLP 实现图像多分类 基于 mnist 数据集,建立 mlp 模型,实现 0-9 数字的十分类 task: 1、实现 mnist 数据载入,可视化图形数字; 2、完成数据预处理:图像数据维度转换与…...

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起,为了跨网段推流,千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...

02-性能方案设计

需求分析与测试设计 根据具体的性能测试需求,确定测试类型,以及压测的模块(web/mysql/redis/系统整体)前期要与相关人员充分沟通,初步确定压测方案及具体的性能指标QA完成性能测试设计后,需产出测试方案文档发送邮件到项目组&…...