网络基础 - 地址篇

news/2024/11/28 13:35:56/

一、IP 地址

  • IP 协议有两个版本,IPv4 和 IPv6
  • IP 地址(IPv4 地址)是一个 4 字节,32 位的正整数,通常使用 “点分十进制” 的字符串进行表示,例如 192.168.0.1,用点分割的每一个数字表示一个字节,范围是 0 ~ 255
  • IP 地址由 “网络标识(网络地址)” 和 “主机标识(主机地址)” 两部分组成,例如 192.168.128.10/24,其中的 “/24” 表示从第 1 位开始到多少位属于网络标识,那么,剩余位就属于主机标识了,但是,究竟从第几位开始到第几位算是网络标识,又是从第几位开始到第几位算是主机标识呢?网络基础 - 网段划分篇
    在这里插入图片描述
    每一块网卡(Network Interface Card, NIC)都得设置 IP 地址,通常一块网卡只设置一个 IP 地址,其实一块网卡也可以配置多个 IP 地址,此外,一台路由器通常都会配置两个以上的网卡,因此可以设置两个以上的 IP 地址
    在这里插入图片描述

二、MAC 地址

更新ing

三、地址的唯一性和层次性

  • 唯一性:在同一个通信网络中不允许有两个相同地址的通信主体(通信传输中,发送端和接收端可以被视为通信主体)存在
  • 层次性:当地址的总数越来越多时,便于高效地从中找出通信的目标地址
    在这里插入图片描述
    MAC 地址和 IP 地址在标识一个通信主体时虽然都具有唯一性,但是它们当中只有 IP 地址具有层次性

MAC 地址由设备的制造厂商针对每块网卡进行分别指定,人们可以通过制造商识别号、制造商内部产品编号以及产品通用编号确保 MAC 地址的唯一性,然而,人们无法确定哪家厂商的哪个网卡被用到了哪个地方,虽然 MAC 地址中的制造商识别号、产品标号以及通用编号等信息在某种程度上也具有一定的层次性,但是对于寻找地址并没有起到任何作用,所以不能算作有层次的地址,正因如此,虽然 MAC 地址是真正负责最终通信的地址,但是在实际寻址过程中,IP 地址却必不可少

那么 IP地址又是怎样实现分层的呢?IP 地址 = 网络号 + 主机号
在这里插入图片描述
网络传输中,每个节点(节点是主机和路由器的统称,主机的定义是指 “配置有 IP 地址,但是不进行路由控制的设备” ,既配有 IP 地址又具有路由控制能力的设备叫做 “路由器(或 3 层交换机)”)会根据分组数据的地址信息,来判断报文应该由哪个网卡发出去,为此,各个地址会参考一个发出接口列表,在这一点上 MAC 寻址和 IP 寻址是一样的,只不过 MAC 地址转发表中所记录的是实际的 MAC 地址本身,而路由表中记录的 IP 地址则是集中了之后的网络
在这里插入图片描述
IP 包被转发到途中某个路由器时,正是利用目标 IP 地址的网络标识进行路由,因为即使看不见主机标识,只要一见到网络标识就能判断出是否为该网段内的主机

四、IP 与 MAC 的关系

数据链路层(网卡层)的 MAC 提供直连两个设备之间的通信功能,与之相比,作为网络层的 IP 则负责在没有直连的两个网络之间进行通信传输

那么为什么一定需要这样的两个层次呢?它们之间的区别又是什么呢?
在此,我们以旅行为例说明这个问题,有个人要去一个很远的地方旅行,并且计划先后乘坐飞机、火车到达目的地,为此,他决定先去旅行社购买机票和火车票,旅行社不仅为他预定好了旅途过程中所需要的机票和火车票,甚至为他制定了一个详细行程表,详细到几点几分需要乘坐飞机或火车都一目了然,当然,机票和火车票只有特定区间内有效
在这里插入图片描述
仔细分析一下机票和火车票,不难发现,每张票只能够在某一限定区间内移动,此处的 “区间内” 就如同通信网络上的数据链路,而这个区间内的出发地点和目的地点就如同某一个数据链路的源地址和目标地址等首部信息(出发地点好比源 MAC 地址,目标地点好比目的 MAC 地址),整个全程的行程表的作用就相当于网络

如果我们只有行程表而没有车票,就无法搭乘交通工具到达目的地,反之,如果除了车票其他什么都没有,恐怕也很难到达目的地,因为你不知道该坐什么车,也不知道该在哪里换乘,因此,只有两者兼备,既有某个区间的车票又有整个旅行的行程表,才能保证到达目的地,与之类似,计算机网络中也需要数据链路层和网络层这个分层才能实现向最终目标地址的通信


http://www.ppmy.cn/news/1550630.html

相关文章

逻辑处理器核心指纹修改

navigator.hardwareConcurrency的属性,可以用来获取CPU的逻辑处理器核心数。 1、navigator.hardwareConcurrency接口定义: third_party\blink\renderer\core\frame\navigator_concurrent_hardware.idl // https://html.spec.whatwg.org/C/#navigator.hardwarecon…

w059基于springboot的课程答疑系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件&#xff0…

理解B+树

深入理解B树:数据库索引的核心技术 在数据库的世界里,数据检索的速度至关重要。为了提高数据检索的效率,数据库系统采用了多种数据结构,其中B树(B-plus Tree)因其独特的特性而成为索引实现的首选。今天&am…

Centos 安装 Node.js 和 npm

方法2:使用 NVM(Node Version Manager)安装 安装 NVM curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 重新加载配置 source ~/.bashrc 安装最新的 LTS 版本的 Node.js nvm install --lts 验证安装…

PostgreSQL的内存结构

PostgreSQL的内存结构对于数据库的性能和稳定性至关重要。它主要分为两大类:本地内存区域(Local memory area)和共享内存区域(Shared memory area) 。 共享内存(Shared Memory) 共享内存是Pos…

【微服务】RabbitMQ与SpringAMQP消息队列

一、初识MQ 1. 同步通讯 同步通讯就好比双方打电话,可以实时响应,但只能一对一,只能同时和一个人聊天。 异步通讯就好比两个人发信息,你发信息给对方,对方不一定给你回复,但是可以一对多,可…

Java线程的使用

Java中的线程是用来实现多任务并发执行的机制。在Java中,主要有两种方式来创建和使用线程:实现Runnable接口和继承Thread类。 实现Runnable接口: 创建一个类,实现Runnable接口,并重写run()方法。在run()方法中定义线程…

使用 pycharm 新建不使用 python 虚拟环境( venv、conda )的工程

有时候我们发现一个好玩的 demo,想赶快在电脑上 pip install 一下跑起来,发现因为 python 的 venv、conda 环境还挺费劲的,因为随着时间的发展,之前记得很清楚的 venv、conda 的用法,不经常使用,半天跑不起…