网络原理(一)网络基础,包括IP ,网络相关的定义

网络基础,包括IP ,网络相关的定义

  • 网络基础
    • 冲突域
    • 广播域
    • DNS
    • NAT
    • NAPT

网络基础

以下图片是书上的网图。

什么是IP地址?

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。P地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

格式:通常是一个32位的二进制数,被分割成4个8位二进制

IP地址分为两个部分,网络号和主机号

  • 网络号:标识网段,保证相互连接的两个网段具有不同的标识;
  • 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
    在这里插入图片描述
    在这里插入图片描述

这个因为时代问题,现在大部分存在的IP地址通常都是 IPv4 ,使得所有的IP地址会有用完的一天。此时就有可能出现IP不够用的一天,并且在中美问题出现问题的今天,IP地址的分配是有美国进行全球分配的,对于国防和网络安全存在隐患,所以经过国家统一调度,使得国内的设备现在支持两种 IP 方式,也就是 IPv6 和 IPv4,目前国内还在沿用 IPv4 ,但是遇到 特殊状况,就可以随时启动 IPv6 ,规避风险。

在上述分类中:存在 IP 地址浪费的问题:

  1. 单位一般会申请B类网络(C类连接主机数量有限),但实际网络架设时,连接的主机数量又常远
    小于65534(B类连接主机数),造成IP地址浪费;同理,A类网络的IP地址也会造成大量的浪费。

  2. 当一个单位申请了一个网络号。他想将该网络能表示的IP地址再分给它下属的几个小单位时,如果
    在申请新的网络就会造成浪费。

而为了解决子网掩码的问题,引入了子网掩码来进行子网划分。

什么是子网掩码?
子网掩码格式和IP地址一样,也是一个32位的二进制数。

  • 其中左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度
  • 右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度

作用:
划分A,B,C三类 IP 地址子网

如一个B类IP地址:191.100.0.0,按A ~ E类分类来说,网络号二进制数为16位网络号+16位主机号。假设使用子网掩码255.255.128.0(即17) 来划分子网,意味着划分子网后,高 17 位都是网络位 / 网络号,也就是将原来16位主机号,划分为1位子网号+15位主机号。

IP地址组成为:网络号+子网号+主机号,网络号和子网号统一为网络标识(划分子网后的网络号 / 网段)

  • 网络通信时,子网掩码结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分子网后的主机号)。一般用于判断目的IP与本IP是否为同一个网段。

计算方式:

  • 将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得到的结果就是网络号。
  • 将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。
    在这里插入图片描述

特殊的 IP 地址
主机号微 0 的 ip ,192.168.0.0 就是网络好,局域网里不应该存在某个主机,主机号微 0
主机号全为 1 的IP ,广播地址,往这个地址发送UDP 数据包,此时的数据包就会发给整个局域网中的所有主机(TCP不支持广播)
IP 为 127开头,127.* 称之为环回 ip,这个 ip,走的是虚拟网卡,没有IO操作,纯内存操作,所以要比一般IP要快

冲突域

在解释冲突域和一下的问题时首先要明白,路由和MAC以及交换机的作用,这个在我的 Java 网络编程中有体现。

什么是冲突域?

主机之间通过网络设备(集线器、交换机)的物理端口、网线相连时,两个主机在同一时刻同时发送数
据报,如果存在冲突,则该网络范围为一个冲突域(Collision Domain)

冲突域是基于第一层物理层,又称为碰撞域。

  • 集线器接收到数据报后,是将数据报简单的复制、转发到其他所有端口,如果有两个数据报要同时转发,就会出现冲突。整个集线器,即集线器的所有端口为一个冲突域。
  • 交换机接收到数据报后,是将数据报转发到对应的一个端口:两个数据报同时转发到不同端口不存在冲突,但同时转发到一个端口就出现冲突。即交换机可以分割冲突域,分割后,一个端口为一个冲突域。

广播域

什么是广播域?

广播域基于第二层数据链路层。

广播是指某个网络中的主机同时向网络中其它所有主机发送数据(IP、MAC地址设置为广播地址),这个数据所能传播到的范围即为广播域(Broadcast Domain)。

  • 集线器接收到广播数据报,仍是简单的复制、转发到其他所有端口,所以集线器的所有端口为一个广播域。
  • 交换机接收到广播数据报,会转发到其他所有端口;而路由器可以隔离广播域

网络数据传输流程的过程我也在我的 Java 网络编程的中也有体现,并且更加通俗

局域网传输流程:集线器

  1. 发送端在本机ARP缓存表中,根据目的IP查找对应的MAC地址
  2. 如果找到,则可以在数据链路层以太网帧头中,设置目的MAC并发送数据包
  3. 如果没有找到,需要先发送ARP广播请求,让接收端,即目的主机告诉自己,目的MAC是多少
  4. 发送端更新本机ARP缓存表:保存目的IP与目的MAC的映射
  5. 有了目的MAC,就可以按照第(2)个步骤发送数据了。

DNS

DNS,即Domain Name System,域名系统。DNS是一整套从域名映射到IP的系统。
TCP/IP中使用IP地址来确定网络上的一台主机,但是IP地址不方便记忆,且不能表达地址组织信息,于是人们发明了域名,并通过域名系统来映射域名和IP地址。

  • 域名是一个字符串,如 www.baidu.com , hr.nowcoder.com
  • 域名系统为一个树形结构的系统,包含多个根节点
    • 根节点即为根域名服务器,最早IPv4的根域名服务器全球只有13台,IPv6在此基础上扩充了数量。(DNS域名服务器,即提供域名转换为IP地址的服务器)
    • 子节点主要由各级DNS服务器,或DNS缓存构成(Windows系统的DNS缓存在 C:\Windows\System32\drivers\etc\hosts 文件中,Mac/Linux系统的DNS缓存在 /etc/hosts 文件中。)

网络通信发送数据时,如果使用目的主机的域名,需要先通过域名解析查找到对应的IP地址:(浏览器、主机系统、路由器中都保存有DNS缓存。)

  • 域名解析的过程,可以简单的理解为:发送端主机作为域名系统树形结构的一个子节点,通过域名信息,从下到上查找对应IP地址的过程。如果到根节点(根域名服务器)还找不到,即找不到该主机。
  • 域名解析使用DNS协议来传输数据。DNS协议是应用层协议,基于传输层UDP或TCP协议来实现。

NAT

NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能

  • NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法:
  • 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;

NAT IP转换过程
在这里插入图片描述

  • NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;
  • 在NAT路由器内部,有一张自动生成的,用于地址转换的表;
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NTA将所有的IP地址分为了两大类

  1. 内网 IP:10.* 172.16.* -172.31.* 192.168.*
  2. 外网 IP:其他的 IP 地址
    只要求外网IP唯一,内网IP在不同的局域网中,是允许重复的(同一个局域网里不允许重复)

在NAT 背景下如何通信?
外网设备—》外网设备,不需要任何NAT,就能直接通信
内网设备—》其他内网设备,不允许
外网设备—》内网设备,不允许
内网设备—》外网设备

  • 对应的内网设备的路由器,出发NAT机制进行 IP 替换,此时就会给这个网络数据包的源 IP 替换成路由器自己的IP(此时一个外网IP,就能代表一大批内网的设备了)

IP不够的问题—》动态分配 + NAT 解决

NAPT

那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?

这时候NAPT来解决这个问题了。使用IP+port来建立这个关联关系

在这里插入图片描述

NAT技术的缺陷:

由于NAT依赖这个转换表,所以有诸多限制:

  • 无法从NAT外部向内部服务器建立连接;
  • 转换表的生成和销毁都需要额外开销;
  • 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开;

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

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

相关文章

Springboot+druid

1.Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 2.配置maven <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid-version}</version></dependency>…

【C++基础】实现日期类

​&#x1f47b;内容专栏&#xff1a; C/C编程 &#x1f428;本文概括&#xff1a; C实现日期类。 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&#xff1a;2023.9.7 对于类的成员函数的声明和定义&#xff0c;我们在类和对象上讲到过&#xff0c;需要进行…

数学建模--K-means聚类的Python实现

目录 1.算法流程简介 2.1.K-mean算法核心代码 2.2.K-mean算法效果展示 3.1.肘部法算法核心代码 3.2.肘部法算法效果展示 1.算法流程简介 #k-means聚类方法 """ k-means聚类算法流程: 1.K-mean均值聚类的方法就是先随机选择k个对象作为初始聚类中心. 2.这…

AR工业远程巡查系统:实时监控设备状态,及时发现潜在问题

随着工业4.0的到来&#xff0c;先进的技术和创新的解决方案正在改变着工业生产的方式。其中&#xff0c;增强现实&#xff08;AR&#xff09;技术带来的工业巡检系统就是一个典型的例子。这种系统通过在现实世界中添加虚拟信息&#xff0c;使得操作人员能够更有效地进行检查和维…

LeetCode 49题: 字母异位词分组

题目 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat&qu…

MATLAB实现函数拟合

目录 一.理论知识 1.拟合与插值的区别 2.几何意义 3.误差分析 二.操作实现 1.数据准备 2.使用cftool——拟合工具箱 三.函数拟合典例 四.代码扩展 一.理论知识 1.拟合与插值的区别 通俗的说&#xff0c;插值的本质是根据现有离散点的信息创建出更多的离散点&#xf…

立晶半导体Cubic Lattice Inc 专攻音频ADC,音频DAC,音频CODEC,音频CLASS D等CL7016

概述&#xff1a; CL7016是一款高保真USB Type-C兼容音频编解码芯片。可以录制和回放有24比特音乐和声音。内置回放通路信号动态压缩&#xff0c; 最大42db录音通路增益&#xff0c;PDM数字麦克风&#xff0c;和立体声无需电容耳机驱动放大器。 5V单电源供电。兼容USB 2.0全速工…

问道管理:华为产业链股再度拉升,捷荣技术6连板,华力创通3日大涨近70%

华为产业链股6日盘中再度拉升&#xff0c;到发稿&#xff0c;捷荣技能涨停斩获6连板&#xff0c;华映科技亦涨停收成3连板&#xff0c;华力创通大涨超19%&#xff0c;蓝箭电子涨约11%&#xff0c;力源信息涨超4%。 捷荣技能盘中再度涨停&#xff0c;近7日已累计大涨超90%。公司…

【zookeeper】ZooKeeper的特点及应用场景

ZooKeeper 的特点/设计目标 ZooKeeper&#xff08;动物园管理员&#xff09; &#xff0c;顾名思义&#xff0c;是用来管理Hadoop&#xff08;大象&#xff09;、Hive&#xff08;蜜蜂&#xff09;、Pig&#xff08;小猪&#xff09;的管理员&#xff0c;同时Apache HBase、Ap…

天津web前端培训班 前端是否适合零基础学?

随着HTML 5和ECMAScript 6的正式发布&#xff0c;大量的前端业务逻辑&#xff0c;极大地增加了前端的代码量&#xff0c;前端代码的模块化、按需加载和依赖管理势在必行&#xff0c;因此Web前端越来越被人们重视。 Web前端的就业前景 Web前端开发工程师薪资持续走高&#xff…

汇编语言Nasmide编辑软件

用来编写汇编语言源程序&#xff0c;Windows 记事本并不是一个好工具。同时&#xff0c;在命令行编译源程序也令很多人迷糊。毕竟&#xff0c;很多年轻的朋友都是用着 Windows 成长起来的&#xff0c;他们缺少在 DOS和 UNIX 下工作的经历。 我一直想找一个自己中意的汇编语言编…

CSS中如何实现一个自适应正方形(宽高相等)的元素?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐利用padding百分比⭐2. 利用::before伪元素⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对W…

“系统的UI”——SystemUI

SystemUI的实现 以StatusBar为例&#xff0c;来分析下Android系统具体是如何实现它们的。 相关代码分为两部分&#xff0c;即&#xff1a; Service部分 代码路径&#xff1a;frameworks/base/services/java/com/android/server。 应用部分 代码路径&#xff1a;frameworks…

GLSL ES着色器语言 使用矢量和矩阵的相关规范

目录 矢量和矩阵类型 下面是声明矢量和矩阵的例子&#xff1a; 赋值和构造 矢量构造函数 矩阵构造函数 构造矩阵的几种方式 访问元素 . 运算符 矢量的分量名 &#xff3b; &#xff3d;运算符 运算符 矢量和矩阵可用的运算符 矢量和矩阵相关运算 矢量和浮点数的…

Java“牵手”淘宝商品详情数据,淘宝商品详情API接口,淘宝API接口申请指南

淘宝平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取淘宝商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;通过…

【vue2第十六章】VueRouter 声明式导航(跳转传参)、路由重定向、页面未找到的提示页面404、vue路由模式设置

声明式导航(跳转传参) 在一些特定的需求中&#xff0c;跳转路径时我们是需要携带参数跳转的&#xff0c;比如有一个搜索框&#xff0c;点击搜索的按钮需要跳转到另外一个页面组件&#xff0c;此时需要把用户输入的input框的值也携带到那页面进行发送请求&#xff0c;请求数据。…

如何利用客户旅程打造好的用户体验?

在当今竞争激烈的市场中&#xff0c;提供卓越的用户体验已经成为企业脱颖而出的关键因素之一。客户旅程是实现出色用户体验的有力工具之一&#xff0c;而HubSpot的客户旅程规划功能为企业提供了强大的支持&#xff0c;帮助他们更好地理解、管理和改善客户的互动过程。今天运营坛…

YOLOv5算法改进(15)— 更换Neck之AFPN

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。在YOLOv5中添加AFPN&#xff08;Adaptive Feature Pyramid Network&#xff09;可以提高目标检测的准确性。AFPN是一种用于目标检测任务的功能增强模块&#xff0c;它能够自适应地融合来自不同层级的特征图&#xff0c;以提…

C#文件拷贝工具

目录 工具介绍 工具背景 4个文件介绍 CopyTheSpecifiedSuffixFiles.exe.config DataSave.txt 拷贝的存储方式 文件夹介绍 源文件夹 目标文件夹 结果 使用 *.mp4 使用 *.* 重名时坚持拷贝 可能的报错 C#代码如下 Form1.cs Form1.cs设计 APP.config Program.c…

【UI自动化测试】Jenkins配置

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…