网络异常那些事

java里经常爆出的网络异常都是啥原因引起来得呢?其实java本身没做什么,只是如实上报了系统反馈的异常。

1.host unreachable,network unreachable 两个异常出现的原因是因为路由设置有问题:

a. 当向某一个目标IP发送数据包时,首先检查一下路由表,看看是否有和目标IP完全匹配的路由记录(网络id和主机id都相同),如果有,则将数据包发送到下一个路由节点或者直接发送到某一个网络接口上。如果没有匹配的则进入下一步。

b. 查看是否有和目标IP中网络ID部分相匹配的路由记录,如果存在,则将数据包发送到下一个路由节点或者直接发送到某一个网络接口上。如果不存在进入下一步。

c. 在路由表中查询默认的路由跳转记录,如果存在,则将数据包发送到默认的路由出口上。

d. 如果以上的操作都失败了,则会抛出以上的异常。


2.Unable to connect to remote host: Connection timed out 异常的出现是因为找不到相应的主机:

第一个的异常是找到目标IP在本地的出口,这个异常将目标IP层转换成具体网络地址时出现的异常(咱们的网卡有一个48的MAC地址,属于第二层的内容)。在将IP包封装成网络包是,首先发ARP广播,类似这样的信息:who-has 192.168.1.2 tell 192.168.1.3,如果本地网络没有节点回应,则会出现这个异常,表明本地网络中没有机器配置了192.168.1.2这个ip。


后面还有很多,慢慢补充.


你可能感兴趣的:(java,常见网络异常,java,网络异常,host,unreachable,network,unreachable,Connection,timed,out)