linux内核协议栈 邻居协议概述

1 什么是邻居协议?

NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARPICMP路由器发现ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达检测、重复地址监测、地址自动配置等功能。

这里先以ARP探测来剖析邻居协议。如果一台主机和你的计算机连接在同一个LAN上(也就是说,你和这台主机通过一个共享介质相连或点对点直接相连),那么它就是你的邻居,而且他们有相同的L3网络配置。定义邻居的另一种方式是,一台主机到其邻居必须有且仅有一个L3跳跃点,并且它的L3路由表必须提供可以直接和其邻居通信的一条路劲。不是邻居的主机间通信必须通过网关或路由器。

2 neighbour项是在什么时候创建的呢?

这需要从两个方向来分析,发送与接收:

1、对于发送方向来说,当路由器需要转发或者需要自己发送一个数据包时,会去查找路由表当查找到的路由没有在路由缓存中时,则需要为该路由建立一个路由缓存并加入到路由缓存链表中,同时会调用arp_bind_neighbour实现路由缓存与neighbour的绑定(如果没有相应的neighbour项,则创建neighbour项)。然后再判断neighbour项是否可用,若不可用,则将数据包存入队列中,并发送arp 请求,在接收到请求后,则将neighbour项设置为可用,并将数据从队列中取出并发送出去其邻居项的状态转换为NUD_NONE -> NUD_INCOMPLETE -> NUD_REACHABLE。

 2、对于接收方向来说,当主机接收到arp request报文,则认为主机与发送请求报文之间的链路为通的,则为该发送主机创建一个邻居表项,并将其状态设置为NUD_STATE,其邻居项的状态转换为NUD_NONE -> NUD_STALE -> NUD_DELAY -> NUD_PROBE -> NUD_REACHABLE

3 ARP报文格式

参见《ARP协议报文格式及ARP表简述》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值