百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

IPv4和IPv6

bigegpt 2024-08-08 11:56 2 浏览

网络层的主要作用是?

IP位于网络层,网络层的作用主要实现主机和主机之间的通信。

网络层和数据链路层的区别?

  • IP网络层负责在没有直连的两个网络之间进行通信
  • MAC数据链路层负责直连的两个设备之间通信

通信的双方源IP和目的IP保持不变,但源MAC和目标MAC却是始终变化的。

IP地址的格式

IP地址(IPV4)由32位正整数来表示,IP地址在计算机中是以二进制的方式处理,但为了方便记忆采用点十进制的标记方式(8位为一组,分四组,每一组都转换为十进制)如下:

格式 示例 IPV4二进制 11000000 10101000 00000001 00000001 IPV4十进制 192 168 1 1 点分十进制 192.168.1.1

IP地址容纳的最大主机数

IP地址的数量是有限的,最大是2的32次方,但互联网中的设备是无法达到这个数量的,因为IP地址是根据网卡来配置的,而服务器、路由器等设备都是可以有2个以上的网卡,也就是会有两个以上的IP地址。

但实际上现在互联网的设备(手机、IPAD、电脑)等远远超过了2的32次方,这是通过NAT技术实现的。

IP地址分类

IP地址最初被划分为五大类:

  • A类:首位为0,网络号为7位,主机号24位
  • B类:前两位为10,网络号为14位,主机号16位
  • C类:前三位为110,网络号21位,主机号8位
  • D类:前四位为1110
  • E类:前四位为1111

上述分类的示意图如下:

A、B、C类的IP范围

A、B、C类的IP地址范围如下图:

每类地址的主机个数为2^主机号位数-2。之所以减2是因为在网络中主机号全为1和全为0分别有特定的用处:

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

广播地址的分类

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

  • 本地广播:在本网络内广播,例如网络地址是192.168.0.0/24,广播地址为192.168.0.255。该广播地址的IP包会被路由器屏蔽,无法抵达其他网络
  • 直接广播:在不同网络中进行广播,例如网络地址是192.168.0.0/24的主机向192.168.1.255/24的目标地址发送IP包。收到这个包的路由器,会将数据转发给192.168.1.0/24,192.168.1.0/24网络下的主机都会收到该数据包(由于安全问题,多数情况下路由器上都设置不转发)。

D、E类地址有啥不同?

D、E类地址是没有主机号的,因此不可以用于主机IP。D类用于多播,E类是预留的分类未使用,如下图:

什么是多播?

多播用于将包发送给特定组内的所有主机。由于广播无法穿透路由发送给其他网络,因此需要使用可以穿透路由的多播。

多播使用的是D类地址,多播地址主要分为以下三类:

  • 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分类的优点是简单明了、路由(基于网络地址)简单。但也存在以下缺点:

  • 同一网络下没有地址层次:比如公司使用了B类地址,但无法根据环境(生产、测试)来划分地址层次
  • 无法很好的与显示网络匹配:A、B类地址过多,但C类地址太少

无分类地址CIDR

无分类地址使用a.b.c.d/x来划分网络号和主机号,其中x表示前x位属于网络号,比如:10.100.122.2,/24表示前24位是网络号,剩余的8位时主机号。

除了上述划分网络号的方式,还有一种是通过子网掩码,掩码就是掩盖掉主机号,剩余的就是网路号。

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

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

两台计算机需要通讯,首先会判断是否处于同一个广播域(即网络地址相同),如果是同一个广播域,表明接收方在和发送方在同一个网络中,可以直接把数据包发到目标主机。

如何进行子网划分?

子网掩码可以划分出网络号和主机号,除了该功能以外,子网掩码还有一个作用就是划分子网。

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

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

假设我们的总网络地址192.168.1.0,使用子网掩码255.255.255.192(也就是借用两位主机号进行子网划分),划分后的子网如下图:

公有IP地址和私有IP地址

在A、B、C类地址中,分为公有地址和私有地址,如下图:

私有IP地址允许组织内部的IT人员自行管理、自行分配,但公有IP是由一个统一组织进行分配的,公有IP需要在整个互联网内保持唯一。

公有IP的管理组织机构

在国内,CNNIC机构是国内唯一指定的全局IP地址管理组织。

IP地址和路由控制

IP地址中的网络地址用于进行路由控制。

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

如果在路由表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址(最长匹配)。

上图中的目的是要从主机A发送数据包给主机B,具体流程如下:

  1. 主机A发送数据包,源地址是10.1.1.30,目的地址是10.1.2.10,在主机A中的路由表查找具有相同网络地址结果是为查得,因此数据包被转发至特定路由器1(10.1.1.1)
  2. 路由器1收到IP数据包后,也查找自身的路由表,匹配到了相同的网络地址(101.2.0/24),因此路由器1会把数据包转发至路由器2(10.1.0.2)
  3. 路由器2收到数据包后,对比自身路由表发现匹配成功,于是把数据包从路由器2的10.1.2.1接口发送出去,最终经过交换机把数据包发送至目标主机。

什么是环回地址?

环回地址是同一台计算机上的程序之间进行网络通信所使用的的一个默认地址,这个特殊的IP地址是127.0.0.1,该地址相对应的主机名是localhost。在使用这个IP地址和主机名时,数据包不会流向网络。

IP分片与重组

每种数据链路的最大传输单元MTU是不相同的,我们最常见的以太网数据链路的MTU是1550字节

当IP数据包超过MTU时,IP数据包就会进行分片。经过分片后的数据包在流经路由器时不会被重组,只能由目标主机重组。而且一旦某个分片丢失,整个IP数据包都会被废弃,因此TCP引入了MSS在TCP层进行分片,避免IP层的分片。

IPv6地址

IPv4地址长度为32位,但IPv6地址长度是128位,以16位作为一组,每组用:隔开,如果出现连续的0还可以将0省略,使用两个:隔开。但是一个IP地址中只允许出现一次两个连续的:。

IPv6地址的结构

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

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

对于一对一通信的地址,主要划分了三类单播地址:

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

IPv4和Ipv6首部的区别

IPv6相比IPv4进行了如下改进:

  • 取消首部校验和字段:因为在数据链路层和传输层都会校验。
  • 取消了分片和重组相关字段:由于分片和重组只能在源主机和目的主机进行,中间路由器不能进行分片和重组,减少这些字段提高转发速度。
  • 取消选项字段:选项字段部分内容可能会在IPv6首部中的下一个首部的位置上出现

IPv6与IPv4的区别

  • IPv4和IPv6不能互相兼容,电脑、ipad等设备支持,网络运营商也要进行升级支持,普及较慢
  • IPv6没有DHCP服务器也可以实现IP地址自动分配,即插即用
  • IPv6包头固定位40字节,去掉包头校验和,简化首部结构,减轻了路由器的负荷,提高了传输性能
  • IPv6可以应对IP地址伪造、防止线路监听,安全性获得提升

相关推荐

【Docker 新手入门指南】第十章:Dockerfile

Dockerfile是Docker镜像构建的核心配置文件,通过预定义的指令集实现镜像的自动化构建。以下从核心概念、指令详解、最佳实践三方面展开说明,帮助你系统掌握Dockerfile的使用逻...

Windows下最简单的ESP8266_ROTS_ESP-IDF环境搭建与腾讯云SDK编译

前言其实也没啥可说的,只是我感觉ESP-IDF对新手来说很不友好,很容易踩坑,尤其是对业余DIY爱好者搭建环境非常困难,即使有官方文档,或者网上的其他文档,但是还是很容易踩坑,多研究,记住两点就行了,...

python虚拟环境迁移(python虚拟环境conda)

主机A的虚拟环境向主机B迁移。前提条件:主机A和主机B已经安装了virtualenv1.主机A操作如下虚拟环境目录:venv进入虚拟环境:sourcevenv/bin/active(1)记录虚拟环...

Python爬虫进阶教程(二):线程、协程

简介线程线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能...

基于网络安全的Docker逃逸(docker)

如何判断当前机器是否为Docker容器环境Metasploit中的checkcontainer模块、(判断是否为虚拟机,checkvm模块)搭配学习教程1.检查根目录下是否存在.dockerenv文...

Python编程语言被纳入浙江高考,小学生都开始学了

今年9月份开始的新学期,浙江省三到九年级信息技术课将同步替换新教材。其中,新初二将新增Python编程课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法按照教材...

CentOS 7下安装Python 3.10的完整过程

1.安装相应的编译工具yum-ygroupinstall"Developmenttools"yum-yinstallzlib-develbzip2-develope...

如何在Ubuntu 20.04上部署Odoo 14

Odoo是世界上最受欢迎的多合一商务软件。它提供了一系列业务应用程序,包括CRM,网站,电子商务,计费,会计,制造,仓库,项目管理,库存等等,所有这些都无缝集成在一起。Odoo可以通过几种不同的方式进...

Ubuntu 系统安装 PyTorch 全流程指南

当前环境:Ubuntu22.04,显卡为GeForceRTX3080Ti1、下载显卡驱动驱动网站:https://www.nvidia.com/en-us/drivers/根据自己的显卡型号和...

spark+python环境搭建(python 环境搭建)

最近项目需要用到spark大数据相关技术,周末有空spark环境搭起来...目标spark,python运行环境部署在linux服务器个人通过vscode开发通过远程python解释器执行代码准备...

centos7.9安装最新python-3.11.1(centos安装python环境)

centos7.9安装最新python-3.11.1centos7.9默认安装的是python-2.7.5版本,安全扫描时会有很多漏洞,比如:Python命令注入漏洞(CVE-2015-2010...

Linux系统下,五大步骤安装Python

一、下载Python包网上教程大多是通过官方地址进行下载Python的,但由于国内网络环境问题,会导致下载很慢,所以这里建议通过国内镜像进行下载例如:淘宝镜像http://npm.taobao.or...

centos7上安装python3(centos7安装python3.7.2一键脚本)

centos7上默认安装的是python2,要使用python3则需要自行下载源码编译安装。1.安装依赖yum-ygroupinstall"Developmenttools"...

利用本地数据通过微调方式训练 本地DeepSeek-R1 蒸馏模型

网络上相应的教程基本都基于LLaMA-Factory进行,本文章主要顺着相应的教程一步步实现大模型的微调和训练。训练环境:可自行定义,mac、linux或者window之类的均可以,本文以ma...

【法器篇】天啦噜,库崩了没备份(天啦噜是什么意思?)

背景数据库没有做备份,一天突然由于断电或其他原因导致无法启动了,且设置了innodb_force_recovery=6都无法启动,里面的数据怎么才能恢复出来?本例采用解析建表语句+表空间传输的方式进行...