Linux--网络层IP
IP协议
IP协议,全称Internet Protocol(互联网协议),是TCP/IP协议族中的核心协议之一,用于在互联网络上进行数据的传输。IP协议的主要功能是确保数据从一个网络节点(如计算机、服务器、路由器等)传输到另一个网络节点,并且能够在各种不同的物理网络上工作。
IP协议为每个网络上的设备分配一个唯一的地址,即IP地址。这个地址用于标识设备在网络中的位置,使得数据能够准确地发送到目标设备。
IP协议允许数据包(即IP数据包)在互联网络中从一个网络节点传递到另一个网络节点,直到到达目标地址。这一过程中,数据包可能会经过多个路由器,每个路由器都根据IP地址和网络拓扑来决定数据包的下一跳位置。
IP协议提供的是一种无连接的服务,这意味着发送数据之前不需要在发送方和接收方之间建立连接。这种特性使得IP协议非常灵活,但同时也要求上层协议(如TCP或UDP)来处理数据的可靠传输和顺序问题。
主机: 配有 IP 地址, 但是不进行路由控制的设备;
路由器: 即配有 IP 地址, 又能进行路由控制;
节点: 主机和路由器的统称
IP地址(IPV4)
在TCP/IP网络中,每台计算机除了本身固有的被称为MAC地址的硬件地址,还有一个所谓的”逻
辑地址”(IP地址),该地址通常由管理员设置(静态IP地址),亦可由所使用的网络协议(如
DHCP,动态主机配置协议)自动设置(动态IP地址)。该地址在该网络中具有唯一性。
这是IP地址的形式,是一个32位的数,分4组,每组8位;
通过点分十进制的方法来进行表示;
IP地址的网段划分
像我们身份证一样,IP地址的规定也是有一定规律形式的。
要找到对应的主机,就要先确定所在的网络地址,然后在网络地址上找到对应的主机地址;
故:
网络号用来标识主机所连接的网络
主机号用来标识连接在这个网络中的不同主机
像下面的例子一样:
主机A和主机B网络号均为202.113.27,在路由器可以找到这个对应的网络号,然后再这片区域内找到所要的主机号(这片区域也被称为局域网);
IP地址的类别
- A 类 0.0.0.0 到 127.255.255.255
- B 类 128.0.0.0 到 191.255.255.255
- C 类 192.0.0.0 到 223.255.255.255
- D 类 224.0.0.0 到 239.255.255.255
- E 类 240.0.0.0 到 247.255.255.255
这样分类是为了更加容易管理和寻址,容易确定网络的大小和范围,也就是能够区分IP地址中网络号和主机号的划分;
子网掩码
后来,随着互联网的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请 B 类
网络地址, 导致 B 类地址很快就分配完了, 而 A 类却浪费了大量地址;
于是,就有了子网掩码,让它来对主机号来进一步细致的划分;
子网掩码也是一个 32 位的正整数. 通常用一串 “0” 来结尾;
其作用是告诉TCP/IP主机,IP地址的哪些位对应于网络地址,哪些位对应于主机地址。
子网中的所有主机必须配置相同的子网掩码。
网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关;
例如
网络地址的运算
将 IP 地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号;
如
像B类,默认子网掩码255.255.0.0 就是没有划分子网,C类的255.255.255.0都说默认的子网掩码;表示当前网络没有进行子网划分;
特殊的IP地址
-
在网络中,主机号为0,就表示当前IP地址就是网络号了,代表了这个局域网的网络地址;
-
如果将主机号设为1,就变为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;
例如我们家中所用路由器,所用IP地址主机号都是1; -
127.*的 IP 地址用于本机环回(loop back)测试,通常是 127.0.0.1
局域网
局域网(Local Area Network,LAN)是一种覆盖有限地理范围(如办公室、学校、工厂等)的计算机网络,它允许该范围内的多台计算机、打印机、服务器等设备相互连接,实现资源共享和通信。
由于设备间距离较近,局域网通常能够提供较高的数据传输速率(带宽)和较低的数据传输延迟(延迟时间),这使得局域网内的设备能够快速地交换大量数据。
局域网中的设备通常属于同一组织或机构,因此更容易进行统一的管理和控制。
IPv6
由于当今时代的飞速发展,网络中的IP(IPV4)地址最多也就2*32(大约43亿)而已;这对于全球网络中的主机来说,是远远不够的;
为了解决这种问题,就有了IPv6;
IPv6地址有2*128的地址数量,这是一个极其庞大的数字;
每个IPv6地址由8个16位的字段组成,每个字段由4个十六进制数表示,字段由冒号隔开
但在实际分配和管理过程中,会存在地址的囤积和不合理分配的问题,这可能导致资源浪费和分配不均;并且这是一个和IPv4不兼容的协议,要想普及还是有些难度的;
IP私有地址
如果IP 地址只用于局域网内的通信,而不直接连到 互联网 上(范围缩小), 理论上 使用任意的 IP 地址都可以,但是 RFC 1918 规定了用于组建局域网的私有 IP 地址:
- 10.*,前 8 位是网络号,共 16,777,216 个地址(A类常用私有IP)
- 172.16.到 172.31.,前 12 位是网络号,共 1,048,576 个地址(B类常用私有IP)
- 192.168.*,前 16 位是网络号,共 65,536 个地址(C类常用私有IP)
所以,像现在的公司或者家里路由器,在局域网范围内,都说建立自己的私有IP来进行通信;
NAT技术
NAT(Network Address Translation,网络地址转换)技术是一种将私有网络地址(如局域网内部地址)转换成公共网络地址(如互联网地址)的技术。它主要用于连接私有网络与公共网络之间的路由器上,以实现多台计算机共用一个公网IP地址上网。
基本原理
NAT技术通过在网络出口设备(如路由器或防火墙)上部署,对IP数据报文中的IP地址进行转换。对于“从内到外”的流量,网络设备通过NAT将数据包的源地址进行转换(转换成特定的公有地址);而对于“从外到内”的流量,则对数据包的目的地址进行转换。这种转换机制使得内部网络的主机能够访问外部网络,同时外部网络无法直接访问内部网络的私有地址,从而增强了内部网络的安全性。
实现方式
- 静态NAT:内部本地地址一对一转换成内部全局地址,即内部网络的每一台设备都绑定一个全局地址。这种方式适用于内部网络中只有少量设备需要对外进行通信的情况。
- 动态NAT:将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的。所有被授权访问Internet的私有IP地址可随机转换为任何指定的合法IP地址。这种方式适用于内部网络中有大量设备需要对外进行通信,但公有IP地址数量有限的情况。
- 端口多路复用(PAT/NAPT):内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问。该模式同时对IP地址和传输层端口进行转换,实现不同私有地址(不同的私有地址,不同的源端口)映射到同一个公有地址(相同的公有地址,不同的源端口)。这种方式可以最大限度地节约IP地址资源,并隐藏网络内部的所有主机。
优势
- 节省公有合法IP地址:通过NAT技术,多台内部设备可以共享一个公有IP地址访问外部网络,从而有效缓解了IPv4地址短缺的问题(这也是当前缓解IPv4数量不足的主要手段)。
- 处理地址重叠:在私有网络中,可能存在IP地址冲突的情况。通过NAT技术,可以将这些冲突的IP地址转换为不同的公有IP地址,从而解决地址重叠问题。
- 增强灵活性:NAT技术提供了灵活的地址转换机制,可以根据实际需求选择不同的实现方式。
- 提高安全性:NAT技术隐藏了内部网络的IP地址,使得外部网络无法直接访问内部网络中的设备,从而提高了内部网络的安全性。
相关文章:

Linux--网络层IP
IP协议 IP协议,全称Internet Protocol(互联网协议),是TCP/IP协议族中的核心协议之一,用于在互联网络上进行数据的传输。IP协议的主要功能是确保数据从一个网络节点(如计算机、服务器、路由器等)…...
浅谈vite之import.meta
一. 解析 开发者使用一个模块时,有时需要知道模板本身的一些信息(比如模块的路径)。现在有一个提案,为 import 命令添加了一个元属性 import.meta,返回当前模块的元信息。 import.meta只能在模块内部使用,如…...
【Pytorch实用教程】Pytorch中nn.Sequential的用法
nn.Sequential 是 PyTorch 中用于构建神经网络的一种容器类,它可以按顺序封装多个子模块(层),并依次将输入数据传递给这些子模块。这样可以简化模型的定义,使得代码更加简洁和易读。 文章目录 基本用法方法一:直接传递子模块方法二:使用 `OrderedDict`动态构建模型优点注…...

Shopify被封?Shopify店铺开店到防封全面指南
Shopify,作为独立电商建站领域的佼佼者,其SaaS模式简化了建站流程,无需编程背景即可创建线上店铺,吸引了众多商家的目光。本文将详细讲解Shopify店铺从注册、运营到防封的每一个关键环节,为商家提供一站式指导…...

11. 盛最多水的容器
一题目: 二:代码: class Solution { public:int maxArea(vector<int>& height) {int l0;int rheight.size()-1;int ans0;while(l<r){int a(r-l)*min(height[l],height[r]);ansmax(ans,a);if(height[l]<height[r]) l;else r-…...
react如何父子组件传参
在React中,父子组件之间的传参主要通过props(属性)来实现。子组件通过props接收来自父组件的数据,而父组件则可以通过在子组件标签上设置属性(即props)来传递数据。下面是一个简单的例子来说明这个过程。 …...

【C++】二维数组 数组名
二维数组名用途 1、查看所占内存空间 2、查看二维数组首地址 针对第一种用途,还可以计算数组有多少行、多少列、多少元素 针对第二种用途,数组元素、行数、列数都是连续的,且相差地址是有规律的 下面是一个实例 #include<iostream&g…...
【蘑菇书EasyRL】强化学习,笔记整理
【蘑菇书EasyRL】强化学习,笔记整理 1.笔记整理1.1 学习和决策代码框架 2. 遇到的buggym 环境,新版本python无法使用env_specs envs.registry.all() 报错 蘑菇书的教程地址: https://datawhalechina.github.io/easy-rl/#/chapter1/chapter1?…...

尚硅谷谷粒商城项目笔记——三、安装docker【电脑CPU:AMD】
三、安装docker 注意: 因为电脑是AMD芯片,自己知识储备不够,无法保证和课程中用到的环境一样,所以环境都是自己根据适应硬件软件环境重新配置的,这里的虚拟机使用的是VMware。 首先关闭防火墙和安全策略 systemctl…...

【8-9月份唯一机械电气计算机主题的IEEE会议】第七届机电一体化与计算机技术工程国际学术会议(MCTE 2024,8月23-25)
由广东博士创新发展促进会、输变电装备技术全国重点实验室联合主办,重庆大学电气工程学院、AEIC学术交流中心协办的第七届机电一体化与计算机技术工程国际学术会议(MCTE 2024)将于2024年8月23-25日在中国广州隆重举行。 大会诚挚邀请您投递相…...
YOLOv8改进 | 主干网络 | 简单而优雅且有效的VanillaNet 【华为诺亚方舟】
秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有80+篇内容,内含各种Head检测头、损失函数Loss、…...

Tomcat高可用集群(实例详解)
一.环境准备 虚拟机的版本:VMware-workstation-full-15.5.6-16341506.exe系统镜像版本:CentOS-6.10-x86_64-bin-DVD1.iso,全新安装,桌面版,可上网系统内存大小:1GB系统硬盘大小:20GB连接工具版…...
搭建自己的金融数据源和量化分析平台(五):更新两市退市股票信息
在前面的股票列表设计中,我们有一个list_status字段,可能的值为L上市 D退市 P暂停上市。 由于股票可能会被退市,因此需要该字段来维护上市状态。 深市爬虫: # 读取深交所最新退市股票列表 def get_delisted_stock_list():cache_f…...
Redis复习总结
之前写的博客太杂,最近想把Redis的知识点再系统的过一遍,带着自己的理解使用简短的话把一些问题总结一下,尤其是开发中和面试中的高频问题,基础知识点参考–>Redis入门、Spring Cache,这篇不再赘述。 目录 基础简介;与Memcached的区别;为什么作为mysql缓存?如何保证R…...

基于JSP的医院挂号系统
你好,我是专注于医疗信息系统的计算机专业毕业生。如果您对医院挂号系统感兴趣或有相关需求,欢迎随时联系我。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:MyEclipse 系统展示 首页 管理员功能模…...

Chainlit快速实现AI对话应用1 分钟内实现聊天数据的持久化保存
概述 默认情况下,Chainlit 应用不会保留其生成的聊天和元素。即网页一刷新,所有的聊天记录,页面上的所有聊天记录都会消失。但是,存储和利用这些数据的能力可能是您的项目或组织的重要组成部分。 一旦启用,数据持久性…...

STM32DMA数据传输
我估计大多数人学这么久连听说都没听说过DMA,更不用提知道它是干嘛的。其实DMA的本质就是一个数据的搬运工。平常的时候当我们没有配置的时候,一直都是CPU在搬运数据,但是这个活又累又没有技术含量,所以DMA的重要性还是有的。 目…...

Python学习笔记50:游戏篇之外星人入侵(十一)
前言 本篇文章接着之前的内容,继续对游戏功能进行优化,主要是优化游戏状态以及对应的处理。 状态 一个游戏包含多种状态,这个状态是一个可以很复杂也可以很简单的内容。条件所限,我们这个游戏的状态就比较简单: 未…...

vue3踩坑问题记录
//vue3element-plus //1、placeholder换行显示 const startTxt ref() const contentText ref<any>() startTxt.value "请描述问题内容、例如:" historyData.prompt.forEach((el:any)>{contentText.value \n${el.question}}) <ElInputv-mo…...
Python 爬虫实战:Scrapy 框架详解与应用
🛠️ Scrapy 框架基本使用 Scrapy 是一个强大的 Python 爬虫框架,提供了用于提取和处理网页数据的功能。以下是 Scrapy 的基本使用步骤: 安装 Scrapy pip install scrapy创建 Scrapy 项目 scrapy startproject myproject这将生成一个基础…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...

云原生安全实战:API网关Envoy的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化
一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...
接口 RESTful 中的超媒体:REST 架构的灵魂驱动
在 RESTful 架构中,** 超媒体(Hypermedia)** 是一个核心概念,它体现了 REST 的 “表述性状态转移(Representational State Transfer)” 的本质,也是区分 “真 RESTful API” 与 “伪 RESTful AP…...

Centos 7 服务器部署多网站
一、准备工作 安装 Apache bash sudo yum install httpd -y sudo systemctl start httpd sudo systemctl enable httpd创建网站目录 假设部署 2 个网站,目录结构如下: bash sudo mkdir -p /var/www/site1/html sudo mkdir -p /var/www/site2/html添加测试…...
qt 双缓冲案例对比
双缓冲 1.双缓冲原理 单缓冲:在paintEvent中直接绘制到屏幕,绘制过程被用户看到 双缓冲:先在redrawBuffer绘制到缓冲区,然后一次性显示完整结果 代码结构 单缓冲:所有绘制逻辑在paintEvent中 双缓冲:绘制…...