• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > tingkman-tcp-ip协议分析和实现5-路由的添加、查找、选择

tingkman-tcp-ip协议分析和实现5-路由的添加、查找、选择

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了aodv路由协议实现,spin路由协议怎样实现,ospf路由协议的实现,路由协议,动态路由协议等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

tingkman-tcp-ip协议分析和实现5-路由的添加、查找、选择


本文的部分内容可能来源于网络,该内容归原作者所有,如果侵犯到您的权益,请及时通知我,我将立即删除,原创内容copyleft归tingkman@163.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。欢迎加入嵌入式交流群:3462094最新动态请关注新浪微博tingkman



在tcp ip协议分析和实现4-arp缓存表的实现一节,我们介绍了arp缓存表作用流程,在这一节里我们提到了arp缓存表的添加,与此相对应的还有路由的东西,同时,还有个路由表的添加。前面打过比方,路由表决定报文从那个网卡出去简单网络协议栈一般实现3种路由表就可以了,一个是主机地址,一个是子网地址,一个是默认路由查询路由表一般按照这个顺序查找就可以了,先在主机地址路由表里查,没有的话在子网地址里查,子网地址里面在没有,就查找默认路由,如果在执行完所有的表查询后,还没有找到匹配的条目,则丢弃packet,并回送一个(DestinnationUnreachable)ICMP不可达的报文给发送方

有些协议栈可能实现更为简单些,直接查找所有网络设备比方说eth0,eth1,eth2,eth3,直接不做路由表了将报文的目的地址和网络设备的ip地址和子网掩码进行比较,决定走那个网络设备出去,下面我们看个网络协议的代码fnet_netif_t*fnet_ip_route(fnet_ip4_addr_tdest_ip){fnet_netif_t*netif;fnet_netif_t*res_netif=fnet_netif_get_default();//先确认一个默认的网络设备比方eth1
for(netif=fnet_netif_list;netif!=0;netif=netif->next){if((dest_ip&netif->ip4_addr.subnetmask)==(netif->ip4_addr.address&netif->ip4_addr.subnetmask)){res_netif=netif;break;}}
#ifFNET_CFG_LOOPBACK/*Anythingsenttooneofthehost'sownIPaddressissenttotheloopbackinterface.*/if(dest_ip==res_netif->ip4_addr.address) //如果是发给自己的报文,直接指向环回网络设备{res_netif=FNET_LOOP_IF;}#endif/*FNET_CFG_LOOPBACK*/returnres_netif;}这里打个比方eth0、1、2、3的ip和子网掩码如下:netif ip4_addr subnetmasketh0: 192.168.0.21 255.255.255.0eth1: 192.168.1.21 255.255.255.0eth2: 192.168.2.21 255.255.255.0
eth3: 192.168.3.21 255.255.255.0
1,假如你的报文目的地址(dest_ip)是192.168.1.90 ,如果if((dest_ip&netif->ip4_addr.subnetmask)==(netif->ip4_addr.address&netif->ip4_addr.subnetmask))这个条件成立,那么报文就通过这个网络设备发出去,通过计算应该就是eth2,,2假如你的报文目的地址(dest_ip)是192.168.0.21 也即是目的是自己,那么通过2,假如你的报文目的地址(dest_ip)是192.168.0.21,通过if((dest_ip&netif->ip4_addr.subnetmask)==(netif->ip4_addr.address&netif->ip4_addr.subnetmask))这个计算
会发现先找到eth0这个设备,这里还做了个判断,如果定义了回环设备,就是一个虚拟的网络设备,就是自己#ifFNET_CFG_LOOPBACK/*Anythingsenttooneofthehost'sownIPaddressissenttotheloopbackinterface.*/if(dest_ip==res_netif->ip4_addr.address) //如果是发给自己的报文,直接指向环回网络设备{res_netif=FNET_LOOP_IF;}#endif/*FNET_CFG_LOOPBACK*/它这个网络设备就指向自己了res_netif=FNET_LOOP_IF;,3、还有一种情况假如你的报文目的地址(dest_ip)是10.10.2.90,通过程序可以看出确定的网络设备就是默认的网络设备,也即是默认网关res_netif=fnet_netif_get_default();也即是eth1我们上网都知道,我们访问网站目的ip都是千奇百怪,所以这些都发给默认的网络设备了,也即是我们电脑的网络接口假如一个电脑有n个网络接口,也只能发给你默认的那个

本章标题写成路由的添加、查找、选择,其实内容主要介绍路由的选择,核心就是选择,方法就是ip地址、子网掩码和目的地址进行比较获得。当然这相对来说比较简单,实际上复杂的网络协议还包括动态路由,我们今天讲的都是静态的,原理大概就是这样,具体实现,这里就不详细讲了。








分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • tingkman-tcp-ip协议分析和实现5-路由的添加、查找、选择

相关文章

  • 2017-05-222.5.7 Toast(吐司)的基本使用
  • 2017-05-26关于Genymotion下载比较慢的解决办法,genymotion解决办法
  • 2017-05-224.5.1 Intent的基本使用
  • 2017-05-26android中实现在矩形框中输入文字,可以显示剩余字数的功能,android字数
  • 2017-05-26Android_事件纷发
  • 2017-05-26Android屏幕适配方案
  • 2017-05-26Android解析编译之后的所有文件(so,dex,xml,arsc)格式
  • 2017-05-26计算器Pro应用项目源码,计算器pro源码
  • 2017-05-26Android的开机流程及对应源码位置分析,android源码
  • 2018-01-28Android广播机制

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 硅谷社交10--会话详情页面,硅谷社交10--会话
    • retrofit2中ssl的Trust anchor for certification path not found问题,retrofit2anchor
    • Android--使用XMLPull解析xml
    • 对Android的恶意吐槽(勿看,有毒)
    • ActiveRecord模式整理,activerecord模式
    • 微信支付,信支付
    • Android 的系统架构,Android系统架构
    • 安卓的主要几大布局,安卓布局
    • Android XML中引用自定义内部类view的四个why,androidxml
    • Android安卓破解之逆向分析SO常用的IDA分析技巧

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有