IP层在内存中有一个路由表,当有数据要发送时。它要对该表进行一次搜索以确认转发地址。收到的数据到达IP层时,IP层会检查数据报的目的地址是否为本机IP或广播IP:
  • 假设是。就依据IP首部协议字段的协议分发到对应的模块进行处理。
  • 假设不是。那么:
    • IP层被设为路由器功能。则对此数据报进行转发。

    • 否则,丢弃该数据被报。

路由表内容例如以下所看到的:
字段 说明
目的IP地址 能够是网络地址。也能够是主机地址,由以下的标志字段区分
下一跳路由器IP地址 与当前网络接口直接相连的路由器或主机网络接口的IP地址,详细是哪一个由以下的标志字段区分
标志 一个标志区分目的IP是网络地址还是主机地址,还有一个标志区分下一跳路由器是真的路由器还是网络接口
网络接口 指明相应的数据报应该从哪个网络接口发出去

IP路由选择的大致步骤例如以下:

  • 搜索路由表,寻找能与目的IP地址全然匹配的表目。假设找到,则发送。否则,运行下一步。

  • 搜索路由表,寻找能与目的网络号相匹配的表目。

    假设找到。则发送。

    否则。运行下一步。

  • 搜索路由表,寻找标为“默认”的表目。假设找到,则发送。否则。运行下一步。
  • 发送失败。该数据不能被传送。
为一个网络指定一个路由器,也就是路由表的标志字段指明目的IP地址是一个网络地址,这使得路由表的规模不会太大。


例1:
源主机和目的主机处在同一个以太网上。源主机的IP层依据目的主机IP地址搜索路由表,找到了一个网络号匹配的表项,然后将数据发送出去。例如以下图所看到的:

以太网帧首部的目的地址是主机sun的以太网接口地址;IP数据报首部的目的地址是主机sun的IP地址。

例2:
源主机和目的主机处在不同网络中。

例如以下图所看到的:



主机bsdi要发送数据到外网的server192.4

posted on 2017-04-29 20:39 cynchanpin 阅读(...) 评论(...) 编辑 收藏

var allowComments=true,cb_blogId=347763,cb_entryId=6786213,cb_blogApp=currentBlogApp,cb_blogUserGuid='43c87c18-831e-e711-9fc1-ac853d9f53cc',cb_entryCreatedDate='2017/4/29 20:39:00';loadViewCount(cb_entryId);var cb_postType=1;var isMarkdown=false;

最新文章

  1. 提高PHP开发质量的36个方法(精品)
  2. JSON基本操作
  3. JAVA Metrics度量工具 - Metrics Core 翻译
  4. 四、C#方法和参数
  5. lightoj 1297(三分)
  6. Java笔记:内部类
  7. MVC修改文件上传大小问题
  8. bootstrap快速入门笔记(五)-文本元素类,各种标签,排版
  9. [LeetCode] Number Of Corner Rectangles 边角矩形的数量
  10. .NET Core WebApi中实现多态数据绑定
  11. EF ORM
  12. Serialize a Long as a String
  13. <<梦断代码>>阅读笔记三
  14. Mysql跨表更新
  15. OVS 内核KEY值提取及匹配流表代码分析
  16. Shell或notepad连接虚拟机操作
  17. Lucio: We avoided Mourinho after every loss
  18. 使用http维持socket长连接
  19. 剑指 offer set 17 判断一棵树是否是平衡树
  20. linux下字典生成工具-crunch与rtgen

热门文章

  1. RabbitMQ高可用镜像队列
  2. 测试计划驱动开发模式 TPDD:一种比 TDD 更友好的开发模式
  3. NOIP2017赛前模拟11月2日总结
  4. [LeetCode169]Majority Element
  5. P2659 美丽的序列 (单调栈)
  6. java算法(一) 直接选择排序
  7. display 垂直居中
  8. 解决PKIX path building failed
  9. mysql 连接失败问题汇集
  10. centos 资源链接