IP路由

简单来说,路由用于决定将数据报发送到目标机器的所经路径。它是IP协议的一个核心任务,即发生在TCP/IP四层模型中的网络层。确切的说,是发生在网络层的IP模块。

当主机通信的目的地是直接相连的主机(例如点到点链接)或共享网络(例如以太网),IP数据报直接发送到目的地,不需要或者不适用路由器。否则,主机将数据报发送到一台路由器,由该路由器将数据报交付到目的地,这个过程可能要经过多个路由。这就是IP转发。

大多数主机既可配置为路由器,也可配置为主机。主机与路由器的处理IP数据报的区别在于:主机不转发那些不是由它生成的数据报,路由器会这样做。在整个IP转发方案中,IP协议可接收一个数据报,它可来自同一主机上的其他协议(TCP、UDP等),也可来自一个网络接口。IP层包括一些位于内存中的信息,通常称为路由表或转发表,每次转发一个数据报时需要从中查找信息。当一个网络接口接收到一个数据报时,IP模块首先检查目的地址是否为自己的IP地址(与自己的某个网络接口相关的IP地址),或是它可以接收其流量的一些其他地址,例如IP广播或组播地址如果是的话,数据报交付给由IPv4头部的协议字段或IPv6头部的下一个头部字段中指定的协议模块。如果不是:(1) 如果IP层配置为一台路由器,则作为输出的数据报处理,转发该数据报;(2) 数据报被丢弃。在某些情况下,ICMP消息可能发送回源节点,以表明发生了一个错误。

IP模块工作流程

绿色箭头表示IP数据报的数据走向:
  (1) IP模块接收到来自数据链路层的IP数据报后,对其头部执行CRC校验,确认无误后分解析其头部信息
  (2) 若该IP数据报的头部信息的可选项信息设置了源站选路选项(松散源路由选择/严格源路由选择),或者该IP数据包并非发送给本机,则IP模块调用数据报转发子模块来处理该数据报;若该IP数据报的头部中的目的IP地址为本机的某个IP地址,或者目的地址是广播地址,则根据IP数据报头部中的协议字段来决定将该报派发往哪个上层应用
  (3) 数据报转发子模块首先检查系统是否允许转发,若不允许则该IP数据报被丢弃;若允许则数据转发子模块对其执行相关操作后,将其交付输出子模块
IP数据报应该发送至哪一个下一跳路由或者目标机器,以及经过哪张网卡来发送,这就是IP路由的过程,即图中的计算下一跳路由子模块。IP模块实现数据IP路由的核心数据结构是路由表。路由表是数据报的目标IP地址分类的依据,同一类型的IP地址的IP数据报将被发往相同的下一跳路由器或者目标机器。
IP数据队列中存放的是所有等待发送的IP数据包,队列中存放着的除了是需要转发的IP数据报外,还包括本机上层应用的IP数据报,如ICMP报文、TCP报文段和UDP数据报(图中蓝色箭头走向)。

路由表

在Linux操作系统中可以使用route命令查看路由表:

[root@centre ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.239.2   0.0.0.0         UG    0      0        0 eth0
192.168.239.0   *               255.255.255.0   U     1      0        0 eth0

每项由8个字段组成:

路由项1:

(1) 目标地址default,即默认的路由项。
(2) 选项包含“G”标志,说明下一跳是网关,其地址为192.168.239.2,即路由器的本地IP地址。路由器有两个IP地址,WAN是外网IP,一般由网络运营商动态分配。当然也可以是固定的,但需要购买,如服务器网站的IP地址即为固定的。LAN是路由器的固定局域网IP。

路由项2:

(1) 目标地址是192.168.239.0,指的是本地局域网。
(2) 网关地址为*,表示数据报中的目的IP地址被被归类为此类型的IP地址的,该数据包不需要中转,可直接发送到目标机器。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇