网络编程--网络理论基础(二)
这里写目录标题
- 网络通信流程
- 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…...
glmark2代码阅读总结
glmark2代码阅读总结 一、总体 用输入参数生成testbench项用scene和benchmark管理进行复用通过类的重载,创建出不同的分支和具体的实现点,如scene和mainloop类用例执行又规划,每个scene都统一有setup,等使用scene的继承关系&…...
第 6 章 监控系统 | 监控套路 - 总结
前面,我们使用 Prometheus + Grafana + Node Exporter 实现虚拟机监控及告警。 那么,😇 监控的套路究竟是什么呢? 第 1 步:暴露 metrics,通过某个 exporter 将 metrics 暴露出来第 2 步:配置 Prometheus 抓取上面暴露的 metrics 数据第 3 步:加速 metrics 显示,配置…...
VsCode中C文件调用其他C文件函数失败
之前一直使用CodeBlocks,最近使用vscode多,感觉它比较方便,但在调用其他C文件的时候发现报错以下内容基于单C文件运行成功,否则请移步 博文:VSCode上搭建C/C开发环境 报错信息 没有使用CodeRunner插件,弹…...
css中content属性你了解多少?
在CSS中,content属性通常与伪元素(如 ::before 和 ::after)一起使用,用于在元素的内容之前或之后插入生成的内容。这个属性不接受常规的HTML内容,而是接受一些特定的值,如字符串、属性值、计数器值等。 以…...
JVM-GC-G1垃圾回收器
JVM-GC-G1垃圾回收器 基本概念 card table card table概念是为了解决新生代对象进入老年代时,在进行新生代扫描的时候会遍历老年代对象的问题。将内存分为多个card,如果在一个老年代card中存在引用新生代对象的对象,则将该区域标记及为dirty card。 CS…...
【Ubuntu通用压力测试】Ubuntu16.04 CPU压力测试
使用 stress 对CPU进行压力测试 我也是一个ubuntu初学者,分享是Linux的优良美德。写的不好请大佬不要喷,多谢支持。 sudo apt-get update 日常先更新再安装东西不容易出错 sudo apt-get upgrade -y 继续升级一波 sudo apt-get install -y linux-tools…...
Artix Linux 默认不使用 systemd
开发者选择不使用systemd,而倾向于使用OpenRC或runit作为其初始化系统的原因。 哲学和设计原则:Systemd是一个功能丰富的初始化系统和系统管理器,它集成了许多功能,但这也导致它的设计哲学与一些用户或开发者的偏好不符。有些用户…...
JVM-GC-CMS垃圾回收器
JVM-CMS垃圾回收器 CMS垃圾回收的步骤 1. 初始标记(InitialMarking) 这是一个STW的过程,并行标记,只是标记GC Roots能直接关联到的对象。由于GC Root直接关联的对象少,因此STW时间比较短。 2. 并发标记 非STW的过程&…...
【玩转google云】实战:如何在GKE上使用Helm安装和配置3节点的RabbitMQ集群
需求 因项目需要需要在Google Kubernetes Engine (GKE) 中使用Helm安装一个3节点的RabbitMQ集群,配置用户名和密码,开通公网访问的Web管理界面,指定namespace为mq,并使用5G的硬盘存储MQ的数据。 前提条件 GKE集群:确保你有一个运行中的GKE集群。Helm工具:确保已安装Hel…...
【神经网络】深度神经网络
深度神经网络(Deep Neural Network,简称DNN)是一种模仿人脑神经网络结构和工作原理的机器学习模型。它通过层级化的特征学习和权重调节,能够实现复杂任务的高性能解决方案。深度神经网络由多个神经元层组成,每个神经元…...
住房和城乡建设委员会官方网站/seo优化是什么
本文档的Copyleft归rosetta所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性。参考资料:《Linux设备驱动程序》第3版 LDD3e, LKD3e, 《 Linux per-CPU实现分析 》,linux-2.6.27,irq_balance要…...
传奇私服网站怎么做/广州网站快速排名
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565【项目3- 有趣的数字】先阅读例题,体会处理数字的一般方法,然后自行选题进行解决,掌握这种类型程序设计的一般方法。 任务:解决下面的问题&…...
日照建站外包/龙岗百度快速排名
用了FineUI有一段时间了,还是分享下我咋改的吧,没想的那么难,我也是从小白来的。 基础是要懂JQ和EXTJS,主要是要懂JQ和EXTJS能干啥,这里有两个网站http://www.w3school.com.cn/jquery/traversing_find.asphttp://extjs…...
怎么在word上做超链接网站/域名注册1元
连接数据库语法总结 1.连接Access数据库 //连接字符串 // mdbFileName是Access数据库文件的名称并放在debulg目录下 string MyConnCommand "ProviderMicrosoft.Jet.OLEDB.4.0;Data Source" mdbFileName; //相对路径 //在网站项目中,在web.config文件中配…...
wordpress修改教程视频/cba目前排行
最近一个月比较累,十月居然没有写任何的文章。一方面是家事比较多,另一方面是工作比较忙,也在方法积累期。现在就结合这段时间的工作总结一下经验。前面学习的软件架构等等,都是属于纯粹的技术设计。这段时间的工作很多是属于前期…...
电商加盟网站建设/搜百度盘
为什么80%的码农都做不了架构师?>>> 问题描述: svn查看日志显示连接服务器失败。你想使用缓存中的数据吗?后面还有三个选项“立即离线、永远离线、取消“。点击取消显示“Item is not readable”,没有日志信息。 解决…...