网际协议 - IP

文章目录

目录

文章目录

前言

1 . 网际协议IP

1.1 网络层和数据链路层的关系

2. IP基础知识

2.1 什么是IP地址?

2.2 路由控制

3. IP地址基础知识

3.1 IP地址定义

3.2 IP地址组成

3.3 IP地址分类

3.4 子网掩码

IP地址分类导致浪费?

子网与子网掩码

3.5 CIDR与VLSM

3.6 全局地址和私有地址

5. IPV4首部

6. NDS

域名解析

域名的构成

域名服务器

7. ARP

工作机制

8 . DHCP

DHCP中继代理

拓展

IPV6

IP隧道

总结


前言

大家好,今天给大家介绍一下网络层中最重要的IP协议和一些辅助协议


 TCP/IP的核心是网络层。 这一层主要是由IP和ICMP两个协议组成

1 . 网际协议IP

IP协议属于OSI参考模型中的第三层 - 网络层。 因此IP协议被称之为网际协议。

网络层的主要作用是 "实现终端节点之间的通信" 。 这种终端节点之间的通信也被叫做 “点对点通信”。

在数据链路中解决的主要问题是数据在一段链路上的传输问题, 而网络层解决的则是数据在不同链路上传输的问题, 即在网络中的传输问题。

1.1 网络层和数据链路层的关系

数据链路层负责将数据帧从一个节点传输到另一个相邻节点,而网络层则负责将数据包从源节点传输到目标节点。数据链路层通过物理连接将相邻节点连接起来,而网络层则通过路由选择将不同网络之间连接起来。因此,网络层和数据链路层是相互依赖、相互配合的关系,共同构建了整个网络通信的基础。

以“Expedia”旅行网站为例,数据链路层负责在不同服务器和用户设备之间传输数据帧,类似于旅行社内部的信息传递;网络层则负责将数据包从源到目的地,类似于旅行规划者将客户从一个地方安全送达另一个地方。数据链路层和网络层共同构建了网络通信的基础,确保数据的可靠传输。

 总结: 

数据链路层控制数据在一段链路上的传递

网络层保证数据从发送端到达接收端,中间具体是如何传输的,它并不会理会


2. IP基础知识

2.1 什么是IP地址?

在计算机通信中, 为了识别通信双方, 必须要有一个类似于地址的识别码进行标识。

在数据链路层中我们使用MAC地址来标识一段链路中不同的物理主机, 在网络层中我们则是使用IP地址作为识别码, 用来标识网络中的不同主机。

因此在TCP/IP通信中所有的主机和路由器都必须要设定自己的IP地址

2.2 路由控制

假设在网络中有两个主机A和B, A想要给B主机发送数据包, 那么A发出的数据包怎么到达B呢? 即使数据碰巧正确的到达了B,那么B返回的响应还能碰巧的到达A吗? 

通过路由器实现路由控制

通过路由器最终可以实现数据正确的到达目的地

那么路由器是如何对数据包进行转发的呢?

路由其中存在一张路由控制表, 路由器是通过查表转发的方式来实现路由的

那么问题又来了,路由表是如何计算出来的? 或者说是如何配置的?

静态路由配置: 人工的方式

动态路由配置: 通过路由选择算法动态生成路由表(具体不展开)


3. IP地址基础知识

3.1 IP地址定义

IP地址由32位正整数来表示。 TCP/IP协议通信要求将IP地址分配给每个参与通信的主机,但是IP地址在计算机中是以二进制的方式进行处理, 与人类的记忆方式并不符合, 于是采用了一种表示方式对其进行优化, 规定每八位为一组, 分成四组, 每组之间以 . 隔开, 再将其转变为十进制数 - 点分十进制

 可以通过简单的计算得到, 其最大可以分配的IP地址数量为 4294967296 最多可以供43亿主机接入到互联网, 这在早期或许是够用的, 但是在现在已经远远不够了, 那么是如何解决这个问题的呢?(后面说)

3.2 IP地址组成

IP地址由 "网络标识" 和 "主机标识" 两部分组成

互联网是由大大小小不同的网络组成,每个网络中都会有其不同的主机, 通过网络标识我们可以轻松的找到该网络, 通过主机标识我们可以锁定该网络中的那个特定的主机

通过网络标识可以直接锁定网络进行转发

3.3 IP地址分类

  • A类地址:以0开头,范围从1.0.0.0到126.255.255.255,用于大型网络,可以容纳约16百万台主机。

  • B类地址:以10开头,范围从128.0.0.0到191.255.255.255,用于中型网络,可以容纳约6万台主机。

  • C类地址:以110开头,范围从192.0.0.0到223.255.255.255,用于小型网络,可以容纳约250台主机。

  • D类地址:以1110开头,范围从224.0.0.0到239.255.255.255,用于多播(Multicast)通信。


3.4 子网掩码

IP地址分类导致浪费?

IP地址分类是根据固定的规则来划分地址范围的,比如A类地址范围是1.0.0.0到126.255.255.255,B类地址范围是128.0.0.0到191.255.255.255等。这种固定划分可能导致某些网络获得了更多的IP地址资源,而另一些网络可能获得了比实际需要更多的IP地址,从而造成了IP地址资源的浪费。

就拿B类来说, 理论上一段链路允许6万5千多台计算机连接, 然而在实际情况中根本不存在这样的情况,这不就造成浪费了吗?  本来IP地址都不够用, 还要浪费!!

子网与子网掩码

子网是一个逻辑上的概念,用于将一个大的IP地址范围划分为多个小的网络。子网掩码用于确定一个IP地址属于哪个子网。子网掩码是一个32位的二进制数字,通常用点分十进制表示,例如:255.255.255.0。在子网掩码中,所有网络位都设置为1,所有主机位都设置为0。当一个IP地址和子网掩码进行逻辑与运算时,可以得到该IP地址所在的子网。

通过引入子网掩码, 一个IP地址可以不再受限于自己的类别, 而是可以通过子网掩码自由的指定自己网络标识长度!

对于子网掩码目前有两种表示方式, 一种是将IP和子网掩码分别放一行

另一种就是在IP地址后面拼接上 /+网络地址位数

3.5 CIDR与VLSM

由于A类地址过大, C类地址过小, B类地址因此出现严重匮乏, 为了解决这个问题, 人们开始放弃IP地址的分类, 采用任意长度分割IP地址的网络标识和主机标识。 这种方式就是 CIDR, 意为 "无类型域间选路"

根据CIDR可以将连续多个C类地址划分到一个较大的网络中。

VLSM是在CIDR基础上发展而来的技术,它允许在一个网络中使用不同大小的子网掩码。这样可以更有效地利用IP地址空间,避免浪费。VLSM通常用于大型网络中,可以根据不同子网的需求来分配不同大小的子网。

3.6 全局地址和私有地址

最开始的时候由于IP地址使用量不大, TCP/IP规定互联网中的每个主机和路由器都必须有一个唯一的IP地址。

然而对着互联网的普及, IP地址不足的问题日趋显著。 如果一直按照这个办法采用唯一地址的话,会有IP地址耗尽的危险。

于是衍生了一种新的技术, 它不需要为每一台主机或路由器分配一个固定的IP地址, 而是在必要的时候为相应数量的设备分配唯一的IP地址 - NAT技术

私有IP

私有IP地址是指在局域网内部使用,不直接暴露在公共互联网中的IP地址范围。私有IP地址用于内部通信和连接局域网内的设备,而不用于在互联网上进行通信。

范围

NAT技术就可以实现私有IP与全局IP的转换

5. IPV4首部

  • 版本(Version):4位,指示IPv4协议的版本号,通常为4。
  • 首部长度(Header Length):4位,指示IPv4首部的长度,以32位字(4字节)为单位,因此最小值为5。
  • 服务类型(Type of Service):8位,用于指定数据包的服务质量要求。
  • 总长度(Total Length):16位,指示整个IPv4数据包的长度,包括首部和数据部分。
  • 标识(Identification):16位,用于标识数据包的唯一性。
  • 标志(Flags):3位,用于控制数据包的分片和重组。
  • 分段偏移(Fragment Offset):13位,用于指示分段数据包相对于原始数据包的偏移量。
  • 生存时间(Time to Live):8位,指示数据包在网络中的生存时间,每经过一个路由器减1,直到为0时被丢弃。
  • 协议(Protocol):8位,指示数据部分使用的协议类型,如TCP、UDP等。
  • 首部校验和(Header Checksum):16位,用于检测首部在传输过程中是否发生错误。
  • 源IP地址(Source IP Address):32位,指示数据包的源IP地址。
  • 目标IP地址(Destination IP Address):32位,指示数据包的目标IP地址。

6. NDS

我们平时在访问网站时不会使用IP地址, 而是使用一个字符串来进行访问, 比如: www.baidu.com

TCP/IP网络要求每一个互联的计算机都有其唯一的IP地址, 并基于这个IP地址进行通信, 但是这个IP地址并不便于记忆, 因此产生了一个可以有效管理主机名和IP地址对应关系的系统 - DNS

DNS内部维护了一个用来表示组织内部主机名和IP地址之间对应关系的数据库。

域名解析

在浏览器中我们输入一个主机名, DNS会自动检索那个注册了主机名和IP地址的数据库, 并迅速定位对应的IP地址

域名的构成

域名是用来标识互联网上计算机或其他资源的名称。域名的构成通常由多个部分组成,每个部分之间用点号(.)分隔。以下是域名的构成要素:

  1. 顶级域(Top-Level Domain, TLD):顶级域是域名中最高级别的部分,通常表示国家、地区或特定类型的组织。例如,.com、.org、.net、.edu、.gov、.cn、.jp等。

  2. 二级域(Second-Level Domain, SLD):二级域是位于顶级域之下的部分,通常用于标识特定的组织、公司或个人。例如,在example.com中,"example"就是二级域。

  3. 子域(Subdomain):子域是位于二级域之下的部分,可以用来进一步细分网站的结构或组织。例如,在blog.example.com中,"blog"就是一个子域。

  4. 主机名(Hostname):主机名是域名中最底层的部分,用于标识特定的计算机或服务器。例如,在www.example.com中,"www"就是主机名。

分层结构


域名服务器

在互联网中,域名服务器构成了一个层次化的系统,包括根域名服务器、顶级域名服务器、权威域名服务器和本地域名服务器等不同类型的服务器。当用户发起域名解析请求时,域名服务器会根据查询的域名层级逐级向上查询,直至找到对应的IP地址。域名服务器的作用是确保互联网上的域名能够正确映射到对应的IP地址,从而实现网络通信和资源访问。

7. ARP

ARP是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据包的网络设备对应的MAC地址。如果目标主机不在同一段链路上,可以通过ARP查找下一跳路由器的MAC,从而进行转发。

工作机制

 主机A为了获得主机B的MAC地址, 就需要通过广播发送一个ARP请求包, 这个包中包含了主机B的IP地址, 由于广播可以被同一段链路上的主机和路由器接收, 因此ARP请求包会被同一段链路上的主机和路由器进行解析。如果ARP请求包中的目标IP地址和自己的IP地址一致,就会把自己的MAC地址响应给主机A,反之则丢弃。

如果每发送一个IP数据包都需要进行一次ARP请求, 势必会造成不必要的网络流量, 为了解决这个问题, 通常是吧获取到的MAC地址缓存一段时间,存入一个叫做ARP缓存表的地方。

8 . DHCP

逐一为每一台主机设置IP地址是一件非常繁琐的事情。 特别是在使用移动设备的时候, 每移动到一个地方, 都需要重新设置IP地址。

为了实现自动配置IP地址, 统一管理IP地址分配, 就产生了一种协议 - 动态主机配置协议(DHCP), 有了DHCP, 计算机只要连接到互联网, 就可以进行TCP/IP通信。

DHCP中继代理

DHCP协议通常使用广播消息来进行IP地址分配和配置,但广播消息无法跨越子网边界。这就是DHCP中继代理发挥作用的地方。当一个客户端设备在一个子网中发送DHCP请求时,DHCP中继代理会接收该广播消息,并将其转发到其他子网中的DHCP服务器。DHCP服务器会收到这个消息,分配一个IP地址并将响应消息发送回DHCP中继代理,最终再由DHCP中继代理转发给客户端设备。

拓展

IPV6

IPv6(Internet Protocol version 6)是互联网协议的第六版,是当前互联网使用的下一代网络层协议。IPv6的设计目标是解决IPv4存在的地址枯竭、安全性、自动化配置等问题,并提供更大的地址空间和更好的性能。

  1. 更大的地址空间:IPv6采用128位地址,相比IPv4的32位地址,IPv6提供了更多的IP地址,可支持更多的设备连接到互联网。

  2. 改进的安全性:IPv6内置IPSec(Internet Protocol Security)协议,提供端到端的数据加密和认证功能,增强了网络通信的安全性。

  3. 简化的头部结构:IPv6头部相对IPv4头部更简洁,减少了路由器处理数据包的开销,提高了网络性能。

  4. 自动化配置:IPv6支持自动化的地址配置(如SLAAC),设备可以通过Router Advertisement消息获取IPv6地址和其他网络配置信息,简化了网络管理。

  5. 移动性支持:IPv6为移动设备提供了更好的支持,包括移动IP和移动路由等功能,使移动设备在网络中更容易地进行漫游。

  6. 多播和任播:IPv6对多播和任播进行了改进,支持更有效的多播传输和任播服务。

  7. 逐渐取代IPv4:随着IPv4地址的枯竭和IPv6的推广,IPv6逐渐成为互联网的主要协议,为未来互联网的发展提供了更好的基础。

IP隧道

IP隧道(IP tunnel)是一种在网络中传输数据包的技术,它通过在原始IP数据包的基础上封装另一种IP数据包,使得数据包可以在一个网络协议的网络中传输到另一个网络协议的网络中。

IP隧道技术的基本原理是在原始IP数据包的头部添加一个额外的封装头部,将原始IP数据包作为负载传输。这样,数据包就可以在一个网络协议的网络中传输到另一个网络协议的网络中,而中间的网络设备只需根据封装头部信息进行路由转发。

 


总结

以上就是这篇博客的主要内容了,大家多多理解,下一篇博客见!

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

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

相关文章

自己动手用ESP32手搓一个智能机器人:ESP32-CAM AI Robot

目录 介绍 硬件需求 软件需求 步骤 总结 源码下载 介绍 ESP32-CAM是一款集成了Wi-Fi和蓝牙功能的微控制器模块,同时还集成了摄像头接口,使其成为一个非常适合构建智能机器人的选择。在本项目中,我将向您展示如何使用ESP32-CAM模块构建…

数据运营分析-详解

一、指标与指标体系 指标体系就是业务逻辑的框架,也是思考业务逻辑的第一步 案例: 老板,我负责的用户活跃,主要考察每天启动产品的注册用户数量,整体来看,每月活跃保持7.3%的增长,是因为渠道团队的拉新活动带来很多新增注册用户,占每月活跃用户的40%,新一年会继续沿…

消息队列的七种经典应用场景

在笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享…

Linux项目自动化构建工具-make/ makefile及其应用:多文件编写第一个linux程序:进度条(懒人学习必备博文!!!)

目录 1.前言--make/makefile的引入 2.快速上手make/makefile---自动化构建 3.关于依赖关系和依赖方法 4.自动化清理 为什么我们执行编译的时候,make一下就好,清理却要使用make clean? 5. make/makefile是如何知道当前目录下可执行文件是否为最新 6.文件…

express实现用户登录和注册接口

目录 1 创建数据库2 连接数据库3 集成ORM库4 创建业务逻辑5 创建路由7 测试接口总结 我们在编写后端接口的时候操作数据库是一种常见的功能需求,express本身并不提供直接操作数据库的能力,需要借助第三方库来操作数据库,本篇讲解一下软件开发…

【二叉树】Leetcode 543. 二叉树的直径【简单】

二叉树的直径 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例1: 输入:root [1,2…

基于SpringBoot + Vue实现的在线装修管理系统设计与实现+毕业论文

介绍 系统包含用户、装修队、管理员三个角色 管理员: 管理员管理:管理其他管理员的账号和权限,确保系统管理的层次化和安全性。 装修队管理:审核装修队的资质,管理装修队的人员信息,监控工程进度&#xff…

elementUI this.$msgbox msgBox自定义 样式自定义 富文本

看这个效果是不是很炫?突出重点提示内容,对于用户交互相当的棒! 下来说说具体实现: let self = this const h = self.$createElement; this.$msgbox({title: null,message: h("p", {style: "margin-top:10px"}, [h("i", {class: "el-i…

命名空间【C++】(超详细)

文章目录 命名空间的概念命名空间的定义命名空间定义的位置作用域每一个命名空间都是一个独立的域作用域符:: 编译器找一个变量/函数等的定义,寻找域的顺序为什么要有命名空间?1.解决库与程序员定义的同名的重定义问题2.解决程序员…

【氮化镓】p-GaN栅极退化的温度和结构相关性

论文总结: 本文献深入研究了带有p-GaN栅极的正常关断型(normally-off)高电子迁移率晶体管(GaN-HEMTs)在恒定电压应力下的时序退化行为。通过直流特性分析和温度依赖性分析,研究了故障时间(TTF)与应力温度和器件几何结构的依赖性。结果显示,p…

FME学习之旅---day17

我们付出一些成本,时间的或者其他,最终总能收获一些什么。 【FME-HOW-TO系列】28 栅格邻域函数 RasterConvolver转换器说明: 接受包含栅格几何对象的输入要素,并在对所有波段应用卷积滤波 器后输出要素。 本人对栅格数据处理的较…

【2023】kafka在linux和docker安装(kafka-1)

目录💻 一、linux安装kafka1. 安装jdk2. 上传解压到/usr/local目录下3、使用kafka 二、docker安装kafka1. 下载2. 安装zookeeper3. 安装kafka 一、linux安装kafka 环境主机 mac m2、虚拟机Ubuntu22.04.4 1. 安装jdk yum install -y java-1.8.0-openjdk.x86_64下载k…

11-设计模式:Go常用设计模式概述

设计模式是啥呢?简单来说,就是将软件开发中需要重复性解决的编码场景,按最佳实践的方式抽象成一个模型,模型描述的解决方法就是设计模式。使用设计模式,可以使代码更易于理解,保证代码的重用性和可靠性。 …

【Entity Framework】EF中DbSet类详解

【Entity Framework】EF中DbSet类详解 文章目录 【Entity Framework】EF中DbSet类详解一、概述二、定义DbSet2.1 具有DbSet属性的DbContext2.2 具有 IDbSet 属性的 DbContext 2.3 具有 IDbSet 属性的 DbContext三、DbSet属性四、DbSet方法五、DbContext动态生成DbSet 一、概述 …

打工人神器! Raccoon 代码小浣熊

继这三个之后,今天又来了一个 [ Raccoon代码小浣熊 ] 核心精要与产品特点 全面支持多种编程语言和IDE:「代码小浣熊」支持超过90种主流编程语言,包括但不限于Python、Java、JavaScript、C、Go和SQL等。同时,它集成了市面上主流的…

Quiet-STaR:让语言模型在“说话”前思考

大型语言模型(llm)已经变得越来越复杂,能够根据各种提示和问题生成人类质量的文本。但是他们的推理能力让仍然是个问题,与人类不同LLM经常在推理中涉及的隐含步骤中挣扎,这回导致输出可能在事实上不正确或缺乏逻辑。 考虑以下场景:正在阅读一…

CTF题型 php://filter特殊编码绕过小汇总

CTF题型 php://filter特殊编码绕过小汇总 文章目录 CTF题型 php://filter特殊编码绕过小汇总特殊编码base64编码string过滤器iconv字符集 例题1.[Newstarctf 2023 week2 include]2.[Ctfshow web 117] php://filter 是一个伪协议,它允许你读取经过过滤器处理的数据流…

【C++】string类(常用接口)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:http://t.csdnimg.cn/eCa5z 目录 修改操作 push_back append operator assign insert erase replace c_str find string类非成…

AI学习-Pandas数据处理分析

文章目录 1. Pandas概述2. Series用法2.1 Series的创建2.2 Series的取值2.3 Series的相关方法 3. DataFrame用法3.1 DataFrame创建3.2 DataFrame取值3.3 DataFrame相关方法 1. Pandas概述 ​ Pandas 是一个开源的数据分析处理库,它应用在数据科学、统计分析、机器学…

9.0-源码分析:Dubbo Remoting 层核心接口分析

dubbo-remoting 模块,该模块提供了多种客户端和服务端通信的功能。在 Dubbo 的整体架构设计图中,我们可以看到最底层红色框选中的部分即为 Remoting 层,其中包括了 Exchange、Transport和Serialize 三个子层次。这里我们要介绍的 dubbo-remot…