Ⅰ 网络瘫痪一般都是由于哪些原因造成的
家庭网络故障(network failure)是指由于硬件的问题、软件的漏洞、病毒的侵入等引起网络无法提供正常服务或降低服务质量的状态。硬件一般都是由架构网络的设备,包括网卡、网线、路由、交换机、调制解调器等设备引起的的网络故障 。对于这种故障,我们一般可以通过PING命令,和tracert命令等查看的出来。软件一般TCP/IP协议如果出现故障的话,网络肯定是会出现问题了。还有可能就是对用户管理出现了问题。有时候防火墙的设置也会影响网络。
排除方法:
首先排查物理层故障:检查路由器、猫等网络设备的电源是否正常(看一下电源指示灯);检查网线是否连接正确(按照说明书连接);检查网线是否完好无损并能够正常工作(可以将被测试网线的两端插入路由器的两个LAN口,检查两个LAN口的指示灯是否亮起);检查电脑上无线网卡或者有线网卡是否被禁用(进入控制面板,在地址栏中输入“网络连接”后,查看网卡是否被禁用,如若被禁用则启用即可)。
然后检查TCP/IP协议栈是否工作正常:按住WIN键+R键,弹出运行窗口,并输入“cmd”,然后回车:回车后跳出一个黑框框,这里面输入“ping 127.0.0.1”,然后回车:如果返回的信息是“来自127.0.0.1的回复:字节=XX 时间<XXms TTL=XX”,那说明TCP/IP协议栈运行正常。否则就是TCP/IP协议栈除了问题,需要重新安装TCP/IP协议咯!
最后检查路由器配置是否正确:打开路由器配置界面:打开IE浏览器,在地址栏中输入前面所查询到的“网关地址”:默认的用户名密码都是admin,不同的路由器厂商不同,详见路由器背面或者产品说明书。在DHCP设置中,开启DHCP服务,地址池可以从192.168.X.100开始,结束IP根据你的需求来。一般默认即可:保存完毕以后,点击系统工具-->重启路由器-->重启即可。
Ⅱ UDP怎么会返回Connection refused错误
有时候,写UDP socket程序的
时候,在调用sendto或者recvfrom的时候,会发现有Connection
refused错误返回,错误码是ECONNREFUSED。对于懂得socket接口但是不很很懂网络的人,可能这根本就不是个问题,他会根据错误码知
道远端没有这个服务端口,正如socket api的man手册中描述的那样:
ECONNREFUSED
A remote host refused to allow the network connection (typically because it is not running the requested service).
有
时候无知真的是一种幸福!但是如果你十分精通TCP/IP栈,那么就想不通了,UDP既然无连接,怎么知道远端的情况呢?UDP不正如协议标准描述的那
样,发出去就不管了吗?对于接收,没有数据就一直等,如果设置了NOWAIT,则直接返回EAGAIN,表示稍后再试。不管怎么说,也不会有
ECONNREFUSED这么详细的信息返回才对啊。
既然UDP不会从对端返回任何错误信息,那么一定有别的什么返回了,总不能凭空猜测啊。这就涉及到了网络协议设计中的数据平面和控制平面了,对于控制平面
的消息,可以是带内传输,也可以是带外传输。对于TCP而言,无疑是带内传输的,因为它本身就是有连接的协议,协议本身会处理任何的错误和异常,然而对于
UDP而言,因为其设计目的就是保持简单性,故不再附带有任何带内的控制消息逻辑,互联网上为了弥补这一类协议的控制逻辑的缺失,ICMP协议才显得尤为
重要!实际上,ICMP,根据名称就可以看出它是一种专门的控制协议,控制和指示IP层发生的事件。
ECONNREFUSED正是ICMP返回的!然而并不是所有的UDP
socket都可以享用ICMP带来的错误提示,毕竟带外控制消息和协议本身的关联太松散了。UDP
socket必须显式的connect对端才可以。现在问题又来了,既然UDP根本就是一个无连接的协议,connect的意义何在呢?这其实是
socket接口设计的范畴,和协议本身没有任何关系,当一个UDP
socket去connect一个远端时,并没有发送任何的数据包,其效果仅仅是在本地建立了一个五元组映射,对应到一个对端,该映射的作用正是为了和
UDP带外的ICMP控制通道捆绑在一起,使得UDP socket的接口含义更加丰满。
我们知道,ICMP错误信息返回时,ICMP的包内容就是出错的那个原始数据包,根据这个原始数据包可以找出一个五元组,根据该五元组就可以对应到一个本
地的connect过的UDP
socket,进而把错误消息传输给该socket,应用程序在调用socket接口函数的时候,就可以得到该错误消息。如果一个UDP
socket没有调用过connect,那么即使有ICMP数据包返回,由于socket保持了UDP的完整语义,协议栈也就不保存关于该socket和
对端关联的任何信息,因此也就无法找到一个特定的五元组将错误码传给它。
以下是一个测试程序:
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <unistd.h>
void test( int sd, struct sockaddr *addr, socklen_t len)
{
char buf[4];
connect(sd, (struct sockaddr *)addr, len);
sendto(sd, buf, 4, 0, (struct sockaddr *)addr, len);
perror("write");
sendto(sd, buf, 4, 0, (struct sockaddr *)addr, len);
perror("write");
recvfrom(sd, buf, 4, 0, (struct sockaddr *)addr, len);
perror("read");
}
int main(int argc, char **argv)
{
int sd;
struct sockaddr_in addr;
if(argc != 2) {
exit(1);
}
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
inet_pton(AF_INET, argv[1], &addr.sin_addr);
sd = socket(AF_INET, SOCK_DGRAM, 0);
test(sd, (struct sockaddr *)&addr, sizeof(addr));
return 0;
}
编译为UDPclient,执行./UDPclient 192.168.1.20,注意,这个地址一定要是个IP可达的地址,才好测试。按照上面的理论,结果应该是:第一个sendto成功,然后192.168.1.20返回了:
ICMP 192.168.1.20 udp port 12345 unreachable, length 40
接下来第二个sendto返回:
write: Connection refused
由于第二次没有发送任何数据包到达192.168.1.20,所以也不能企望它返回ICMP错误信息,因此接下来的recvfrom调用会阻塞。
最后的一个问题时,你不能太指望这个Connection refused以及一切带外返回的错误信息,因为你不能保证一定能收到远端发送的ICMP包,如果中间的某个节点或者本机禁掉了ICMP,socket api调用就无法捕获这些错误。
Ⅲ 网络协议错误怎么解决
网络协议错误可以通过修改电脑的网络协议ip地址解决,步骤如下。
1,打开windows7系统,在桌面右下角点击“网络”。
Ⅳ 请教ZigBee协议栈的问题
在ZigBee Pro里,则新增加了一对多路由(Multicast Routing)、多对一路由及源节点路由。一对多路由与一对一路由(Unicast Routing)相同,路由节点会发出路由要求,差别在于当收到封包的节点,会检查群组身分表(Group ID Table, GIDT),GIDT由当地(Local)端设定,如果是属于相同的群组身分(Group ID)的话,就会回路由响应,在回路由响应后,建立的路由表条目(Route Table Entry)就可以使用。因此如果发送一对多的封包(图6),会先检查GIDT,如果不是属于同一个群组,就会检查路由表,把封包往下一个节点(Next Hop)传送,如果检查到是属于自己群组封包时,会将自己的状态改成会员模式(Member Mode),然后再将封包以广播(Broadcast)方式,确保同一个群组的节点都能够接收到这笔数据。当然,为了避免这个广播的封包在网络上一直重复的传送,当节点的状态为会员模式时,会检查广播传送表(Broadcast Transmission Table),以确保不再重复传送同样的封包。
就应用而言,很多情境会把数据集中收集,多数的节点都会把数据往同一个节点送,因此,整个网络拓扑就如树状一样。由于ZigBee Pro放弃树状路由的功能,此时为建立树状的路由路径,如果每个节点都做一对一路由,才能建立往源节点(Originator/Source)的路径,这样会花较多的时间,较没有效率,所以必须提出一个新的路由方式,即所谓的多对一路由(图7)。由源节点发送多对一路由的路由要求,当接收到这个封包的节点,就会直接建立一条往源节点路由的路径,所以所有节点很快就会建好路由条目。
反向基本上还是得透过一对一路由的方式,建立起源节点对于其它节点的路由路径。不过在ZigBee Pro增加源节点路由的方式,就是当路由路径有变化时,节点会先发出一个路由纪录命令(Route Record Command),这个命令中会记录这条路径上经过的节点,因此当源节点接收该命令后,会把这条路径记录在源节点路由表(Source Route Table),只要源节点须把数据传送到其它节点时,会先到源节点路由表找寻路由路径,以加快时间,并且减少建立路由路径或路径修复的次数。
更详细的解释看参考资料里的吧,讲的很清楚
Ⅳ 网络协议栈是什么
协议栈(英语:Protocol stack),又称协议堆叠,是计算机网络协议套件的一个具体的软件实现。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。因为每个协议模块通常都要和其他两个通信,它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。用户应用程序只是处理最上层的协议。
Ⅵ bios中网络协议栈开启会怎么样
Network
stack:网络协议栈。开启/关闭UEFI网络协议栈。开启Network
stack后可以设置下面2个选项。
Ipv4
PXE
Support:开启/关闭Ipv4(互联网协议第4版)
PXE支持。
Ipv6
PXE
Support:开启/关闭Ipv6(互联网协议第6版)
PXE支持。
Ⅶ Qt网络编程 服务器异常断开,不能检查到网络状态变化
自己做心跳保活。因为异常断开不属于qt的处理范围,而tcp协议栈又不存在自动处理异常断线的功能,tcp连接在不正常关闭情况下通常都会被协议栈保持存活一段时间(具体和操作系统协议栈实现和设置有关)。qt无法获得tcp协议栈的状态消息,也就不会做出任何反应。所谓心跳机制请参照以下网址内容:
http://ke..com/view/4372209.htm
Ⅷ 协议栈是什么意思
协议栈(Protocol Stack)是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(HTTP,FTP,TFTP,TELNET,DNS,EMAIL等),运输层(TCP,UDP),网络层(IP),链路层(WI-FI,以太网,令牌环,FDDI,MAC等),物理层。
Ⅸ 手机wifi模块异常是怎么回事
wifi模块出现异常了,一般这种情况可以把手机进行恢复设置看看。
手机的问题,先尝试使用其它wifi软件连网,再不行的就去手机店维修。
Ⅹ 如何测试TCP/IP协议栈来修复网络连接故障
在我们修复Windows网络连接时,要确保本地TCP/IP栈没有问题。本文将一步步地指导您进行本地主机连接DNS服务器和默认网关服务器的能力测试,并介绍如何测试主机名解析。
在“检查IP配置”中,我阐述了如何确定哪个IP地址是我们的系统使用的主地址。接下来,我们会验证IP地址配置是正常工作的,以及本地TCP/IP堆栈没有问题。
首先,我们需要执行的测试是PING本地主机地址。有几种不同的方法可以实现这个步骤。其中一个是输入下面的命令:
PING LOCALHOST
当我们输入这个命令时,Windows将PING地址127.0.0.1。不管我们的机器的地址是什么,Windows总会使用127.0.0.1作为本地主机地址。因此,对于上面所列出来的命令,另外一个替代的命令是:
Ping 127.0.0.1
输入这个命令时,我们应该可以查看到一个成功的PING,如同使用其它的PING命令一样。我们可以看到图A所显示的例子。
PING本地主机地址对诊断远程主机连接问题没有什么作用。然而,它却可以允许我们确认我们的本地TCP/IP
栈运行是否正确。当我们PING本地主机地址时接收到目的主机无法到达的错误信息时,这往往意味着TCP/IP的配置是不正确的,或者本地TCP/IP栈
的某个部分出错了。
依据我的个人经验,我们通常可以通过删除计算机的TCP/IP协议来处理这个问题,然后重新设置。
PING默认网关
在本系列的前面的部分文章中,我提到有几种不同的TCP/IP配置部分需要文档化,它们是故障修复过程所必需的。其中有默认网关的IP地址和主DNS服务器的信息。
假设我们尝试连接的是远程网络或者在企业网络的不同分片上的主机,那么我们下一步需要尝试的是PING默认网关。我们可以简单地通过在PING命令
后添加默认网关的IP地址来完成。比如,如图B,请注意我的TCP/IP配置列出了我的默认网关地址是147.100.100.100。然后,我会直接
PING这个地址。这就验证了本地机器可以连接到默认网关。同时,它也告诉我们本地网络的连接工作正常,至少在IP地址层上是正常的。
PING DNS服务器
目前,我们已经确定在本地计算机和默认网关之间的IP层连接是正常的。然而,这并不保证主机名被解析到正确的IP地址。在这一系列的文章的第一部分
“使用PING命令来修复网络连接故障”中,我已经探讨了如何使用目的主机的正式域名和PING命令来验证DNS服务器是否正常工作。还有几种其它的方法
我们可以用来简单地测试DNS名字解析。
其中一个是,我们可以PING DNS服务器的IP地址,如图C所示。这并不保证名字解析是正确工作的,但是它肯定可以验证本地机器能够连接到DNS服务器上。
另外一个方法是使用Nslookup命令来验证域名解析是正确工作的。我们只需简单地输入Nslookup,后面加上远程主机的正式域名。Nslookup命令就应该能够将域名解析到一个IP地址,如图D所示。
如果我们不经常使用Nslookup,那么一开始上面的图象可能会有点误导我们。首先,这个屏幕似乎在报告一个错误。如果我们更仔细点观察,我们可
以看到返回的信息的第一部分是来自于本地DNS服务器。这是因为所引用的IP地址是与DNS服务器的IP地址相匹配的。然而,返回的信息的后面部分为我们
提供的是我们所要查询的主机的IP地址。只要列出了这个IP地址,那么DNS查询就是成功的。
如果域名解析过程失败了,那么就可以肯定存在一个DNS问题。实际问题可能是许多不同的DNS服务器问题中的其中一个。比如,转发的DNS服务器地
址可能是不正确的,或者DNS服务器可能并不访问因特网,这些都是连接更高级DNS服务器所必须的。类似的,DNS服务器的DNS服务可能已经中断。典型
地,由于许多客户往往都依赖于一个DNS服务器,因此这些类型的问题将会影响到其它客户。
如果DNS域名解析成功了,那么,重要的是我们要验证域名解析过程中返回的IP地址。我们可以通过对比返回的IP地址和远程主机正在使用的实际的IP地址来进行验证。这些IP地址必须是相匹配的,但是,其中可能会有不匹配的情况,它将造成连接失败。
当出现IP地址不匹配时,可能是客户端感染了恶意软件或者是DNS中毒了。DNS中毒指的是DNS缓存中被写入无效的或者不正确的IP地址。
当出现这样一个问题时,我会建议客户端机器的进行恶意软件扫描。同时对间谍软件和病毒进行扫描是很重要的,因为它们都会引起这种问题。一旦清除了恶意软件的问题,那么可以尝试清空DNS缓存。我们可以输入下面的命令来清空DNS缓存:
IPCONFIG /FLUSHDNS
我们可以看看这个例子,如图E所示:
其中需要记住的重要一点是, DNS缓存包含不准确IP地址,并不总是意味着发生了DNS中毒。因为有时主机被指派了新的IP地址后,DNS缓存需要一段时间才会得到修改后的IP地址。
总结
在本文中,我已经阐述了如何验证本地TCP/IP协议栈是否正确工作。接下来,我还继续阐述了如何测试本地主机与DNS服务器和默认网关服务器交互
的能力,以及如何测试主机域名解析。在本系列接下来的内容中,我将探讨可以使用PING命令来检测的几个常见问题,同时我还将开始探讨路由问题。