错误设置子网掩码的结果

今天上午系统联调时,本地运行Server,Client运行于其它电脑,打开Server后Client总是连接失败。netstat -ano | findstr 4444发现没问题,Server正在4444端口处于Listen状态。

反过来,本地运行Client,Server运行于其它电脑,Client连接Server仍旧失败。

打开网络设置,发现本地IP为172.16.29.114,子网掩码为255.255.255.0;对端IP为172.16.32.254,子网掩码为255.255.0.0。难道问题出在这里?抱着试试看的想法将本地子网掩码改为255.255.0.0,再连,果然成功。

图一

图一中网络设置一直都会,但各项参数具体意义是什么不甚了解。

问题总结如下:

  1.子网掩码设置错误产生的影响

  2.网络设置中各项参数在数据传输中扮演的角色

经人点拨加WireShark抓包,得出如下结论:

本地主机IP172.16.29.114,子网掩码255.255.255.0,此刻要向主机172.16.32.254发送数据。本地主机会将DstIP(目标IP)与local subnet mask(本地子网掩码)作与操作,得到network number(网络号)+subnet number(子网号),然后主机将local IP与local subnet mask做与操作获取本地主机所处的network number+subnet number,两相比较:

  如果相同则本地主机认为自己与目标主机处于同一子网, 此时本地主机将含有local IP+local Mac+DstIP的ARP数据报在当前子网进行广播,子网中的所有主机均会收到此ARP数据报并查看DSTIP是否就是自己,若否则丢弃,若是则将src IP+src Mac存入ARP缓存表然后将local Mac发送给源主机。

图二

源主机获取到Dst Mac后进行数据传输。

  如果不同则本地主机认为自己与目标主机处于不同子网,此时本地主机将数据直接发向图一中网关指定的地址(可能是路由器),由网关进行分组转发。

现在回到原来的问题

1. IP172.16.29.114、子网掩码255.255.255.0,连接IP172.16.32.254、子网掩码255.255.0.0,本地主机将172.16.29.114和255.255.255.0相与得自身network number + subnet number = 172.16.29,再172.16.32.254与255.255.255.0相与得对方network number + subnet number = 172.16.32,不相等,自此本地主机获知对方处于非本地子网中,故将连接请求包发往网关172.16.29.1。网关做如下操作:

<1>. 从收到的数据报的首部提取目的IP地址 D 。

<2>. 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和 D逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还要把 D 转换成物理地址,把数据报封装成帧再发送出去),转发任务结束。否则就是间接交付,执行<3>。

<3>. 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行<4>。

<4>. 对路由表中的每一行(目的网络地址、子网掩码、下一跳地址),用其中的子网掩码和 D 逐位相“与”(AND操作),其结果为 N 。若 N 与该行的目的网络地址匹配,则数据报传送给指明的下一跳路由器;否则,执行<5>。

<5>. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行<6>。

<6>. 报告转发分组出错。

连接请求包成功到达172.16.32.254,一番处理后172.16.32.254给予接收连接应答包,过程同上,将172.16.32.254与255.255.0.0相与得自身network number + subnet number = 172.16,再172.16.29.114与255.255.0.0相与得对方network number + subnet number = 172.16,相等,主机172.16.32.254误认为对方与自己处于同一子网,故广发ARP请求包获取对方Mac。172.16.32子网中所有的机器都会收到该请求包,发现请求IP非自身IP时都会将其丢弃,最终254的ARP请求收不到任何应答,254无法获取对方Mac地址,过程在此中断。172.16.29.114长时间得不到应答,连接失败。

用Ping代替连接请求包,结果如下

主机172.16.32.254

图三

主机172.16.32.254

图四

2. IP172.16.29.114、子网掩码255.255.0.0,连接IP172.16.32.254、子网掩码255.255.255.0,本地主机将172.16.29.114和255.255.0.0相与得自身network number + subnet number = 172.16,再172.16.32.254与255.255.0.0相与得对方network number + subnet number = 172.16,想的,本地主机误认为对方与自己处于同一子网,故广发ARP请求包获取对方Mac。172.16.29子网中所有的机器都会收到该请求包,发现请求IP非自身IP时都会将其丢弃,最终本地主机的ARP请求收不到任何应答,因而无法获取对方Mac地址,过程在此中断。而对方自始至终未收到本地主机发送的任何连接请求包。

用Ping代替连接请求包,结果如下

图五

主机172.16.29.114

时间: 2024-08-01 16:01:01

错误设置子网掩码的结果的相关文章

asp.net项目发布网上-当前自定义错误设置禁止远程查看应用程序

早上服务器的系统突然出错了,悲剧~ ==============异常信息:============================== 服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止远程查看应用程序 说明: 服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止查看应用程序错误的详细信息. 详细信息: 若要使他人能够从本地服务器计算机上查看此特定错误信息的详细信息,请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors>

服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止

原文:服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止 误设置禁止远程查看应用程序错误的详细信息(出于安全原因). 之前自己也碰到過這種情況.特此整理,希望能夠幫助有困惑的挨踢人士~ 说明: 服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止查看应用程序错误的详细信息. 详细信息: 若要使他人能够从本地服务器计算机上查看此特定错误信息的详细信息,请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记.然后应将

centos 7.3 错误设置selinux 导致不能启动 Failed to load SELinux policy. Freezing

错误原因 配置关闭SELinux,结果误操作 应修改配置文件/etc/selinux/config中的"SELINUX"参数的值,# SELINUX=enforcing  原始配置SELINUX=disabled     正确 但是误将"SELINUXTYPE"看成"SELINUX",设置了SELINUXTYPE参数:#SELINUXTYPE=targeted   原始配置 这个不必修改.SELINUXTYPE=disabled   错误 错误结

IIS7.5下404错误设置失效的问题

一般404设置用厦门的设置即可生效: <customErrors mode="On" defaultRedirect="/notfound.aspx"> <error statusCode="404" redirect="/notfound.aspx" /> </customErrors> 我的情况是在VS内置IIS里可以运行生效,但部署到服务器用IIS7.5的时候,或许是由于用集成模式导致

[Windows Server 2008] 404错误设置方法

★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:如何设置404错误页面 HTTP 404 错误意味着链接指向的网页不存在,即原始网页的URL失效,这种情况经常会发生. 设置404错误页面优化网站,是站长必备技能,以下流程设置一个返回状态码为404的跳转页面. 1.设置服务器遇到错误时,返回“自定义错误页” 1)打开 [IIS管理器 ],[网站] ,点击 需

Intellij IDEA设置忽略部分类编译错误

有些时候我们的项目中有些错误,但这些错误并不影响项目的整体运行(或许是没有使用到),默认情况下idea是无法通过编译的,因此也就无法部署运行,要达到正确运行项目的目的需要作一些设置才行. 设置Intellij IDEA忽略部分类编译错误 设置很简单,只需要两步即可. 1.设置Java编译器 如上图所示,Ctrl+Alt+S快捷键打开"Settings"对话框,找到设置中的"Java Compiler"设置,将"User compiler"设置由&

Centos 6.8 DHCP设置

1.  yum install dhcp 2.网络接口的配置 vi /etc/sysconfig/dhcpd #指定网络接口名称,在eth0 网络接口上启用dhcp 服务. DHCPDARGS=eth0 3.创建DHCP服务器租约文件 # touch /var/db/dhcpd.leases 注意:如果没有创建此文件,启动服务时候会提示以下错误信息: WARNING: host declarations are global. They are not limited to the scope

戴尔iDRAC服务器远程控制设置

对于远程的服务器,我们不能经常性的去机房维护,所以远程控制对于服务器来说就显得至关重要.那么你是用什么方式对服务器进行远程控制呢?远程桌面?还是KVM切换器?NO,你OUT了!如果你用的是戴尔的服务器,那么iDRAC功能不使用的话就是个极大的浪费哦. 那么什么是iDRAC呢?iDRAC又称为IntegratedDell Remote Access Controller,也就是集成戴尔远程控制卡,这是戴尔服务器的独有功能,iDRAC卡相当于是附加在服务器上的一计算机,可以实现一对一的服务器远程管理

浪潮各机型管理芯片BMC IP设置

NF5240m3/NF5140m3/NF5280m3/SA5212H2/NP5540M3NF5270M3/NF5170M3/NF8420m3 IPMI主板集成管理芯片BMC IP 设置开机按DEL键进入BIOS设置选择"Server Mgmt"---"BMC Network Configuration"---"lan channel 1/2"---"static ip address"lan channel 1:指的是复用管理