子网掩码的作用解释一例
xsobi 2024-11-24 00:28 1 浏览
在计算机网络基础知识的学习过程中,通过Packet Tracer模拟器可以很直观的将现实中“看不见”的网络传输过程给显示出来,方便大家学习研究。比方说,我们的局域网中有两台电脑,分别命名为电脑A和电脑B,电脑A的配置为:
电脑B的配置为:
从配置上来看,这两台电脑不在同一个网络下(子网掩码不同,一个是255.255.255.0,一个是255.255.248.0),因此,它们之间不可能直接通信。
下面通过实验测试一下:
如下图,设置好电脑A、B各自的IP地址后,进行Ping测试,结果数据包并未发出,而是被丢弃了。什么原因呢?
我们通过查看数据包信息找到了原因:
1. The Ping process starts the next ping request.
Ping进程启动下一个Ping请求。
2. The Ping process creates an ICMP Echo Request message and sends it to the lower process.
Ping进程创建ICMP回显请求消息并将其发送到较低的进程。
3. The source IP address is not specified. The device sets it to the port's IP address.
未指定源IP地址。设备将其设置为端口的IP地址。
4. The device sets TTL in the packet header.
设备在数据包报头中设置TTL。
5. The destination IP address 192.168.15.1 is not in the same subnet and is not the broadcast address.
目的IP地址192.168.15.1不在同一个子网中,不是广播地址。
6. The default gateway is not set. The device drops the packet.
未设置默认网关。设备丢弃数据包。
总结起来说就是:在数据包发送前,系统会把目的IP地址与自身电脑设定的子网掩码(255.255.255.0)进行相与运算,从而得到目的IP(192.168.15.1)所在的网络地址(192.168.15.0),而其本身的IP与子网掩码相与运算后也有会得到一个网络地址(192.168.8.0),这两个地址的网络号一个是192.168.15,另一个是192.168.8,它们是不相同的,系统判定为目的IP地址和本机不在同一个子网内。如下图所示的运算:
不在同一个子网内,这就需要用到网关了,数据包准备发往网关,但是由于没有设定网关,无法将数据包发出,最后只好丢弃该包了。
简言之:数据包发送前先判断是否为同一子网(由子网掩码来判定),同一子网是不需要经过网关的,子网内部送达即可,非同一子网,则需要网关转达。
相关推荐
- 好用的云函数!后端低代码接口开发,零基础编写API接口
-
前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...
- 快速上手:Windows 平台上 cURL 命令的使用方法
-
在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...
- 使用 Golang net/http 包:基础入门与实战
-
简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
-
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...
- window使用curl命令的注意事项 curl命令用法
-
cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...
- Linux 系统curl命令使用详解 linuxctrl
-
curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...
- Tornado 入门:初学者指南 tornados
-
Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...
- PHP Curl的简单使用 php curl formdata
-
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
-
本章涵盖使用Actix提供静态网页...
- 我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些
-
这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...
- linux文件下载、服务器交互(curl)
-
基础环境curl命令描述...
- curl简单使用 curl sh
-
1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...
- 常用linux命令:curl 常用linux命令大全
-
//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...
- 三十七,Web渗透提高班之hack the box在线靶场注册及入门知识
-
一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)