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地址,使得外部网络无法直接访问内部网络中的设备,从而提高了内部网络的安全性。

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

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

相关文章

OpenDataLab:人工智能开放数据平台

作者:CSDN _养乐多_ 本文将介绍一个人工智能开放数据平台,OpenDataLab。 文章目录 一、OpenDataLab介绍二、下载 一、OpenDataLab介绍 官网链接: OpenDataLab:https://opendatalab.com/ 这里面有很多数据集,包括计…

CCIA2024“网络安全优秀创新成果大赛-哈尔滨分站赛”优胜奖,花落谁家?

近日,“2024 年网络安全优秀创新成果大赛 - 哈尔滨分站赛”评选结果正式公布。此次大赛由黑龙江省委网信办指导,中国网络安全产业联盟主办,哈尔滨工业大学网络空间安全学院承办。开源网安代码审核平台 CodeSec 凭借在 AI 方向的创新能力和极高…

JavaEE: 进程和线程

文章目录 进程线程的概念和区别总结如何创建线程1.继承Thread重写run2.实现Runnable重写run3.继承Thread重写run,通过匿名内部类来实现4. 实现Runnable重写run,通过匿名内部类来实现5.基于lambda表达式来创建 虚拟线程 并发编程: 通过写特殊的代码,把多个CPU核心都利…

Mojo使用调试工具(Visual Studio Code)详解

Visual Studio Code 的 Mojo 扩展使您可以将 VS Code 的内置调试器与 Mojo 程序一起使用。(Mojo 扩展还支持调试 C、C++ 和 Objective-C。) 有关 VS Code 调试功能的完整介绍,请参阅 Visual Studio Code 中的调试。 本文介绍了可通过 Mojo 扩展获得的功能,以及 Mojo 调试…

层次分析法(评价类问题)

目录 本文章内容来自: 层次分析法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北_哔哩哔哩_bilibili 一. 概念 二. 适用的问题范围 三. 层次分析法的四个步骤 四. 对应代码 本文章内容来自: 层次分析法模型讲解(附matlab和…

【面试题】串联所有单词的子串,找到所有符合条件的串联子串的起始索引

串联所有单词的子串,找到所有符合条件的串联子串的起始索引 面试学习 一、题目 串联所有单词的子串 二、解题思路 2.1 定义子串长度 所有字符串 words 的长度是相同的,假设为 L。那么一个有效的串联子串的总长度应该是 L * len(words)。 2.2 滑动窗…

解决Minizip压缩后解压时的头部错误问题

最近,在处理文件压缩的任务时,我遇到了一个有趣的问题。使用Minizip库进行文件压缩后,在解压过程中收到了一个关于"头部错误"的警告。尽管这个警告看似令人担忧,但解压操作最终仍然能够成功完成文件的解压。这引发了我的…

BM1反转链表[栈+头插法]

题目要求如下: 问题比较简单,就是将链表中的值进行反转即可。 一种比较简单的方式是使用栈链表的方式来实现,下面是相应的代码: #include <stdio.h> #include <stdlib.h> int arr[10001] {0}; struct ListNode* ReverseList(struct ListNode* head ) {if (head …

编译运行 Byconity

我的系统是centos&#xff0c;因此用他们的docker编译并用他们的docker-compose运行&#xff0c;以下流程亲测可跑&#xff1a; 拉取并编译 https://github.com/ByConity/ByConity/tree/master/docker/debian/dev-env 运行 https://github.com/ByConity/ByConity/blob/master/d…

Day-16 SpringBoot原理

SpingBoot原理 在前面十多天的课程当中&#xff0c;我们学习的都是web开发的技术使用&#xff0c;都是面向应用层面的&#xff0c;我们学会了怎么样去用。而我们今天所要学习的是web后端开发的最后一个篇章springboot原理篇&#xff0c;主要偏向于底层原理。 我们今天的课程安…

20240807 每日AI必读资讯

&#x1f468;‍&#x1f4bc;马斯克再发难、OpenAI 高层巨变&#xff1a;两大核心人物离职&#xff0c;总裁休长假到年底 - OpenAI 联合创始人 John Schulman 官宣离职&#xff0c;加入原是竞品公司的 Anthropic - 陪伴 OpenAI 共同成长 9 年的总裁兼联合创始人 Greg Brockm…

事务和索引(面试常问)

面试常问&#xff1a; 一、数据库隔离级别&#xff1f;事务隔离级别解决的问题&#xff1f; 答&#xff1a;1.数据库隔离级别&#xff1a; READ_UNCOMMITTED 读未提交 READ_COMMITTED 读提交&#xff08;不可重复读&#xff09; REPEATABLE_READ 可重复读 SERIALIZABLE 串行化…

sed 简易使用指南

sed 简易使用指南 1 sed 介绍2 查找3 替换4 反向引用5 删除6 cai&#xff08;菜&#xff09; 导言&#xff1a; 笔者之前花了较多时间学习并整理了sed命令相关的内容&#xff0c;以及一些进阶内容。但是&#xff0c;到后来使用也就只记得那么几个简单的选项&#xff0c;再高级的…

6-8 残差网络(ResNet)

随着我们设计越来越深的网络&#xff0c;深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。更重要的是设计网络的能力&#xff0c;在这种网络中&#xff0c;添加层会使网络更具表现力&#xff0c; 为了取得质的突破&#xff0c;我们需要一些数学基础知识。 残差网络…

【虚拟化】KVM使用virt-manager部署及管理虚拟机

目录 一、KVM 概述 二、KVM工作原理 三、部署KVM 四、新建虚拟机步骤 4.1 创建存储池并创建存储卷 4.1.1 创建存储池 4.1.2 创建存储卷 4.3 创建ISO存储池 4.4 生成新的虚拟机 一、KVM 概述 KVM 是 Kernel-based Virtual Machine 的缩写&#xff0c;是一种用于虚拟化的…

大模型微调深入研究

在本博文系列的前一部分中&#xff0c;我们探讨了情境学习的概念&#xff0c;这是一种克服大型语言模型 (LLM) 的“舒适区”限制的强大方法。我们讨论了如何使用这些技术来转换任务并将其移回模型的专业领域&#xff0c;从而提高性能并与有用性、诚实性和无害性的关键设计原则保…

WebBench源码分析

WebBench 源码解析 一、前言 WebBench 作为一款网站性能测试工具&#xff0c;其源码蕴含着丰富的技术细节和逻辑流程。本文将深入剖析其安装编译过程以及关键函数的核心逻辑。 二、安装编译 1. 克隆代码到本地仓库 git clone https://github.com/EZLippi/WebBench.git2. 编…

使用 Squid 搭建 Http 代理服务器隐藏 IP

在一些情况下&#xff0c;需要变更自己的访问 IP&#xff0c;可以通过 Squid 搭建代理服务器实现。 本文使用的是 CentOS 7.6 系统。 一、部署 Squid 安装 Squid。 yum install squid -y启动服 systemctl start squid二、访问控制 总有刁民想害郑&#xff0c;疯狂访问朕的…

基于宝塔面板稳定快速安装 ssl 证书脚本

背景 我通过AI制作了不少关于签发ssl证书的脚本&#xff0c;目的是方便无脑安装&#xff0c;不需要懂代码。 但全都是基于acme.sh这个工具来设计的脚本&#xff0c;而且证书申请有点慢&#xff0c;有时还会申请失败。 然后我发现了certbot, 安装证书可谓神速&#xff01; c…

ASP.NET Core基础 - 简介

目录 一. 简介 A、跨平台性 B、高性能 C、开源性 D、模块化与可扩展性 E、集成现代前端技术 二. ASP.NET 4.x 和 ASP.NET Core 比较 A、架构与平台支持 B、性能 C、开发体验 D、社区支持与生态系统 三. NET 与 .NET Framework 比较 A、概念范围 B、跨平台能力 C…