- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
在之前的章节中,我们已经详细介绍了应用层和传输层的相关概念和原理,了解了进程之间如何进行可靠的数据传输。我们知道,传输层的头部包含了进程所使用的端口信息,这是为了确保数据能够正确地传递到目标进程。今天,我们将进一步探讨网络层的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地址会不断变化.
在 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 地址分为了五种不同的类型,分别是 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地址分类的缺点.
正因为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协议:连接你我,掌握互联网的关键的文章就讲到这里了,如果你想了解更多关于IP协议:连接你我,掌握互联网的关键的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
最近两年,互联网+的概念可谓十分火爆。所谓“互联网+”,其实质就是把互联网大平台和各行各业进行有机结合,建立一个新的商业生态,对于传统企业来说,互联网+的第一步就是有一个企业网站,将自己推广出去
我的大学分两步运行他们的 wifi 身份验证。首先您连接到 wifi 网络,然后当您打开网络浏览器时,您必须输入一些关于您自己的附加信息才能访问互联网。 1)大学系统有一些方法可以检测设备之前是否已经
有没有办法监控每个应用程序使用了多少数据(互联网)? 如果我无法监控应用程序,是否有办法获取所有互联网请求信息?(获取传递的数据、url 等) (我想在为 iPhone 开发的应用程序中使用此信息)
我想从我的 MTI RFID ME Gen2 Internet 中读出一些标签: http://www.mti.com.tw/rfidme/ 这是一个 USB Dongle,现在我想用 c# 在 VS
我正在开发一个应用程序。其中,我想在一段时间内禁止使用互联网,尤其是在他有作业的情况下。如何禁用互联网? 最佳答案 要以编程方式启用/禁用数据连接,请检查此 post 要禁用/启用 wi-fi,请参阅
在我的应用程序中,我只需要知道设备是否连接到 wifi 网络。我认为此功能适用于模拟器但不适用于真实设备。 public static boolean wifiInternet(Context c)
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 12 年前。 Improve th
设想一种情况,我的 PC 有两个网卡,一个连接到互联网,另一个连接到本地网络,我如何用 C# 检测连接到互联网的 IP? 最佳答案 试试这个: static IPAddress getInternet
我的 firebase 应用程序在我的 android 设备上运行完美,无需添加 permission.INTERNET 标志。我直接从 gradle 安装了 Firebase。我知道通过 andro
最近我开始考虑一种解决方案,通过 Internet 向我的订阅客户发布消息。我们的系统是用 C# 开发的。 我们尝试使用 Redis,它在速度和准确性方面非常好,但在安全性方面非常糟糕,每个人都可以订
国内公司普遍不注重基础设施建设,这也是可以理解的。吃饭都吃不饱,就别提什么荤素搭配,两菜一汤了。但也不能全说是这样,还是有很多公司投入大量的人力物力去做好公司的基建,比如很多阿里和美团的小伙伴对公司
我有几个 Azure Functions(高级计划),它们可以执行一些操作并将结果加载到存储 blob。与存储帐户的连接受到 v-net 的限制,因此无法公开访问存储帐户,但是,我检查并发现我的 (H
我正在我的家庭有线网络上解析 ICMPv6 数据报,但在特定的 RFC 中找不到对位排序约定的明确提及。 多字节字段是网络顺序,但是一个字节内的位呢? 机器是字节可寻址的,但网络硬件将位序列化。在图表
我如何在笔记本电脑上配置以太网或 wifi,我遵循了这个 tutorial我的以太网正常启动,但我仍然无法从 ping 8.8.8.8 dns 收到任何数据包,我的笔记本电脑上有以太网和 wifi .
我在 Genymotion 模拟器上运行的应用程序需要互联网。网上好像不能用Genymotion模拟器。我试图通过打开浏览器来确认这一点,这就是我得到的: 我在笔记本电脑上运行 Windows 7 并
我目前正在学习 docker 和 kubernetes。我遇到的问题之一是将我的 nginx pod 暴露在公共(public)互联网上。我想从我的网络浏览器访问我的 serverIP 并查看 ngi
是否可以为 ImageSpan 指定 Internet url 并使用 TextView 显示它?我已经尝试了很多版本 String mockContent = ""; myTextView.setT
例子。 我在 Google 主页上做了一些 CSS 更改。我想保存 CSS(某处)并在每次加载页面时都具有相同的外观。 欢迎使用任何浏览器插件或任何其他方法。 最佳答案 如果使用谷歌浏览器,有一个名为
我正在构建一个旨在加载到 Wii Internet Channel(本质上是 Opera 9.3)的 Web 应用程序。 它支持 SVG,但它们似乎无法缩放。无论宽度和高度设置为多少,图形始终以其“最
我安装了 python 2.7.5,它工作正常。 然后我安装scrapy(我认为,它在内部使用了twisted)。我的爬虫蜘蛛也工作正常。 我安装了扭曲: sudo apt-get install p
我是一名优秀的程序员,十分优秀!