IP路由

来源:互联网 发布:免费申请域名的网站 编辑:程序博客网 时间:2024/05/02 09:21

IP routing

1)  经过物理层发送的数据报,怎样到达目的主机(网内和网外)?

根据mac地址,这个涉及到数据链路层和物理层;【交换机是在数据链路层进行数据的转发】

2)  知道了mac地址,那又如何传输到目标主机?

数据链路层如何找到主机,使用ARP协议,在ARP缓存中匹配。

3)  不在网内的主机,应用如何知道将数据先转发到router呢?

IP层只知道ip地址,而mac地址是由数据链路层加上的,所以判断是否为本局域网内的主机(ip地址和netmask做运算),而决定数据报是发送到router还是主机的是数据链路层完成的。

4)  IP层如何做路由决定?

Ip层在内存中维护一个路由表,记录了相应的路由信息,若目的地址与主机直接链接(说明在同一局域网内),则发送到ip包到该主机;若在路由表中查找不到相应的ip或者网络,则使用默认路由;

5)  主机和路由器在路由表中都找不到相应的项,处理方式:

主机:IP数据报是主机产生的,那么会返回“host unreachable”或者“network unreachable”给上层应用。

路由器:IP数据报是通过路由器转发的,那么路由器会回复一个“host unread”的ICMP消息给发送数据报给路由器的主机。

6)  如何将一个主机配置为router?


7)  ICMP重定向消息

Host根据路由表中的默认项找到路由器R1,将数据报发送给R1,但是R1发现路由器R2才能最佳发送数据报,于是R1在发送数据报给R2后,向host发送一个ICMP重定向消息,告诉它以后的数据报都发送给R2。

 

route add default gw 192.168.1.2route add default gw 192.168.1.2eth0

可能修改了网卡的配置文件后,新增gw后,查看是否生效,

$ route

上述使用命令修改的在重启主机后很可能会失效

修改静态路由

/etc/sysconfig/static-routes:any net192.168.1.0/24 gw 192.168.1.24any net192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1


这种方式的话,和rc.local比较而言,比较实用,还比如nfs,这个路由的生效时间是在网络服务network启动的时候生效的,而其他的一些网络相关服务都是在网络服务启动成功之后再启动的,所以能够保证网络链路的通畅。

而且,如果我重启了网络服务,这个脚本是在网络服务启动脚本里面调用的,所以也会自动添加上相关的路由设置

 

网关:

A、 进入一个网络的入口

B、 不同协议或编码之间的转换器(翻译器)


路由算法

为目的主机寻找最佳路径,涉及的比较底层的东西,一般做上层应用程序的设计不需要具体操作该部分,各种协议会屏蔽这些操作。

但是,作为IP协议中很重要的部分,对于理解IP协议有很大作用。

如何查看路由器的路由表?

Windows机器的路由表

route PRINT

 

Linux(ubuntu) linux机器的路由表信息

root@ubuntu:/home/huangjun# routeKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.12.0    *               255.255.255.248 U     0     0        0 eth0

netstat –rn也可以查看主机的route路由表

问题:

HOST1:IP:192.168.12.1,netmask:255.255.255.248HOST2:IP:192.168.1.61,netmask:255.255.0.0Gateway:192.168.1.1

此时,HOST2不能访问HOST1

若在HOST2中加入一个IP,IP网段和netmask都与HOST1相同;则可以访问;

若将HOST2中的1.61 IP删除,此时提示是:默认网关不匹配;

原因:HOST1没有连上路由器导致不能被HOST2访问??

HOST和路由器之间的IP地址和netmask有什么要求?一定要相同么?(A:不一定要相等,但是运算得到的net_id要相同,就是在同一个网段内)

 

算法类型:RIP和OSPF

0 0