IP 基本认识

在之前的章节中,我们已经详细介绍了应用层和传输层的相关概念和原理,了解了进程之间如何进行可靠的数据传输。我们知道,传输层的头部包含了进程所使用的端口信息,这是为了确保数据能够正确地传递到目标进程。今天,我们将进一步探讨网络层的IP协议,以了解主机之间如何进行通信。

在TCP/IP参考模型中,IP协议位于第三层,即网络层。网络层的主要功能是实现主机与主机之间的通信,也被称为点对点(end to end)通信。网络层通过IP地址来标识不同的主机,它负责将数据包从源主机传输到目标主机。IP协议还具有路由选择的功能,它通过查找路由表来确定最佳路径,确保数据能够正确快速地传输到目标主机。因此,网络层是整个TCP/IP网络体系中至关重要的一层,它为主机之间的通信提供了基础支持。

网络层和数据链路层在通信中扮演着不同的角色,它们之间有着密切的关系。IP协议(网络层)和MAC地址(数据链路层)都是实现数据传输的关键要素。

有些小伙伴可能会对IP(位于网络层)和MAC(位于数据链路层)之间的区别和关系感到困惑。

其实很容易区分,网络层(IP协议)的主要作用是在不同的网络之间进行通信传输。它通过使用IP地址来标识不同的主机和网络,负责将数据包从源主机传输到目标主机。网络层还负责路由选择,即根据路由表选择最佳路径,确保数据能够快速有效地传输到目标主机。

而数据链路层(MAC地址)则是在直接相连的两个设备之间进行通信的关键。它负责将数据包从一个节点传输到另一个节点,通过物理地址(MAC地址)来标识不同的设备。数据链路层确保了在同一个网络中,数据能够正确地从源设备传递到目标设备。

可以用一个旅行行程的例子来形象地解释网络层和数据链路层的关系。假设小雨要去一个很远的地方旅行,他的行程表相当于网络层,它规划了整个旅行的路线和目的地。而飞机票和地铁票则相当于数据链路层,它们只在特定的区间内有效,负责将小林从一个地点传输到下一个地点。在区间内移动就像是数据链路层,在源地址和目标地址之间传输数据。整个行程表相当于网络层,它提供了整个旅行的定位和指导,就像IP地址一样。行程的起点和终点分别对应源IP和目标IP地址。

如果小雨只有行程表而没有车票,他将无法找到适合的交通工具来到达目的地。反之亦然,如果他只有车票而没有行程表,他也很难知道应该搭乘哪种交通工具以及何时换乘。

因此,只有同时具备某个区间的车票和整个旅行的行程表,才能确保成功到达目的地。类似地,在计算机网络中,需要同时存在数据链路层和网络层分层,才能实现与最终目标地址的通信。

另外,旅行途中虽然交通工具可能不断变化,但旅行的起始地址和目的地址始终保持不变。在网络数据包传输中,也是如此,源IP地址和目标IP地址在传输过程中不会改变,只有源MAC地址和目标MAC地址会不断变化。

IP 地址的基础知识

在 TCP/IP 网络通信中,为了确保正常通信,每个设备都需要正确配置 IP 地址。否则,通信将无法实现。IP 地址(IPv4 地址)使用32位正整数表示,并在计算机中以二进制形式处理。为了方便人类记忆,IP 地址采用点分十进制标记方式。即将32位IP地址分为4组,每组8位,用点号分隔,并将每组转换为十进制形式。

那么,IP 地址最大值也就是

当然,最大允许的43亿台计算机连接到网络是基于IP地址的可用范围。实际上,IP地址并不是按照主机台数来配置的,而是按照网卡来配置的。像服务器、路由器等设备通常有2个或更多的网卡,因此它们会有2个或更多的IP地址。

因此,实际上并不可能让43亿台计算机全部连接到网络,更何况IP地址由"网络标识"和"主机标识"两个部分组成,这意味着能够连接到网络的计算机数量更少。

有些人可能会问,现在不仅计算机配备了IP地址,手机、平板等电子设备也都有IP地址,那么连接到网络的设备数量肯定会超过43亿,那么网络是如何支持这么多的IP地址呢?

这是因为使用了一种称为NAT(Network Address Translation,网络地址转换)的技术,通过NAT技术可以实现IP地址的更换。这样就使得可连接的计算机数量超过了43亿台。NAT技术将在后续的讨论中进一步解释和说明。

IP 地址的分类

互联网诞生之初,IP 地址资源相对较为充裕,为了更好地管理和分配这些地址,计算机科学家们设计了基于分类的 IP 地址方案。

根据这个方案,将 IP 地址分为了五种不同的类型,分别是 A 类、B 类、C 类、D 类和 E 类。这些分类根据地址的位数分配方式和网络规模进行了划分。

当我们谈论A、B、C类地址时,主要涉及到网络号和主机号两个部分。这个概念可以通过类比来更好地理解,就像我们住在不同的小区一样。比如,小雨住在A小区8栋101号,而你住在B小区1栋101号。为了更清楚地了解A、B、C类地址的分类和范围,我们可以通过下面这个图片来了解每个分类所对应的地址范围和最大主机个数。

在标记网络IP地址时,最大值为255是因为IP地址中的每个字段是一个8位二进制数,因此范围是从0到255,共256个可能的取值。IP地址的每个字段代表了一个字节,也就是8位二进制数,所以最大值是2的8次方减1,即255。

对于A、B、C类地址,最大主机个数是根据主机号的位数来计算的。以C类地址为例,主机号占据了8位。由于二进制的8位能表示的最大数值是255(0到255共256个数值),因此C类地址的最大主机个数就是254个。

为什么要减 2 呢?

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

主机号全为1时,表示该网络下的所有主机,用于进行广播操作。而主机号全为0时,表示指定某个网络。

除了A、B、C类地址之外,还有D类和E类地址。D类地址常被用于多播操作,用于将数据同时发送给多个主机。而E类地址是预留的地址分类,暂时未被使用。

IP 分类的优点

不论是路由器还是主机,在解析一个IP地址时,我们可以通过判断其首位是否为0来确定其分类。如果首位为0,则为A类地址,这样我们就能快速找到网络地址和主机地址。对于其他分类,我们可以参考如下图所示的判断方式:

因此,这种分类地址的优点在于其简单明了的特点,使得选路(基于网络地址)变得更加简单。通过对IP地址的分类,我们可以更快速地确定网络地址和主机地址,从而更方便地进行网络通信和路由选择。这种简单的分类方式为网络管理和路由器的操作提供了便利和效率。

IP地址分类的缺点之一是缺乏地址层次性。例如,一个公司可能需要根据生产环境、测试环境和开发环境来划分地址层次,但是传统的IP分类方式并没有提供地址层次划分的功能,因此缺少了灵活性。

另一个缺点是A、B、C类地址在现实网络中无法很好地匹配。C类地址能够包含的最大主机数量太少,仅有254个,这对于像网吧这样的场所来说显然不够使用。而B类地址能够包含的最大主机数量又太多,超过6万台机器,一般的企业很难达到这个规模,这样就会导致地址的浪费。

这两个缺点可以通过CIDR(无分类地址)来解决。CIDR使用可变长度子网掩码(VLSM),使得网络划分更加灵活和精确,可以根据实际需要分配合适大小的地址块,避免了传统IP地址分类的缺点。

无分类地址 CIDR

正因为IP地址分类存在许多不足之处,因此提出了无分类地址CIDR的方案。CIDR不再使用分类地址的概念,而是将32位的IP地址划分为网络号和主机号两部分,前面是网络号,后面是主机号。

怎么划分网络号和主机号的呢?

CIDR的表示形式为a.b.c.d/x,其中/x表示前x位属于网络号,x的范围是0~32,这使得IP地址更加灵活。例如,10.100.122.2/24表示CIDR的地址形式,其中/24表示前24位是网络号,剩余的8位是主机号。最后的.2只是一个简单的举例,你也可以将其写成10.100.122.0/24,意思是相同的。

除了CIDR的形式外,还有一种划分网络号和主机号的方式是使用子网掩码。子网掩码的作用是将主机号掩盖掉,只留下网络号。

使用子网掩码时,可以将子网掩码和IP地址按位计算与操作,从而得到网络号。计算结果即为网络号的值。子网掩码中的1表示对应位是网络号,0表示对应位是主机号。

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

分离网络号和主机号的目的是为了在计算机通讯时能够判断是否处于同一个广播域内,也就是判断网络地址是否相同。这样可以更有效地进行数据包的传输和路由选择。当两台计算机要进行通讯时,首先需要根据网络地址来判断它们是否处于同一个广播域内。如果两台计算机的网络地址相同,即网络号相同,那么它们就处于同一个网络中。在这种情况下,数据包可以直接发送到目标主机,而不需要经过路由器的转发。

总结

在本文中,我们深入了解了IP协议和IP地址的基本知识。

首先,我们了解了IP协议在TCP/IP参考模型中的位置和作用。IP协议位于网络层,负责实现主机之间的通信。它通过IP地址来标识不同的主机,同时具有路由选择的功能,确保数据能够正确快速地传输到目标主机。

然后,我们学习了IP地址的基础知识。IP地址是使用32位二进制数表示的,为了方便记忆,采用点分十进制标记方式。IP地址分为A、B、C、D、E五类,其中A、B、C类地址用于主机与主机之间的通信,D类地址用于多播操作,E类地址是预留的。

此外,我们还了解到IP地址的分类存在一些缺点,比如缺乏地址层次性和地址浪费。为了解决这些问题,引入了无分类地址CIDR的概念,它使用可变长度子网掩码,使得网络划分更加灵活和精确。

总的来说,IP协议和IP地址是计算机网络通信中非常重要的概念,了解它们的基本知识对于理解网络通信原理和进行网络配置非常有帮助。

IP协议:连接你我,掌握互联网的关键的更多相关文章

  1. OSI模型和TCP/IP协议族(三)

    TCP/IP协议族 TCP/IP协议族的开发要比OSI模型更早,因此TCP/IP协议族的分层结构无法准确地与OSI模型一一对应.原始的TCP/IP协议族定义为建立再硬件基础上的四个软件层,不通过目前T ...

  2. TCP/IP协议(5):传输层之TCP

    一.TCP报文 上图为TCP报文的格式,可以看到TCP头部占20个字节,其中红色圆圈中每一项占一位,表示TCP报文的类型,置1表示该项有效. SYN表示建立连接.    FIN表示关闭连接.    A ...

  3. TCP/IP协议(4):网络层

    网络层上有IP.ICMP.IGMP等协议. 1.IP地址 在OSI模型中,三层网络层负责IP地址,IP数据报帧头中的源地址和目的地址就是指IP地址.IPV4类型IP地址为32位4个字节,IPV6类型I ...

  4. TCP/IP协议 socket

    TCP/IP四层协议 TCP/IP概念 tcp/ip协议是主机接入互联网以及接入互联网的两台主机通信的标准. 数据帧概念 数据帧 |-- 包头 | |--源地址 | |--目标地址 | |--数据类型 ...

  5. MQTT是IBM开发的一个即时通讯协议,构建于TCP/IP协议上,是物联网IoT的订阅协议,借助消息推送功能,可以更好地实现远程控制

    最近一直做物联网方面的开发,以下内容关于使用MQTT过程中遇到问题的记录以及需要掌握的机制原理,主要讲解理论. 背景 MQTT是IBM开发的一个即时通讯协议.MQTT构建于TCP/IP协议上,面向M2 ...

  6. 网络基础之TCP/IP协议族

    一.TCP/IP协议族 1.什么是协议? 计算机与网络设备相互通信依赖于相同的方法,比如,双方通信基于何种语言等.而把通信所依赖的这一切方法统称为规则,而我们就把这种规则称为协议. 协议中存在各种各样 ...

  7. 漫谈计算机网络:网络层 ------ 重点:IP协议与互联网路由选择协议

    面试答不上?计网很枯燥? 听说你学习 计网 每次记了都会忘? 不妨抽时间和我一起多学学它 深入浅出,用你的空闲时间来探索计算机网络的硬核知识! 博主的上篇连载文章<初识图像处理技术> 图像 ...

  8. 一文让你秒懂互联网TCP/IP协议的深层含义

    什么是 TCP/IP 协议 首先,协议,可以理解为是一套统一的规则,就像行业标准.由于互联网主要的功能是传输信息,所以其协议一般是管理系统之间如何相互通信的规则. 用邮政和物流等线下的“运输协议”来理 ...

  9. TCP/IP协议(5): IP(Internet Protocol) 协议 —— 连接各个网络的协议

    TCP/IP协议(5): IP(Internet Protocol) 协议 -- 连接各个网络的协议 关于 IP(Internet Protocol) 协议 IP(Internet Protocol) ...

  10. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

随机推荐

  1. 【Azure K8S】AKS升级 Kubernetes version 失败问题的分析与解决

    问题描述 创建Azure Kubernetes Service服务后,需要升级AKS集群的 kubernetes version.在AKS页面的 Cluster configuration 页面中,选 ...

  2. 一分钟学一个 Linux 命令 - tar

    前言 大家好,我是 god23bin.今天给大家带来的是 Linux 命令系列,每天只需一分钟,记住一个 Linux 命令不成问题.今天,我们要介绍的是一个常用且强大的命令:tar. 什么是 tar ...

  3. Spring事件监听机制使用和原理解析

    你好,我是刘牌! 前言 好久没有更新Spring了,今天来分享一下Spring的事件监听机制,之前分享过一篇Spring监听机制的使用,今天从原理上进行解析,Spring的监听机制基于观察者模式,就是 ...

  4. 第一章 Rust基本知识 -- tour of rust

    第一章 基础知识 将探讨函数.变量和最基本的类型等基本知识. 变量 变量使用let关键字来声明. 在赋值时,Rust能够在99%的情况下推断变量类型.如果不能,也可以将类型添加到变量声明中. 注意 如 ...

  5. Kubernetes(k8s)包管理工具Helm:Helm包管理

    目录 一.系统环境 二.前言 三.包管理工具Helm简介 四.安装部署helm 五.配置helm以及helm常用命令 六.使用helm安装应用 七.搭建helm私有仓库 八.总结 一.系统环境 本文主 ...

  6. go语言编写算法

    1.冒泡排序 // 冒泡排序 a := []uint8{9, 20, 10, 23, 7, 22, 88, 102} for i := 0; i < len(a); i++ { for k := ...

  7. PySide6(Qt for Python) QTableWidget表头边框线问题

    这个问题是在Windows10平台下特有问题. 网络上有很多Qt C++的解决方案.但是没有特定的PySide6的解决方案(以下是Qt C++的解决方案). https://blog.csdn.net ...

  8. Blazor前后端框架Known功能介绍:系统安装激活及自定义

    本章介绍系统安装与激活及其自定义功能. 概述 框架内置简单的系统安装功能. 录入企业编码.名称.系统名称.产品密钥.管理员密码信息完成安装. 可自定义高级安装功能,如安装数据库等您产品所需的安装信息. ...

  9. SSE图像算法优化系列三十一:RGB2HSL/RGB2HSV及HSL2RGB/HSV2RGB的指令集优化-上。

    RGB和HSL/HSV颜色空间的相互转换在我们的图像处理中是有着非常广泛的应用的,无论是是图像调节,还是做一些肤色算法,HSL/HSV颜色空间都非常有用,他提供了RGB颜色空间不具有的一些独特的特性, ...

  10. 推荐一款.NET开源的轻量级分布式服务框架

    前言 今天要给大家推荐一款由新生命开发团队开源的.NET轻量级分布式服务框架:星尘分布式平台(NewLife.Stardust). 项目介绍 星尘是一个轻量级分布式服务框架.它的功能包含配置中心.集群 ...