IP层在内存中有一个路由表,当有数据要发送时,它要对该表进行一次搜索以确认转发地址。收到的数据到达IP层时。IP层会检查数据报的目的地址是否为本机IP或广播IP:
  • 假设是,就依据IP首部协议字段的协议分发到对应的模块进行处理。
  • 假设不是,那么:
    • IP层被设为路由器功能,则对此数据报进行转发。
    • 否则,丢弃该数据被报。
路由表内容例如以下所看到的:
字段 说明
目的IP地址 能够是网络地址。也能够是主机地址。由以下的标志字段区分
下一跳路由器IP地址 与当前网络接口直接相连的路由器或主机网络接口的IP地址。详细是哪一个由以下的标志字段区分
标志 一个标志区分目的IP是网络地址还是主机地址。还有一个标志区分下一跳路由器是真的路由器还是网络接口
网络接口 指明相应的数据报应该从哪个网络接口发出去
IP路由选择的大致步骤例如以下:

  • 搜索路由表,寻找能与目的IP地址全然匹配的表目。

    假设找到,则发送。

    否则,运行下一步。

  • 搜索路由表,寻找能与目的网络号相匹配的表目。假设找到,则发送。

    否则,运行下一步。

  • 搜索路由表,寻找标为“默认”的表目。

    假设找到。则发送。

    否则。运行下一步。

  • 发送失败,该数据不能被传送。
为一个网络指定一个路由器,也就是路由表的标志字段指明目的IP地址是一个网络地址。这使得路由表的规模不会太大。
例1:
源主机和目的主机处在同一个以太网上。源主机的IP层依据目的主机IP地址搜索路由表,找到了一个网络号匹配的表项。然后将数据发送出去。

例如以下图所看到的:

以太网帧首部的目的地址是主机sun的以太网接口地址;IP数据报首部的目的地址是主机sun的IP地址。
例2:
源主机和目的主机处在不同网络中。

例如以下图所看到的:

主机bsdi要发送数据到外网的server192.48.96.9。首先主机搜索路由表,选择默认表目发送到主机sun。

由于bsdi和sun在一个以太网内。所以发送之前先用ARP协议得到sun的MAC地址。接下来,sun继续选择默认表目发送到主机netb,这里不是使用的以太网,而是SLIP协议。所以数据报不包括链路层首部。netb相同选择默认表目发送到gateway。在这之前netb通过ARP协议获得gateway的MAC地址。gateway选择默认表目以类似的方式发送到外网。

注意,数据报的目的IP始终指向终于的目的IP地址。

可是以太网帧首部的48bit目的地址始终指向下一站链路层地址,这个以太网地址是通过地址解析协议(ARP)来获得的。

參考:
《TCP/IP具体解释》 P27-P30.

【TCP/IP】IP路由选择相关推荐

  1. TCP/IP协议学习之TCP、IP篇

    TCP/IP是不同通信协议的大集合 协议族 TCP/IP是基于TCP和IP这两个最初的协议之上的不同的通信协议的大集合. 团结就是力量嘛,厉害的人总是倾向于聚集起来,厉害的协议同理,那么这些协议具体包 ...

  2. TCP 和IP的区别

    1. IP 网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议. IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层:相反,IP ...

  3. Tcp与Ip协议的客户端和服务器编程

    Tcp与Ip协议的客户端和服务器编程 本文就TCP和Ip协议的客户端和服务器分别进行编程,实现了客户端和服务端进行通信的功能,服务端对多个客户端进行监听,并能与多个客户端通信. 服务器端代码如下: u ...

  4. HP5200打印机从控制面板手动配置TCP/IP 参数

    HP5200打印机从控制面板手动配置TCP/IP 参数<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office ...

  5. 三十天学不会TCP,UDP/IP网络编程-IP头格式祥述

    我又来了,这篇文章还是来做(da)推(guang)介(gao)我自己的!俗话说事不过三,我觉得我下次得换个说法了,不然估计要被厌恶了,但是我是好心呐,一定要相信我纯洁的眼神.由于这两年接触到了比较多的 ...

  6. HTML协议目标端口和源端口,协议:TCP源IP:源端口:80目的IP:目的端口:4049TT? 爱问知识人...

    协议:TCP 源IP: 源端口:80 目的IP: 目的端口:4049 TTL长度:122 数据大小:1460数据内容:?i聒]责?錬nP絟`k0?a???鮓 ㄧ/?W_ M鮗R?臭?白积颞^?De ...

  7. DIY TCP/IP IP模块和ICMP模块的实现2

    上一篇:DIY TCP/IP IP模块和ICMP模块的实现1 本节在8.2节的基础上扩展icmp_recv函数,检验接收到的ICMP数据帧的校验和,解析ICMP数据帧头部的type字段,根据ICMP数 ...

  8. DIY TCP/IP IP模块和ICMP模块的实现1

    上一篇:DIY TCP/IP IP模块和ICMP模块的实现0 8.2 IP数据帧的接收 本节实现DIY TCP/IP的IP数据帧的接收,6.1节介绍pdbuf模块时已经引入了IP头部结构体的定义,ip ...

  9. http、TCP、IP的形象比喻

    1.TCP.IP主要的作用就是保证连接的可靠性,我不管发出任何东西给你,都要有这一套协议来保证不丢包2.比如说TCP协议就是这样,无论上层让他传啥数据,他都通过与IP协议的操作,把这些东西分段,然后输 ...

  10. ip(IP)地址详解!

    ip(IP)地址详解! 1.ip地址分为:合法ip地址(公网ip地址)和私有ip地址    合法ip地址主要应用于internet上的主机访问. 私有ip地址应用于局域网中计算机的相互通信. 2.ip ...

最新文章

  1. SpringBoot+RabbitMQ ,保证消息100%投递成功并被消费(附源码)
  2. 天池NLP中文预训练模型赛来了!
  3. android中Listview的优化技巧
  4. C#调用DataV token代码
  5. python的工资为什么这么低-Python为什么这么火 Python岗位薪资水平如何
  6. Stack(栈)和Heap(堆)的区别
  7. Oracle 与 Mysql NULL值,空字符串''的区别
  8. log4net使用指南(转载)
  9. mysql建立从库同时备份_mysql主从库配置读写分离以及备份
  10. kafka告警简单方案
  11. 怎么调用html调色板,JS实现仿PS的调色板效果完整实例
  12. Android studio点击按钮闪退问题
  13. 洛谷p3398仓鼠找suger题解
  14. linux中iso源码解压_linux下解压iso镜像文件方法
  15. python表白爱心_python 心形动画表白(turtle)
  16. Django小项目:云笔记项目
  17. ipad发布会ipad_ipad十周年,从办公室的角度
  18. JAVAWEB_基础面试题
  19. 工作记录(20191215)
  20. RTX3070+windows11cuda配置教程

热门文章

  1. 【C++】Google Protocol Buffer(protobuf)详解(二)
  2. 【Qt】Qt发布程序时,报错: could not find or load the Qt platform plugin xcb
  3. 【视频】对RTSP抓包,分析通讯流程
  4. Git npm相关命令
  5. String创建方式及其区别(快速了解)
  6. linux 瞬间文件数没了,关于linux:如何快速汇总文件中的所有数字?
  7. UIImage存为本地文件与UIImage转换为NSData
  8. CSS超出隐藏并且能滚动
  9. 炫彩流光按钮 html+css
  10. CentOS 安装Apache