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

news2025/2/26 6:23:10

网络基础

以下图片是书上的网图。

什么是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.coloradmin.cn/o/990698.html

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

相关文章

电商(淘宝1688京东拼多多等)API接口服务:提升商业效率和用户体验的关键

电商API接口服务:提升商业效率和用户体验的关键 随着电子商务的飞速发展,电商企业需要不断提升自身的业务能力和服务质量,以应对日益激烈的市场竞争。为了更好地满足商家和消费者的需求,电商API接口服务应运而生。本文将探讨电商…

【进阶篇】Redis内存淘汰详解

文章目录 Redis内存淘汰详解0. 前言大纲Redis内存淘汰策略 1. 什么是Redis内存淘汰策略?1.1.Redis 内存不足的迹象 2. Redis内存淘汰策略3. 原理4. 主动和被动1. 主动淘汰1.1 键的生存周期1.2 过期键删除策略 2. 被动淘汰2.2 被动淘汰策略的实现 5. 项目实践优化策略…

【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】-未完成

linux配环境心得:conda/本地配cuda,cudnn及pytorch心得 我们服务器遇到的大多数找不到包的问题一,服务器安装cuda和cudnn使用conda在线安装cuda和cudnn使用conda进行本地安装检查conda安装的cuda和cudnn本地直接安装cuda和cudnn方法一&#x…

MDK-Keil AC6 Compiler屏蔽特定警告

最近在使用STM32CubeMX生成MDK工程是,使用了 AC6 版本的编译器进行编译代码,然后发现了一些警告,但是在 AC5 版本下编译又正常。于是研究了下怎么屏蔽特定的警告,这里记录一下。 1. Keil AC6屏蔽特定警告 遇到的警告如下&#x…

CSS的break-inside 属性 的使用

break-inside 属性在 CSS 页码分隔模块中使用,它定义了一个元素内部是否允许发生页面、栏目或者区域的分隔。 break-inside有以下几个值 break-inside: avoid- 表示避免在该元素内部发生分页或者分栏。break-inside: auto - 默认允许分页break-inside: avoid-page - 避免页面…

【LeetCode题目详解】第九章 动态规划part07 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数 (day45补)

本文章代码以c为例! 一、力扣第70题:爬楼梯 题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1&#x…

如何在 Ubuntu 上安装和使用 Nginx?

ginx(发音为“engine-x”)是一种流行的 Web 服务器软件,以其高性能和可靠性而闻名。它是许多流行网站使用的开源软件,包括 Netflix、GitHub 和 WordPress。Nginx 可以用作 Web 服务器、负载均衡器、反向代理和 HTTP 缓存等。 它以…

[小尾巴 UI 组件库] 全屏响应式轮播背景图(基于 Vue 3 与 Element Plus)

文章归档于:https://www.yuque.com/u27599042/row3c6 组件库地址 npm:https://www.npmjs.com/package/xwb-ui?activeTabreadme小尾巴 UI 组件库源码 gitee:https://gitee.com/tongchaowei/xwb-ui小尾巴 UI 组件库测试代码 gitee&#xff1a…

岩土工程安全监测利器:振弦采集仪的发展

岩土工程安全监测利器:振弦采集仪的发展 岩土工程安全监测是保障建筑物、地下工程和地质环境安全稳定运行的重要手段。传统上,监测手段主要依靠人工巡视以及基础设施安装的传感器,但是这些方法都存在着缺陷。人工巡视存在的问题是数据采集精…

用 Python 微调 ChatGPT (GPT-3.5 Turbo)

用 Python 微调 ChatGPT (GPT-3.5 Turbo) 备受期待的 GPT-3.5 Turbo 微调功能现已推出,并且为今年秋季即将发布的 GPT-4 微调功能奠定了基础。 这不仅仅是一次简单的更新——它是一个游戏规则改变者,为开发人员提供了完美定制人工智能模型的关键解决方案…

拥抱云原生,下一代边缘计算云基础设施

// 编者按:面对海量数据新的应用形态对低时延和分布式架构的需求,边缘计算将成为新一代边缘计算云基础设施,火山引擎覆盖了全国海量边缘节点,储备了上百T带宽,承载了视频直播、游戏娱乐、智慧交通、影视特效等多场景…

python官方标准库

文章目录 1. 标准库2. Python标准库介绍3. 示例 1. 标准库 https://docs.python.org/zh-cn/3/library/ https://pypi.org/ 2. Python标准库介绍 Python 语言参考手册 描述了 Python 语言的具体语法和语义,这份库参考则介绍了与 Python 一同发行的标准库。它还描…

前端uniapp块样式写法

<template><view class"block"><view class"block_box"><view class"block_box_content"><view class"block_box_left">左边</view><view class"block_box_right">右边</view…

【Nginx24】Nginx学习:压缩模块Gzip

Nginx学习&#xff1a;压缩模块Gzip 又是一个非常常见的模块&#xff0c;Gzip 现在也是事实上的 Web 应用压缩标准了。随便打开一个网站&#xff0c;在请求的响应头中都会看到 Content-Encoding: gzip 这样的内容&#xff0c;这就表明当前这个请求的页面或资源使用了 Gzip 压缩…

grep wc 与 管道符

grep命令 可以通过grep命令&#xff0c;从文件中通过关键字过滤文件行。 语法: grep [-n] 关键字文件路径 选项-n&#xff0c;可选&#xff0c;表示在结果中显示匹配的行的行号。参数&#xff0c;关键字&#xff0c;必填&#xff0c;表示过滤的关键字&#xff0c;带有空格或其…

【已解决】uniapp使用vant-ui中的tab标签页的时候,发现底下红色的切换线不见了

问题截图 解决办法 按F12查看vant-ui源码你会发现他的Tab标签页里面有个width&#xff0c;但是我们引入到uniapp之后发现width没有了&#xff08;不知道什么情况&#xff0c;可能是兼容问题吧&#xff09; 所以我们解决的办法&#xff0c;只需要在App.vue中给全局.van-tabs__l…

Jmeter系列进阶-获取图片验证码(4)

安装工具 通过ocrserver工具识别图片验证码&#xff0c;解压后 .exe双击启动即可。 jmeter中使用 &#xff08;1&#xff09;HTTP请求获取验证码 &#xff08;2&#xff09;在获取验证码图片的接口下面添加监听器》保存响应到文件&#xff1b;如下图&#xff1a; &#x…

[Go 报错] go: go.mod file not found in current directory or any parent directory

Build Error: go build -o c:\Users\13283\Desktop\godemo\__debug_bin3410376605.exe -gcflags all-N -l . go: go.mod file not found in current directory or any parent directory; see go help modules (exit status 1) 原因分析&#xff1a; go 的环境配置问题。与 gol…

电脑磁盘分区形式是什么?如何更改?

磁盘分区形式介绍 在了解为什么以及如何更改分区形式之前&#xff0c;让我们对磁盘分区形式有一个基本的了解。一般来说&#xff0c;分区形式是指主引导记录&#xff08;MBR&#xff09;和 GUID 分区表&#xff08;GPT&#xff09;。 MBR和GPT是Windows系统中常用…

【HTTP爬虫ip实操】智能路由构建高效稳定爬虫系统

在当今信息时代&#xff0c;数据的价值越来越受到重视。对于许多企业和个人而言&#xff0c;网络爬取成为了获取大量有用数据的关键手段之一。然而&#xff0c;在面对反爬机制、封锁限制以及频繁变动的网站结构时&#xff0c;如何确保稳定地采集所需数据却是一个不容忽视且具挑…