当前位置: 首页 > news >正文

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协议的主要功能是确保数据从一个网络节点(如计算机、服务器、路由器等&#xff09…...

浅谈vite之import.meta

一. 解析 开发者使用一个模块时,有时需要知道模板本身的一些信息(比如模块的路径)。现在有一个提案,为 import 命令添加了一个元属性 import.meta,返回当前模块的元信息。 import.meta只能在模块内部使用,如…...

【Pytorch实用教程】Pytorch中nn.Sequential的用法

nn.Sequential 是 PyTorch 中用于构建神经网络的一种容器类,它可以按顺序封装多个子模块(层),并依次将输入数据传递给这些子模块。这样可以简化模型的定义,使得代码更加简洁和易读。 文章目录 基本用法方法一:直接传递子模块方法二:使用 `OrderedDict`动态构建模型优点注…...

Shopify被封?Shopify店铺开店到防封全面指南

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

11. 盛最多水的容器

一题目&#xff1a; 二&#xff1a;代码&#xff1a; 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中&#xff0c;父子组件之间的传参主要通过props&#xff08;属性&#xff09;来实现。子组件通过props接收来自父组件的数据&#xff0c;而父组件则可以通过在子组件标签上设置属性&#xff08;即props&#xff09;来传递数据。下面是一个简单的例子来说明这个过程。 …...

【C++】二维数组 数组名

二维数组名用途 1、查看所占内存空间 2、查看二维数组首地址 针对第一种用途&#xff0c;还可以计算数组有多少行、多少列、多少元素 针对第二种用途&#xff0c;数组元素、行数、列数都是连续的&#xff0c;且相差地址是有规律的 下面是一个实例 #include<iostream&g…...

【蘑菇书EasyRL】强化学习,笔记整理

【蘑菇书EasyRL】强化学习&#xff0c;笔记整理 1.笔记整理1.1 学习和决策代码框架 2. 遇到的buggym 环境&#xff0c;新版本python无法使用env_specs envs.registry.all() 报错 蘑菇书的教程地址&#xff1a; https://datawhalechina.github.io/easy-rl/#/chapter1/chapter1?…...

尚硅谷谷粒商城项目笔记——三、安装docker【电脑CPU:AMD】

三、安装docker 注意&#xff1a; 因为电脑是AMD芯片&#xff0c;自己知识储备不够&#xff0c;无法保证和课程中用到的环境一样&#xff0c;所以环境都是自己根据适应硬件软件环境重新配置的&#xff0c;这里的虚拟机使用的是VMware。 首先关闭防火墙和安全策略 systemctl…...

【8-9月份唯一机械电气计算机主题的IEEE会议】第七届机电一体化与计算机技术工程国际学术会议(MCTE 2024,8月23-25)

由广东博士创新发展促进会、输变电装备技术全国重点实验室联合主办&#xff0c;重庆大学电气工程学院、AEIC学术交流中心协办的第七届机电一体化与计算机技术工程国际学术会议&#xff08;MCTE 2024&#xff09;将于2024年8月23-25日在中国广州隆重举行。 大会诚挚邀请您投递相…...

YOLOv8改进 | 主干网络 | 简单而优雅且有效的VanillaNet 【华为诺亚方舟】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有80+篇内容,内含各种Head检测头、损失函数Loss、…...

Tomcat高可用集群(实例详解)

一.环境准备 虚拟机的版本&#xff1a;VMware-workstation-full-15.5.6-16341506.exe系统镜像版本&#xff1a;CentOS-6.10-x86_64-bin-DVD1.iso&#xff0c;全新安装&#xff0c;桌面版&#xff0c;可上网系统内存大小&#xff1a;1GB系统硬盘大小&#xff1a;20GB连接工具版…...

搭建自己的金融数据源和量化分析平台(五):更新两市退市股票信息

在前面的股票列表设计中&#xff0c;我们有一个list_status字段&#xff0c;可能的值为L上市 D退市 P暂停上市。 由于股票可能会被退市&#xff0c;因此需要该字段来维护上市状态。 深市爬虫&#xff1a; # 读取深交所最新退市股票列表 def get_delisted_stock_list():cache_f…...

Redis复习总结

之前写的博客太杂,最近想把Redis的知识点再系统的过一遍,带着自己的理解使用简短的话把一些问题总结一下,尤其是开发中和面试中的高频问题,基础知识点参考–>Redis入门、Spring Cache,这篇不再赘述。 目录 基础简介;与Memcached的区别;为什么作为mysql缓存?如何保证R…...

基于JSP的医院挂号系统

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

Chainlit快速实现AI对话应用1 分钟内实现聊天数据的持久化保存

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

STM32DMA数据传输

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

Python学习笔记50:游戏篇之外星人入侵(十一)

前言 本篇文章接着之前的内容&#xff0c;继续对游戏功能进行优化&#xff0c;主要是优化游戏状态以及对应的处理。 状态 一个游戏包含多种状态&#xff0c;这个状态是一个可以很复杂也可以很简单的内容。条件所限&#xff0c;我们这个游戏的状态就比较简单&#xff1a; 未…...

vue3踩坑问题记录

//vue3element-plus //1、placeholder换行显示 const startTxt ref() const contentText ref<any>() startTxt.value "请描述问题内容、例如&#xff1a;" historyData.prompt.forEach((el:any)>{contentText.value \n${el.question}}) <ElInputv-mo…...

Python 爬虫实战:Scrapy 框架详解与应用

&#x1f6e0;️ Scrapy 框架基本使用 Scrapy 是一个强大的 Python 爬虫框架&#xff0c;提供了用于提取和处理网页数据的功能。以下是 Scrapy 的基本使用步骤&#xff1a; 安装 Scrapy pip install scrapy创建 Scrapy 项目 scrapy startproject myproject这将生成一个基础…...

60 函数参数——关键参数

关键参数主要指调用函数时的参数传递方式&#xff0c;与函数定义无关。 通过关键参数可以按参数名字传递值&#xff0c;明确指定哪个值传递给哪个参数&#xff0c;实参顺序可以和形参顺序不一致&#xff0c;但不影响参数值的传递结果&#xff0c;避免了用户需要牢记参数位置和…...

wps 最新 2019 专业版 下载安装教程,解锁全部功能,免费领取

文章目录 前言软件介绍软件下载安装步骤激活步骤小福利&#xff08;安卓APP&#xff09;软件介绍软件下载安装步骤 前言 本篇文章主要针对WPS2019专业版的安装下载进行详细讲解&#xff0c;软件已激活&#xff0c;可放心使用&#xff1b;并且可以进行账号登录&#xff0c;进行…...

前端(三):Ajax

一、Ajax Asynchronous JavaScript And XML&#xff0c;简称Ajax&#xff0c;是异步的JavaScript和XML。 作用&#xff1a;数据交换&#xff0c;通过Ajax可以给服务器发送请求&#xff0c;并获取服务器响应的数据。异步交互&#xff1a;可以在不重新加载整个页面的情况下&…...

启动 /使用/关闭 Redis 服务器

1. Linux 启动 Linux 系统启动 Redis 有两种方法&#xff0c;分别是前台启动&#xff0c;后台启动&#xff0c;两者各有差异&#xff1b; &#xff08;1&#xff09;前台启动 首先&#xff0c;需要进入 bin 路径(安装路径不同输入的命令也不同); 个人的命令&#xff08;一般…...

Linux系统中的高级SELinux安全策略定制技术

随着信息技术的发展&#xff0c;计算机系统的安全性变得越来越重要。在开源世界中&#xff0c;Linux作为一种广泛应用的操作系统&#xff0c;其安全性一直备受关注。其中&#xff0c;SELinux&#xff08;Security-Enhanced Linux&#xff09;作为Linux系统中的一个安全模块&…...

使用 Ansible Blocks 进行错误处理

注&#xff1a;机翻&#xff0c;未校。 How to Use Ansible Blocks Make your Playbooks more readable and maintainable using Blocks feature in Ansible. 使用 Ansible 中的块功能使 Playbook 更具可读性和可维护性。 Jul 15, 2024 — LHB Community How to Use Ansible…...

java中的静态变量和实例变量的区别

java中的静态变量和实例变量的区别 在Java中&#xff0c;静态变量&#xff08;也称为类变量&#xff09;和实例变量是两种不同类型的变量&#xff0c;它们在多个方面存在显著的区别。以下是它们之间的一些主要区别&#xff1a; 存储位置 静态变量&#xff1a;存储在方法区&am…...

【Effecutive C++】条款02 尽量以const, enum, inline替换 #define

Prefer consts, enums, and inline to #define. 这个条款或许改为“宁可以编译器替换预处理器”比较好&#xff0c;因为或许#define不被视为语言的一部分。那正是它的问题所在。当你做出这样的事情&#xff1a; #define ASPECT_RATIO 1.653记号名称ASPECT_RATIO也许从未被编译…...

leetcode-226. 翻转二叉树

题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出&#xff1a;[2,3,1]…...

用的到linux-tomcat端口占用排查-Day5

前言&#xff1a; 最近使用tomcat搭建了一套测试环境的应用&#xff0c;整个搭建过程也很简单&#xff0c;就是将部署包上传至服务器☞解压☞启动tomcat服务器&#xff0c;当然服务器也是成功启动了&#xff0c;但是发现前端应用报404&#xff0c;具体如下图所示。 一、现象及思…...