(学习笔记-IP)IP基础知识

基本认识

IP在TCP/IP参考模型中处于第三层,也就是网络层。

网络层的主要作用是:实现主机与主机之间的通信,也叫点对点的通信。

 网络层与数据链路层的关系:

MAC的作用是实现直连的两个设备之间通信,而IP负责没有直连的两个网络之间进行通信传输

 因此计算机网络中需要数据链路层网络层这个分层才能实现向最终目标地址的通信

在TCP/IP网络通信时,为了保证能够正常通信,每个设备都需要配置IP地址,否则无法实现正常的通信。

IP地址(IPV4)有32位正整数表示,IP地址在计算机中是以二进制方式处理的。

为了方便记忆人们采用了点分十进制的标记方式,也就是将32位IP地址以每8位为一组,共分为4组,每组以 . 隔开,再将每组转换为十进制。

 所以,IP地址的最大值也就是:

 即最大允许约43亿台计算机连接到网络。

 实际上,IP地址并不是根据主机台数来配置的,而是以网卡。像服务器、路由器等设备都是有2个以上的网卡,也就是它们会有2个以上的IP地址。

因此,让43亿台计算机全部连网其实是不可能的,更何况IP地址是由 [网络标识] 和 [主机标识] 这两个部分组成的,所以实际能够连接到网络的计算机个数更是少了很多。

但是现在不仅电脑配备了IP,手机等电子设备都配备了IP,早就超过了43亿,是如何支持这么多IP的呢? 

根据一种可以更换IP地址的技术:NAT


IP地址的分类

IP地址分类主要有五种类型,分别是A类、B类、C类、D类、E类。

 图中的黄色为分类号,用以区分IP地址类别。其中A,B,C类主要分为两个部分:网络号主机号

A、B、C分类对应的地址范围、最大主机个数如下表:

A、B、C分类地址最大主机个数是如何计算的?

最大主机个数。就是要看主机号的位数,如C类地址的主机号占8位,那么C类地址的最大主机个数:

 为什么要减2呢?

因为在IP地址中,有两个IP是特殊的,分别是主机号为全1和全0的地址。

  • 主机号全为1指定某个网络下的所有主机,用于广播
  • 主机号全为0指定某个网络

广播地址用于什么?

广播地址用于在同一个链路中相互连接的主机之间发送数据包

广播地址可以分为本地广播和直接广播两种:

  • 在本网络内广播的叫做本地广播。例如网络地址为192.168.0.0/24的情况下,广播地址是192.168.0.255.因为这个广播地址的IP包会被路由器屏蔽,所以不会到达192.168.0.0/24以外的其他链路上。
  • 在不同网络之间的广播叫做直接广播。例如网络地址为192.168.0.0/24的主机向192.168.1.255/24的目标地址发送IP包。收到这个包的路由器,将数据转发给192.168.1.0/24,从而使得所有的192.168.1.1-192.168.1.254的主机都能收到这个包(直接广播有一定的安全问题,多数情况下会在路由器上设置不转发

什么是D、E类地址?

D类和E类地址是没有主机号的,所以不可用于主机IP,D类常被用于多播,E类是预留的分类,暂时未使用。


多播地址由于什么?

多播用于将包发送给特定组内的所有主机。

由于广播无法穿透路由,若想给其他网段发送同样的包,就可以使用穿透路由的多播。

 多播使用的D类地址,前四位是1110表示多播地址,而剩下的28位是多播的组编号。

从 224.0.0.0 ~ 239.255.255.255 都是多播的可用范围,其划分为以下三类:

  • 224.0.0.0 ~ 224.0.0.255 为预留的组播地址,只能在局域网中,路由器是不会进行转发的。
  • 224.0.1.0 ~ 238.255.255.255 为用户可用的组播地址,可以用于 Internet 上。
  • 239.0.0.0 ~ 239.255.255.255 为本地管理组播地址,可供内部网在内部使用,仅在特定的本地范围内有效。

IP地址分类的优点

不管是路由器还是主机解析到一个IP地址的时候,我们判断其IP地址的首位是否为0,为0则为A类地址,那么就能很快的找出网络地址和主机地址

 所以,这种分类地址的优点就是简单明了、选路(基于网络地址)简单。


IP地址分类的缺点

缺点一:

同一网络下没有地址层次,比如一个公司用了B类地址,但是可能需要根据生产环境、测试环境、开发环境来划分地址层次,而这种IP分类是没有地址层次划分的功能,所以缺少地址的灵活性。

缺点二:

A、B、C类地址不能很好的与现实网络匹配。

  • C类地址能包含的主机数量实在是太少了,只有254个。
  • 而B类地址包含的最大主机量又太多了,6万多台机器放在一个网络下面,一般的企业基本达不到这个规模。

这两个缺点,都可以在CIDR无分类地址解决。


无分类地址CIDR

正因为IP分类存在许多缺点,所以后面提出了无分类地址的方案:CIDR

这种方式不再有分类地址的概念。32比特的IP地址被划分为两部分,前面是网络号,后面是主机号。

怎么划分网络号和主机号

表示形式:a.b.c.d/x,其中/x表示前x位属于网络号,x的范围是0~32,这就使得IP地址更加具有灵活性。

比如 10.100.122.2/24,这种地址表示形式就是 CIDR,/24 表示前 24 位是网络号,剩余的 8 位是主机号。

 还有另一种划分网络号与主机号形式,就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。

将子网掩码与IP地址按位计算AND,就可得到网络号.


为什么要分离网络号与主机号?

因为两台计算机要通讯,首先要判断是否处于一个广播域内,即网络地址是否相同。如果网络地址相同,表明接收方在本网络上,那么可以吧数据包直接发送到目标主机。

路由器寻址工作中,也是通过这样的方式来找到对应的网络号的,进而把数据包转发给对应的网络内。


怎么进行子网划分

子网掩码不仅可以划分出网络号和主机号,实际上子网掩码还有一个作用,就是划分子网

子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址。

  •  未做子网划分的IP地址:网络地址+主机地址
  • 做子网划分后的IP地址:网络地址+(子网网络地址+子网主机地址)

假设对C类地址进行子网划分,网络地址192.168.1.0,使用子网掩码255.255.255.192对其进行子网划分。

C类地址中前24位是网络号,最后8位是主机号,根据子网掩码可知从8位主机号中借用2位作为子网号。

 由于子网网络地址被划分为2位,那么子网地址就有4个,分别是00,01,10,11,具体划分如下:

 划分后的4个子网如下表:


 公有IP地址与私有IP地址

在A、B、C类地址中,实际上分公有IP地址和私有IP地址。

平时办公室、家里、学校的IP,一般都是私有IP地址。因为这些地址允许组织内部的IT人员自己管理、自己分配,而且可以重复。因此,多个学校的私有IP地址可以是一样的。

就像是每个小区都有自己的楼编号和门牌号,可以一样。但一但出了小区,就需要带上中山路666号(公网IP地址),是国家统一分配的,不能两个公网IP地址相同。

所以,公共IP地址是有一个组织统一分配的,假设你要开一个博客网站,那么就需要申请购买一个公有IP,这样全世界的人才能访问。并且公有IP地址基本上要在整个互联网范围内保持唯一。


公有IP地址由谁管理?

私有IP地址通常是内部的IT人员管理,公有IP地址是由ICANN组织管理,中文叫[互联网名称与数字地址分配机构]。

IANA 是 ICANN 的其中一个机构,它负责分配互联网 IP 地址,是按洲的方式层层分配。

  • ARIN 北美地区
  • LACNIC 拉丁美洲和一些加勒比群岛
  • RIPE NCC 欧洲、中东和中亚
  • AfriNIC 非洲地区
  • APNIC 亚太地区

其中,在中国是由 CNNIC 的机构进行管理,它是中国国内唯一指定的全局 IP 地址管理的组织。


IP地址与路由控制

IP地址的网络地址这一部分是用于进行路由控制。

路由控制表中记录着网络地址与下一步应该发送至路由器的地址。在主机和路由器上都会有各自的路由器控制表。

在发送IP包时,首先要确定IP包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配。

  1.  主机A要发送一个IP包,其源地址是10.1.1.30和目标地址是10.1.2.10,由于没有在主机A的路由表找到与目标地址10.1.2.10相同的网络地址,于是包被转发到默认路由(路由器1
  2. 路由器1收到IP包后,也在路由器1的路由表匹配与目标地址相同的网络地址记录,发现匹配到了,于是就把IP数据包转发到了10.1.0.2这台路由器2
  3. 路由器2收到后,同样对比自身的路由表,发现匹配到了,于是把IP包从路由器2的10.1.2.1这个接口发出去,最终经过交换机把IP数据包转发到了目标主机。

环回地址是不是会流向网络

环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。

计算机在使用一个特殊的IP地址127.0.0.1作为环回地址。改地址具有相同意义的是一个叫做localhost的主机名。使用这个IP或主机名时,数据包不会流向网络


IP分片与重组

每种数据链路的最大传输单元MTU都是不相同的,如FDDI数据链路 MTU 4352、以太网的MTU是1500字节等。

每种数据链路的MTU之所以不同,是因为每个不同类型的数据链路的使用目的不同。使用目的不同,可承载的MTU也就不同。

其中,最常见的数据链路就是以太网,其MTU是1500字节。

当IP数据包大于MTU时,IP数据包就会被分片

经过分片之后的IP数据包在被重组的时候,只能由目标主机进行,路由器是不会进行重组的

 在分片传输中,一旦某个分片丢失,则会造成整个IP数据包报废,所以TCP引入了MSS也就是在TCP层进行分片不由IP层分片(可参见),那么对于UDP尽量不要发送一个大于MTU的报文。


IPV6基本认识

IPV4的地址是32位的,大约可以提供42亿个地址,但是早在2011年IPV4地址就已经被分配完了。

但是IPv6的地址是128位的,这可分配的地址数量是巨大的,IPv6 可以保证地球上的每粒沙子都能被分配到一个 IP 地址。

但IPv6除了有更多的地址之外,还有更好的安全性和扩展性,简单点就是IPv6相比于IPv4能带来更好的网络体验。

但是因为IPv4和IPv6不能互相兼容,所以我们不但要我们电脑、手机之类的设别支持,还需要网络运营商对现有的设备进行升级,这也是IPv6普及较慢的一个原因。

IPv6的亮点

IPv6不仅仅只是可分配地址变多了,它还有非常多的亮点:

  • IPv6可自动配置,即使没有DHCP服务器也可以实现自动分配IP地址,即插即用
  • IPv6包头包首部长度采用固定的值40字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的性能
  • IPv6有应对伪造IP地址的网络安全功能以及防止线路窃听的功能,大大提升了安全性

IPv6地址的标识方法

IPv4地址长度共32位,是以每8位作为一组,并用点分十进制的表示方式。

IPv6地址长度是128位,是以每16位作为一组,每组用[ : ]隔开

 如果出现连续的0时还可以将这些0省略,并用两个冒号[ :: ]隔开。但是,一个IP地址中只允许出现一次两个连续的冒号。


IPv6地址结构

IPv6类似IPv4,也是通过IP地址的前几位标识IP地址的种类。

IPv6地址主要有以下类型的地址:

  • 单播地址,用于一对一的通信
  • 组播地址,用于一对多的通信
  • 任播地址,用于通信最近的节点,最近的节点是由路由协议决定的
  • 没有广播地址。


IPv6单播地址类型

对于一对一通信的IPv6地址,主要划分了三类单播地址,每类地址的有效范围都不同。

  • 在同一链路单播通信,不经过路由器,可以使用链路本地单播地址,IPv4无此类型
  • 在内网里单播通信,可以使用唯一本地地址,相当于IPv4的私有IP
  • 在互联网通信,可以使用全局单播地址,相当于IPv4的公有IP


IPv4首部与IPv6首部

IPv4 首部与 IPv6 首部的差异如下图:

 IPv6相比IPv4的改进:

  • 取消了首部校验和字段。因为在数据链路层和传输层都会校验,因此IPv6直接取消了IP的校验
  • 取消了分片/重新组装相关字段。分片和重组是耗时的过程,IPv6不允许在中间路由器进行分片和重组,这种操作只能在源与目标主机,大大提高了路由器的转发速度。
  • 取消选项字段。选项字段不再是标准IP首部的一部分了,但它并没有消失,而是可能出现在IPv6首部中的[下一个首部]指出的位置上。删除该字段IPv6的首部成为固定的40字节。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

消息队列- 背景知识

这里写目录标题 前言消息队列消息队列的作用常见的消息队列消息队列的核心概念BrokerServer核心概念消息队列的核心API消息队列与消费者之间的工作模式交换机的类型消息队列的持久化 总结 前言 消息队列,不知道大家是否陌生,如果说消息队列感到陌生的话, 有一个模型肯定大家都…

Nginx下载和安装教程、Nginx目录结构、Nginx具体应用

1、Nginx概述 Nginx是一款轻量级的开源Web服务器软件,也是一种反向代理服务器。它以其高性能和灵活性而被广泛应用于互联网领域。本文将介绍Nginx的概述、下载和安装以及目录结构。 (1)Nginx介绍 Nginx最初由Igor Sysoev开发,目…

Pycharm工具Python开发自动添加注释(详细)

方法自动添加参数注释 定义了一个函数,在函数下面敲入了三个双引号后,enter回车并没有自动出现注释,如图: 解决办法 Pycharm中依次打开File —> Settings —> Tools —> Python Integrated Tools,如图&…

C++笔记之对指针类型的变量进行+1操作

C笔记之对指针类型的变量进行1操作 在C中,对指针类型的变量进行"1"操作会根据指针的数据类型而有所不同。这涉及到指针的算术运算,C中的指针算术运算是根据指针所指向的数据类型的大小来进行的。 code review! 文章目录 C笔记之对指针类型的…

最受欢迎的12个Python开源框架,还没用过你就OUT了!!!

今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架。如果你正在学习python,那么这12个开源框架,千万别错过,这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试&#xff0…

zookeeper-3.7.1集群

1.下载&解压安装包apache-zookeeper-3.7.1-bin.tar.gz 解压到/app/ &改名zookeeper-3.7.1 [rootnode1 app]# tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /app/ [rootnode1 app]# mv apache-zookeeper-3.7.1-bin zookeeper-3.7.1 ---- 删除docs [rootnode1…

五步快速搭建个性化外卖小程序商城

随着人们生活节奏的加快,外卖行业蓬勃发展。为了满足用户的需求,许多企业开始使用小程序商城来提供外卖服务。那么,如何制作一个功能完善、用户友好的外卖小程序商城呢?下面就来为大家详细介绍一下制作的步骤。 首先,我…

Docker consul容器服务更新与发现

Docker consul容器服务更新与发现 一、什么事服务注册与发现二、什么是consul三、consul部署1、consul服务器2、registrator服务器3、consul-template 一、什么事服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可…

Vue3+Vite+TypeScript常用项目模块详解

目录 1.Vue3ViteTypeScript 概述 1.1 vue3 1.1.1 Vue3 概述 1.1.2 vue3的现状与发展趋势 1.2 Vite 1.2.1 现实问题 1.2 搭建vite项目 1.3 TypeScript 1.3.1 TypeScript 定义 1.3.2 TypeScript 基本数据类型 1.3.3 TypeScript语法简单介绍 2. 项目配置简单概述 2.…

【CEEMDAN-WOA-LSTM】完备集合经验模态分解-鲸鱼优化-长短时记忆神经网络研究(Python代码实现)

目录 💥1 概述 1.1 完备集合经验模态分解原理 1.2 鲸鱼优化 1.3 LSTM 📚2 运行结果 🎉3 参考文献 🌈4 Python代码实现 💥1 概述 1.1 完备集合经验模态分解原理 早期的 EMD 方法具有较强的自适应性,能够有…

【弹力设计篇】聊聊限流设计

为什么需要限流 对于一个后端系统来说,其处理能力是有限的,会受到业务流程,系统配置等的限制,QPS和TPS有一个上限值,比如一个订单系统1分钟可以处理100个请求。当1分钟超过100个请求的时候,我们为了保证系…

5.python设计模式【单例模式】

内容:保证一个类只有一个实例,并提供一个访问它的全局访问点角色: 单例(Singleton) UML图 举个例子: 需求:一个类只能实例化一个对象,不能实例化多个对象 from abc import abstract…

QT【day2】

完善登录框&#xff1a; //main头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QDebug> //信息调试类&#xff0c;用于打印输出 #include<QIcon> //图标头文件 #include<QPushButton> //按钮类头文件 #include…

细说小程序底部标签---【浅入深出系列006】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择 学习语法的前提底部标签的总概鹅厂的自定义标签官方说明&#xff1a; 先来了解app.json文件tabBar 位于app.json哪里 使用流程要注意的是&#xff1a;配套资源作业&a…

fpga开发——蜂鸣器

蜂鸣器的原理 有源蜂鸣器和无源蜂鸣器 无源蜂鸣器利用电磁感应现象&#xff0c;为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声&#xff0c;接入直流电只能持续推动振膜而无法产生声音&#xff0c;只能在接通或断开时产生声音。无源蜂鸣器的工作原理与扬声…

git实战

git实战 第一章 快速入门 1.1 什么是git git是一个分布式的版本控制软件。 软件&#xff0c;类似于QQ、office、dota等安装到电脑上才能使用的工具。版本控制&#xff0c;类似于毕业论文、写文案、视频剪辑等&#xff0c;需要反复修改和保留原历史数据。分布式 - 文件夹拷贝…

linux网卡命名规则与修改方法

一.前言&#xff1a; 在早期的的操作系统中例如fedora13或者ubuntu15之前网卡命名的方式为eth0&#xff0c;eth1&#xff0c;eth2&#xff0c;属于biosdevname 命名规范。当然这是针对intel网卡的命名规则&#xff0c;对于realtek类型的网卡会命名为ens33。但是这个编号往往不一…

(七)「消息队列」之 RabbitMQ 发布者确认(使用 .NET 客户端)

发布者确认&#xff08;Publisher Confirms&#xff09; 发布者确认是一个 RabbitMQ 扩展&#xff0c;用于实现可靠的发布。当在通道上启用发布者确认时&#xff0c;客户端发布的消息将由代理异步确认&#xff0c;这意味着它们已在服务器端得到处理。 0、引言 先决条件 本教程…

uni-app个人中心

一. 介绍uni-app&#xff1a; uni-app 是基于Vue.js框架开发的一个跨平台移动应用开发框架&#xff0c;可以同时支持多个平台&#xff08;如iOS、Android、Web等&#xff09;的应用开发。采用了统一的语法和组件规范&#xff0c;可以大大简化跨平台开发的工作&#xff0c;提高…

SZ:zip/内部函数外部函数/VGG模型/nn

zip&#xff1a; -r recursion-d delete-m move (move隐藏的意思是&#xff0c;原文件会消失&#xff09;想增加文件&#xff0c;不需要加参数什么参数也没有。如果zip压缩文件不存在&#xff0c;执行以上命令将会创建一个新的zip文件并将指定的文件添加进去。如果zip压缩文件…