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

这里写目录标题

  • 网络通信流程
    • 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
或者包装数据为合规数据,进而绕过防火墙的检查

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/32203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Java中使用Apache Kafka进行消息队列处理

在Java中使用Apache Kafka进行消息队列处理 消息队列(Message Queue)是分布式系统中用于异步通信的关键组件,广泛应用于解耦生产者和消费者、平滑流量突增、提高系统弹性等场景。Apache Kafka作为一个高吞吐量、分布式的消息队列系统,已经成为许多企业的首选。本文将介绍如…

Linux 进程管理指令

Linux 进程管理是系统管理的重要部分,通过各种工具和命令,你可以查看、控制、调试和管理进程。以下是一些常用的 Linux 进程管理命令和工具。 查看进程 1. ps ps 命令用于列出当前系统的进程。 查看当前用户的所有进程: ps -u $USER查看…

Python statistics 模块

Python 的 statistics 模块提供了一组用于执行各种统计计算的函数,包括平均值、中位数、标准差、方差以及其他统计量。让我来简单介绍一下。 首先,你可以使用以下方式导入 statistics 模块: python import statistics 接下来,…

主流中间件--Redis

NOSQL 什么是NOSQL NoSQL(NoSQL Not Only SQL ),意即“不仅仅是SQL”,它泛指非关系型的数据库。 关系型数据库:以关系(由行和列组成的二维表)模型建模的数据库。简单理解:有表的就是关系型数据库。 NOSQL分类 Redis 什么是Redi…

内容安全复习 7 - 对抗攻击与防御

文章目录 概述攻击对抗性攻击的目的攻击的损失函数如何攻击FGSM黑盒与白盒真实世界的攻击 防御被动防御主动防御 概述 动机 (1)不仅要在实验室中部署机器学习分类器,也要在现实世界中部署;实际应用 (2)分类…

shell jq教程

1. jq 简介 jq 是一款命令行下处理JSON数据的工具。其可以接受标准输入,命令管道或者文件中的JSON数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将结果输出到标准输出中。jq的这种特性使我们可以很容易地在Shell脚本中调用它…

LeetCode 23. 合并 K 个升序链表

更多题解尽在 https://sugar.matrixlab.dev/algorithm 每日更新。 组队打卡,更多解法等你一起来参与哦! LeetCode 23. 合并 K 个升序链表,难度困难。 优先队列(小顶堆) 解题思路:拿到题首先想到以下几个方…

【数据结构】线性表之《栈》超详细实现

栈 一.栈的概念及结构二.顺序栈与链栈1.顺序栈2.链栈1.单链表栈2.双链表栈 三.顺序栈的实现1.栈的初始化2.检查栈的容量3.入栈4.出栈5.获取栈顶元素6.栈的大小7.栈的判空8.栈的清空9.栈的销毁 四.模块化源代码1.Stack.h2.Stack.c3.test.c 一.栈的概念及结构 栈:一种…

程序猿成长之路之数据挖掘篇——决策树分类算法(1)——信息熵和信息增益

决策树不仅在人工智能领域发挥着他的作用,而且在数据挖掘中也在分类领域中独占鳌头。了解决策树的思想是学习数据挖掘中的分类算法的关键,也是学习分类算法的基础。 什么是决策树 用术语来说,决策树(Decision Tree)是…

Go自定义数据的序列化流程

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

数据库设计概述-数据库设计内容、数据库设计方法(基于E-R模型的规范设计方法)

一、引言 如何利用关系数据库理论设计一个满足应用系统需求的数据库 二、数据库设计内容 1、数据库设计是基于应用系统需求分析中对数据的需求,解决数据的抽象、数据的表达和数据的存储结构等问题 2、其目标是设计出一个满足应用要求、简洁、高效、规范合理的数…

Map集合之HashMap细说

最近在看面试题,看到了hashmap相关的知识,面试中问的也挺多的,然后我这里记录下来,供大家学习。 Hashmap为什么线程不安全 jdk 1.7中,在扩容的时候因为使用头插法导致链表需要倒转,从而可能出现循环链表问…

航行在水域:使用数据湖构建生产级 RAG 应用程序

在 2024 年年中,创建一个令人印象深刻和兴奋的 AI 演示可能很容易。需要一个强大的开发人员,一些聪明的提示实验,以及一些对强大基础模型的API调用,你通常可以在一个下午建立一个定制的AI机器人。添加一个像 langchain 或 llamain…

c++ 内存分析模型、引用

一、内存模型分区 内存四区的意义: 不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程 (一)程序运行前 在程序编译后,生成了exe可执行程序,未执行程序前分为两个区域 代码区&…

2024hw蓝队面试题--4

SQL注入特征,误报原因以及怎么处理告警? 1.非法字符检测:这种类型的攻击通常会使用特殊字符,如单引号()、双引号(")、分号(;)、注释符号(--或/、/)等。检测输入中是否包含这类特殊字符是识别SQL注入攻击的一种方法。 2.堆栈…

PostgreSQL源码分析——审计插件pgaudit

PostgreSQL审计插件pgaudit 在PostgreSQL中,提供了开源的审计插件pgaudit,但是其功能并不完善,只提供了基本的审计功能,对此,很多基于PG开发的商业数据库大多提供了丰富的审计功能。比如人大金仓,openGaus…

健康实训室:老年保健与管理实训室的建设方案

一、建设背景和意义 我国正处于人口老龄化的加速期,随着老龄人口的不断增加,老年人的健康与养老问题已成为社会关注的热点问题。针对这一现状,建设老年保健与管理实训室具有重要的现实意义和战略价值: 1、培养高素质的老年保健和管理人才。老年保健与管理实训室的建设可以为医…

IOS Swift : 从入门到精通结构、属性和方法 结构体,第一部分

文章目录 创建自己的结构计算属性属性观察者方法变异方法字符串的属性和方法数组的属性和方法 创建自己的结构 Swift 允许你以两种方式设计自己的类型,其中最常见的是结构,或简称为structs。结构可以拥有自己的变量和常量,以及自己的函数&am…

浅谈Java23种设计模式之结构型模式的几种使用场景

前言 这是设计模式的第二期;继续根据实际开发应用场景解析这几种结构型设计模式. 1.适配器模式(Adapter) 概念: 它允许两个不兼容的接口通过适配器类工作在一起。这种模式通常用于将已存在的类(被称为适配者)的接口转换成客户端…

升级指南:探索CMMI2.0与3.0之间的企业变革!

CMMI2.0和CMMI3.0对企业的要求在某些方面有所变化,主要体现在以下几个方面: CMMI2.0对企业的要求 1.人员要求: 硬性要求:确保企业有25名以上的技术人员和10名以上的支持人员。 设立专门的人员对接CMMI评估,负责体系…