TCP/IP协议(1): IP 地址和寻址方式 —— IP 协议的基础_tcp地址包括方法名-程序员宅基地

技术标签: 杨领well 的 TCP/IP 协议专栏  TCP/IP 协议  

TCP/IP协议(1): IP 地址和寻址方式 —— IP 协议的基础

最近在重学计算机网络,给自己立一个 flag,有感而发的时候写关于 TCP/IP 协议栈的系列博客。

IP 地址

IP 地址(Internet Protocol address, IP address)TCP/IP 协议栈中,起着至关重要的作用。IP 地址 不仅能唯一标识与之关联的主机,还能够指出该主机在网络中的位置,以方便我们在网络中找到该主机。

“它(IP 地址)是一个名字,标识出我们(在网络中)寻找的是什么。它也是一个地址,告诉我们要找的网络设备在网络中的哪个位置。他还是一个路线,指出我们可以如何到达与之关联的网络设备的位置。”
(“A name indicates what we seek. An address indicates where it is. A route indicates how to get there.”)

IPv4(Internet Protocol version 4) 地址

IPv4 最早在 ARPANET 中使用,如今已经在几乎所有的互联网使用。
IPv4 的地址由 32 位的非负整数表示, 通常用所谓的**点分十进制(Dot-decimal notation)**表示法表示。
点分十进制表示法将 IPv4 地址用点分成四份,每份八位。然后将每个八位转换成十进制非负整数。
如下表:

点分十进制表示 二进制表示
0.0.0.0 00000000 00000000 00000000 00000000
10.0.0.1 00001010 00000000 00000000 00000001

IPv6(Internet Protocol version 6) 地址

Internet 发展早期,加入网络的网络设备数量较少, 32 位的 IPv4 地址足以应付。
但,随着近些年 Internet 的高速发展,加入的网络设备越来越多,加之 IPv4 地址不合理的分配方式,可分配 IPv4 地址越来越少。
正是由于上述原因,IETF(Internet Engineering Task Force) 提出了 IPv6 协议。

IPv6 的地址长度为 128 位,由八个被称之为字段的四个十六进制数表示。如,5f05:2000:80ad:5800:0058:0800:2023:1d71

本文主要是对 IPv4 的讲解。

IPv4 的编址方式

IPv4 地址的编址方式共经历了三个历史阶段:

  • 分类寻址IP地址 划分为五类。IP 地址网络号(net-id)主机号(host-id) 组成。路由器仅根据目的主机的网络号来转发分组,从而减小路由表所占用的存储空间以及查找路由表的时间。

A classful network is a network addressing architecture used in the Internet from 1981 until the introduction of Classless Inter-Domain Routing in 1993.

  • 划分子网:这是对原始的 分类寻址 的改进,将原始的分类寻址进一步的划分。将之前的主机号 进一步划分为 子网号(subnet-id)主机号,从而提高 IP地址 的利用率。
    划分子网
  • 无类别域间路由:消除了传统的 A 类, B 类, C类地址以及划分子网的概念,因而更有效地分配 IPv4 的地址。

分类网络(classful network)

传统的 IP 地址被划分为五类:
网络号

  • IP 地址管理机构在分配 IP地址 时,分配网络号,而剩下的主机号由得到该网络号的单位自行分配。从而方便管理。
  • 路由器仅根据目的主机的网络号来转发分组,从而减小路由表所占用的存储空间以及查找路由表的时间。
  • 主机号为全 0 的地址为子网的网络号主机号 为全 1 的地址为子网的广播地址, 都不能被指派。

子网划分(subnetting): 分类网络的改进

可以看出,两级 IP 地址 不够灵活, 对 IP 地址空间的利用率比较低。如, C 类地址的局域网最多分配 254 个主机号, B 类地址的局域网最多分配 65534 个主机号。如果有个单位有 255 台主机,则只能为其分配一个 B 类地址的 网络号。这样就会浪费很多 IP 地址

子网划分 将之前的主机号 进一步划分为 子网号(subnet-id)主机号,从而提高 IP地址 的利用率。
这里写图片描述

RFC950 规定, 对分类的 IPv4 地址进行划分时,子网号 不能为全 0 或全 1;

在子网网络中保留和扩展这些特殊地址的解释(全 0 = this, 全 1 = all), 这就意味着不应该将子网号为全 0 或全一的 IP 地址分配给实际子网。
( It is useful to preserve and extend the interpretation of these special addresses in subnetted networks. This means the values of all zeros and all ones in the subnet field should not be assigned to actual (physical) subnets.)

但随着无类别域间路由的广泛使用,现在全 0 和全 1 的子网号也可以使用。

  • 子网掩码寻址
    子网掩码是一个与 IP 地址相对应的 32 位二进制串。它由一串 0 和跟随的一串 1 组成。其中,1 对应于 IP 地址网络号子网号,而 0 对应于主机号。如 A 类地址用掩码表示为 255.0.0.0B 类 地址用掩码表示为 255.255.0.0C 类地址用掩码表示为 255.255.255.0

路由器将子网掩码和目标地址进行按位与操作,从而得到目标网络的网络号子网号, 进而将数据包发送到相应的网络中去。

子网掩码寻址

上图的例子解释了子网划分后到达 145.13.21.5 的数据包的传输:
(1) 在第一级网络中时。各路由器用 B 类地址的掩码 255.255.0.0145.13.21.5 按位相与得到网络号 145.13.0.0。然后传递过程中遇到的路由器都将该数据包传输给 145.13.0.0 网络。
(2)在数据包到达 145.13.0.0 网络中后。145.13.0.0 网络通过子网掩码 255.255.255.0 将该网络划分为多个子网。145.13.0.0 网络中的路由器用划分子网的掩码 255.255.255.0145.13.21.5 按位相与得到网络号子网号 145.13.21.0。然后 145.13.0.0 网络内的路由器将该数据包传输给 145.13.21.0 子网。
(3) 在数据包到达 145.13.21.0 子网后。145.13.21.0 子网的路由器将数据包传输给目的主机 145.13.21.5

  • 可变长度子网掩码寻址(VLSM, Variable-Length Subnet Masking)
    上一 part 的例子中, 145.13.0.0 网络用子网掩码 255.255.255.0 将该网络分为多个子网,但是,每个子网的最大可用主机号都是固定的(254 个)。而实际工作中,根据需求不同,各个子网的规模也不同,有的子网可能只需要几个主机号,而有的子网则可能需要成千上万个主机号,这就需要更灵活的分配方式来处理。

    可变长度子网掩码 允许将网络划分为不同大小的子网, 每个主机和路由器端口除了分配一个 IP 地址,还需要配置一个子网掩码,以确定其所在子网的规模。

###无类别域间路由 (CIDR, Classless Inter-Domain Routing)

无类别域间路由可变长度子网掩码寻址的基础上,消除了传统的 A、B、C 类网络划分。和其他相关协议一起构成所谓的 超网(Supernetwork)

CIDRIP 地址分为网络前缀(network-prefix)主机号 两部分。使用 CIDR 记法(IP 地址后面加上斜线,然后写上网络前缀所占位数)记录 IP 地址。如:128.14.35.7/20

当一个单位需要 10 个主机号的 IP 地址时, 就只需给他分配一个 /12 (子网掩码为 255.255.255.240)的 CIDR 地址块,如, 128.14.32.0/12128.14.32.15/12 地址块。分配到该地址块的单位根据实际情况的需要,可以继续将这个地址块划分成更小的子网。

私有网络(private network)地址

IP address range number of addresses largest CIDR block (subnet mask)
10.0.0.0 – 10.255.255.255 16777216 10.0.0.0/8 (255.0.0.0)
172.16.0.0 – 172.31.255.255 1048576 172.16.0.0/12 (255.240.0.0)
192.168.0.0 – 192.168.255.255 65536 192.168.0.0/16 (255.255.0.0)

参考文献

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yanglingwell/article/details/81148214

智能推荐

android频繁出入栈导致闪退,安卓概率性闪退 - layabox问答社区-HTML5引擎社区-LayaAir开发者社区...-程序员宅基地

文章浏览阅读831次。概率性闪退附带堆栈#00 pc 00000000005975cc /data/app/com.mylafe.game.handsomecat-1/lib/arm64/liblayaair.so (laya::JCServerFileCache::getFileID(char const*)+32) [arm64-v8a]2#01 pc 00000000005d02cc /data/app/com..._liblayaair.so

mysql无法启动服务的错误日志文件_MYSQL 服务无法启动,错误日志:InnoDB: .\ibdata1 must be writable...-程序员宅基地

文章浏览阅读852次。产生背景:之前在win7系统能正常运行,但今天重装系统,把c盘格式化了,在新系统运行mysql就报如下错误:错误提示;E:\mysql5.7\bin>mysqld --console2018-04-15T14:57:12.199569Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --..._shutting down plugin 'csv

同步捕获matlab,基于多匹配滤波器的跳码直扩同步捕获方法与流程-程序员宅基地

文章浏览阅读702次。本发明涉及扩频通信领域。背景技术:在抗干扰性和保密性要求较高的卫星通信以及军事通信领域,跳码直扩通信系统得到了较广泛的应用,而跳码同步捕获是跳码直扩通信系统中的关键技术。所谓捕获实际上就是在一个周期内通过相关运算进行伪码相位的搜索过程。在扩频接收系统中伪码捕获算法的种类有很多,如发送参考序列、统一定时法,虽然这些方法的设计结构简单易于实现,但是局限性较大,性能较差,捕获时间较长,耗时太大无法完成同..._扩频捕获

php-Arrays 函数-array_pad-用值将数组填补到指定长度_array补充到一定长度-程序员宅基地

文章浏览阅读2.4k次。array_pad() 用值将数组填补到指定长度【功能】 该函数将返回指定数组的一个复制,并用指定的值将其填补到指定的长度。 如果指定长度为正,则数组被填补到右侧,如果为负则从左侧开始填补。 如果指定长度的绝对值小于或等于原数组的长度,则没有任何填补 有可能一次最多填补1048576个数组元_array补充到一定长度

CSS学习笔记 —— 盒模型_盒子模型实际宽度用加margin吗-程序员宅基地

文章浏览阅读162次。本文是作者本人学习过程中的笔记总结,如若文中有不正确,或需要补充的地方,欢迎在评论区中留言。1. width_盒子模型实际宽度用加margin吗

初学者的回归分析 - 第二部分_seaborn r2_score round(2)-程序员宅基地

文章浏览阅读337次。初学者的回归分析 - 第二部分使用基于树的算法(决策树、随机森林、XGboost)建立一个ML回归模型简介第2.1部分 建立机器学习管道∘ 第1步:收集数据∘ 第二步:将数据可视化(问自己这些问题并回答)∘ 第三步:清理数据∘ 第四步:訓練模型∘ 第五步:評估∘ 第六步:使用hyperopt进行超参数调整∘ 第七步:选择最佳模型和预测结果第2.2部分:分析ML算法∘ 什么是决策树?∘ 什么是随机森林?∘ 什么是极限梯度提升法?(XGBoost)∘ 决策树 vs 随机森林 v_seaborn r2_score round(2)

随便推点

清华大学王青计算机系,清华大学王青教授到广西大学指导专业建设-程序员宅基地

文章浏览阅读217次。6月3日,教育部大学物理教学指导委员会主任委员、清华大学教授王青到广西大学,对物理学院专业建设进行指导。上午,物理学院负责人以及专业负责人分别作了关于学院一流专业建设思路、物理电子创陪班教学计划、物理专业培养计划和天文精英班办学特色、电子科学与技术专业培养计划和卓越工程师培养思路的报告,王青教授听取报告后,肯定了物理学院在专业建设方面做出的成绩,并给出有建设性的意见和建议。随后,王青教授作题为“量..._清华大学数字化研究所王青

layui数据表格之运用laypage分页的前端代码_layui-v1.0.9_rls 调用laypage-程序员宅基地

文章浏览阅读290次。<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><!DOCTYPE html&._layui-v1.0.9_rls 调用laypage

图片与图片上下之间有空隙的解决方法_上下图片之间的间距不同-程序员宅基地

文章浏览阅读3k次。首先排除代码之间的换行符<br>,出现这个问题是因为图片为内联元素,有文字特性,默认存在间隙,所以会出现空白部分。可以将图片设置为block元素。img{ display:block;}还有种方法就是给父级设置fontsize:0,logo先不设置block转自:https://www.fengjinwei.com/blog-847722.html..._上下图片之间的间距不同

Kafka 配置信息解读_kafka configuration property queue.buffering.max.k-程序员宅基地

文章浏览阅读257次。1. Broker 配置信息 属性 默认值 描述 broker.id 必填参数,broker的唯一标识 log.dirs /tmp/kafka-logs Kafka数据存放的目录。可以指定多个目录,中间用逗号分隔,..._kafka configuration property queue.buffering.max.kbytes is a producer proper

wangeditor: 上传图片+上传视频+上传附件(自定义)完整使用_wangeditor上传图片-程序员宅基地

文章浏览阅读1.6w次,点赞6次,收藏33次。wangeditor: 上传图片+上传视频+上传附件(自定义)完整使用一:项目需求:①角色为管理员可以新增编辑文章 + ②点击可以看文章详情 +③ 角色为管理员可以修改编辑文章二:效果:①角色为管理员可以新增编辑文章步骤:①下载安装相关依赖 npm i wangeditor --save②引入③初始化创建编辑器代码中的initialEditor函数④自定义上传附件按钮主要思路:在编辑器上增加新的菜单按钮 --》实例化按钮 --》结合an..._wangeditor上传图片

telnet远程登录服务器端口,telnet端口号-TELNET服务的端口号是多少?-程序员宅基地

文章浏览阅读1.3w次。源端口是大于的随即端口,目的端口是23。telnet的默认端口号是多少查看端口在windows/xp/server中要查看端口,可以使用netstat命令:依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。在命令提示符状态下键入“netstat-a-n”,按下回车键后就可以看到以数字形式显示的tcp和udp连接的端口号及状态。小知识:netstat命令用法命令格式:netstat-..._telnet源端口和目的端口

推荐文章

热门文章

相关标签