两台主机之间单向Ping不通的问题

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px }
span.s1 { font: 12.0px "Helvetica Neue" }

两台主机之间单向Ping不通的问题:

ping工作在应用层,它直接使用网络层的ICMP协议,而没有使用传输层的TCP/UDP协议,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址 “192.168.1.2” 一起交给IP层协议,IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并在一个映射表中查找出IP地址192.168.1.2所对应的物理地址(也叫MAC地址,熟悉网卡配置的朋友不会陌生,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

从Ping的工作过程,我们可以知道,主机A收到了主机B的一个应答包,说明两台主机之间的去、回通路均正常。也就是说,无论从主机A到主机B,还是从主机B到主机A,都是正常的。那么,是什么原因引起只能单方向Ping通的呢?

一、安装了个人防火墙

几乎所有的个人防火墙软件,默认情况下是不允许其他机器Ping本机的。一般的做法是将来自外部的ICMP请求报文滤掉,但它却对本机出去的ICMP请求报文,以及来自外部的ICMP应答报文不加任何限制。这样,从本机Ping其他机器时,如果网络正常,就没有问题。但如果从其他机器Ping这台机器,即使网络一切正常,也会出现“超时无应答”的错误。

二、错误设置IP地址

正常情况下,一台主机应该有一个网卡,一个IP地址,或多个网卡,多个IP地址(这些地址一定要处于不同的IP子网)。

其中一台电脑的“拨号网络适配器”(相当于一块软网卡)的TCP/IP设置中,设置了一个与网卡IP地址处于同一子网的IP地址,这样,在IP层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机Ping其他的机器时,会存在这样的问题:

(1)主机不知道将数据包发到哪个网络接口,因为有两个网络接口都连接在同一网段;

(2)主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去Ping其他机器,IP层协议会无法处理,超时后,Ping 就会给出一个“超时无应答”的错误信息提示。但从其他主机Ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些标志即可,ICMP应答包能顺利发出,其他主机也就能成功Ping通这台机器了

时间: 2024-08-02 02:43:00

两台主机之间单向Ping不通的问题的相关文章

<两台主机之间日志的同步>

首先要知道两台主机之间同步文件udp虽然安全性不高,但是它的同步速率远远高于tcp.这点是不可否认的. 我们以简单的为例: 服务端: 允许别的主机可以把日志同步到自己的主机上来. # vim /etc/rsyslog.conf $ModLoad imudp  //开启udp协议,添加udp模块. $UDPServerRun 514 /etc/init.d/rsyslog restart 重启使配置生效 # tail -f /var/log/messages  //动态监控日志 客户端 把日志往哪

pyton 编写脚本检测两台主机之间的通信状态,异常邮件通知

最近客户有一个需求要检测两台服务器之间的通信状态.要是通信是失败就需要邮件通知相关人.本来想用shell来实现,shell脚本ping 对端服务器很简单,但是shell的邮件发送比较麻烦,于是使用python实现并且用smtplib模块可以快速实现邮件的发送. 功能如下:1秒钟ping一次目标地址.代码中把你的邮箱改为自己的就可以, 代码: #coding:utf-8 import socket import smtplib import email.MIMEText import email.

Linux两台主机之间建立信任

背景: 有时候我们在两个主机之间复制文件的时候,提示输入密码,很不方便,那如何免密码复制呢?,就是使用通过linux公钥和秘钥,建立双机信任关系. 1. 生成秘钥,并添加信任 我的环境中node1的ip是192.168.168.201,node2的ip是192.168.168.202. [[email protected] ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #生成rsa [[email protected] ~]# ssh-copy-id

网络中两台主机的通信过程(TCP)

两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打开主机的这个固定的端口.而客户机自己会打开一个大于1024的随机端口用来跟对方的主机进行通信.用户使用应用程序编辑信息,一个单一的会话,实际上就是一个主机应用层之间的逻辑的软件连接. 主机在传输层的操作: 对数据分段(Segment),添加TCP报头(包含源端口,目的端口,顺序号等) 分段的原因:

两台电脑之间怎么用一根网线传输数据

两台电脑之间怎么用一根网线传输数据 此方法在同一个wifi下也行,同一个局域网用wifi传数据 没有网络,两台电脑之间怎么用一根网线传输数据呢? 建议:设置之前,如果联网的话,将ip地址和dns拍下来,等着传输完毕再输入进去. 前提:将两台电脑用一根普通的网线连接 下面以两台电脑都是windows7为例. 如果不是一个系统,请使用飞鸽传书. 工具/原料 两台电脑 一根普通网线 步骤1:设置两台电脑的局域网ip地址 1 为了区分电脑1和2,电脑桌面中,电脑1是蓝色的,电脑2是动态变化的. 设置电脑

rsync + inotify 实现两台主机间文件的同步备份

前面一篇博文介绍了rsync的主要使用及工作于服务器模式下的安装.配置.inotify是Linux内核中监控文件系统的一种事件机制,它负责监视文件系统的变化.如文件的创建.修改.删除等,并以事件的方式通知给应用程序.inotify-tools是一个基于内核的inotify机制为用户提供实现对文件系统的事件进行监控功能的应用程序组件. inotify实现的对文件系统监视的事件: IN_ACCESS:文件被访问 IN_MODIFY:文件被修改 IN_ATTRIB,文件属性被修改 IN_CLOSE_W

【RS】两台交换机之间的直连问题

[SW1]dis cur#sysname SW1#undo info-center enable //关闭信息中心,即关闭日志同步#vlan batch 10  //把native vlan 设为vlan10# interface Vlanif1#interface Vlanif10 ip address 192.168.1.1 255.255.255.0#interface MEth0/0/1#interface GigabitEthernet0/0/1 port link-type acce

Linux CentOS7 两台机器之间免输入密码相互登录(密钥对认证)

Linux CentOS7 两台机器之间免输入密码相互登录(密钥对认证) 两台机器为: 主机名:fxq-1,IP:192.168.42.181 主机名:fxq-2, IP:192.168.42.182 w命令可以查看当前登录用户的信息 [[email protected] ~]# w  23:59:42 up 12 min,  1 user,  load average: 0.00, 0.07, 0.11USER     TTY      FROM             [email prot

让两台主机通过四个路由器互通

让两台主机通过四个路由器互通 网络拓扑图如下: 环境准备:需要在vmware虚拟机中克隆6台虚拟机,每台系统环境为centos6.9 ,每台分配的最小内存为256M. R1,R2,R3,R4 这四台主机需要开启路由转发功能:vim /etc/sysctl.confnet.ipv4.ip_forward = 1sysctl -piptables -F克隆机需要重新更改网卡的名字.1.cat /etc/udev/rules.d/70-persistent-net.rules 2.将上述文件中的mac