转发:i p _ f o r w a r d函数
转发:i p _ f o r w a r d函数
到达非最终目的地系统的分组需要被转发。只有当 i p f o r w a r d i n g非零或当分组
中包含源路由时,i p i n t r才调用实现转发算法的 i p _ f o r w a r d函数。当分组中包含
源路由时,i p _ d o o p t i o n s调用i p _ f o r w a r d,并且第2个参数s r c r t设为1。
i p _ f o r w a r d通过图中显示的r o u t e结构与路由表接口。
4 6 - 4 9 r o u t e结构有两个成员: r o _ r t,指向r t e n t r y结构的指针;r o _ d s t,一个
s o c k a d d r结构,指定与r o _ r t所指的路由项相关的目的地。目的地是在内核的路由表中用
来查找路由信息的关键字
我们分两部分讨论i p _ f o r w a r d。第一部分确定允许系统转发分组,修改I P首部,并为分
组选择路由。第二部分处理I C M P重定向报文,并把分组交给i p _ o u t p u t进行发送。如下图所示。
1. 分组适合转发吗
8 6 7 - 8 7 1 i p _ f r o w a r d的第1个参数是指向一个m b u f链的指针,该m b u f中包含了要被转发
的分组。如果第2个参数s r c r t为非零,则分组由于源路由选项(见9 . 6节)正在被转发。
8 7 9 - 8 8 4 i f语句识别并丢弃以下分组。
• 链路层广播
任何支持广播的网络接口驱动器必须为收到的广播分组把 M _ B C A S T标志置位。如果分组
寻址是到以太网广播地址,则e t h e r _ i n p u t就把M _ B C A S T置位。不转发链路层的广
播分组。
RFC 11 2 2不允许以链路层广播的方式发送一个寻址到单播 I P地址的分组,并在
这里将该分组丢掉。
• 环回分组
对寻址到环回网络的分组, i n _ c a n f o r w a r d返回0。这些分组将被i p i n t r提交给i p _
f o r w a r d,因为没有正确配置反馈接口。
• 网络0和E类地址
对这些分组,i n _ c a n f o r w a r d返回0。 这些目的地址是无效的,而且因为没有主机接收
这些分组,所以它们不应该继续在网络中流动。
• D类地址
寻址到D类地址的分组应该由多播函数 i p _ m f o r w a r d而不是由 i p _ f o r w a r d处理。
i n _ c a n f o r w a r d拒绝D类(多播)地址。
RFC 791 规定处理分组的所有系统都必须把生存时间 ( T T L )字段至少减去1,即使T T L是
以秒计算的。由于这个要求, T T L通常被认为是对 I P分组在被丢掉之前能经过的跳的个数的
界限。从技术角度说,如果路由器持有分组超过 1秒,就必须把i p _ t t l减去多于1。
转发:i p _ f o r w a r d函数的更多相关文章
- C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析
C语言文件打开模式浅析 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式 只可以读 只可以写 读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ...
- python文件操作打开模式 r,w,a,r+,w+,a+ 区别辨析
主要分成三大类: r 和 r+ "读"功能 r 只读 r+ 读写(先读后写) 辨析:对于r,只有读取功能,利用光标的移动,可以选择要读取的内容. 对于r+,同时具有读和写 ...
- python文件读写模式 --- r,w,a,r+,w+,a+,rb,wb
要了解文件读写模式,需要了解几种模式的区别,以及对应指针 r : 读取文件,若文件不存在则会报错 w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件 a : 写入文件,若文件不存在则会先创建再 ...
- 第九天- 文件操作 r w a 文件复制/修改
文件操作简介:使用python来读写文件是非常简单的操作.我们使用 open() 函数来打开一个文件,获取到文件句柄.然后通过文件句柄就可以进行各种各样的操作了.根据打开⽅方式的不同能够执行的操作也会 ...
- python对文件操作 r w a 文件复制/修改
文件操作简介: 使用python来读写文件是非常简单的操作.我们使用 open() 函数来打开一个文件,获取到文件句柄.然后 通过文件句柄就可以进行各种各样的操作了.根据打开⽅方式的不同能够执行的操作 ...
- fopen特殊模式r+, w+, a+辨析
fopen模式分两大类,即 TEXT模式:r, w, a, r+, w+, a+ BIN模式:rb, wb, ab, r+b, w+b, a+b 模式 读指针初始位置 写指针初始位置 模式用途 详细说 ...
- python3 文件操作练习 r+ w+ a+ 的理解
突然来一句:“慨然有经略四方之志” 文件操作三部曲:1.先用open打开 2.再写关闭 3.再回到中间写操作 为啥要刚打开就关闭 那是很容易望,所以先写上... 基本格式 f = open( ...
- Python文件读写之r+/w+/a+
读模式 r 打开不存在的文件会报错.不能写:如不指定模式则默认是r 写模式 w 打开不存在的文件会,会新建一个文件:打开存在的文件会先清空后覆盖原有文件:不能读 追加模式 a 打开不存在的文件会,会新 ...
- python r r+ w w+ rb 文件打开模式的区别
# 只读模式with open ( "file.txt" ,'r' ) as f: for line in f.readlines(): ...
随机推荐
- Redis HashMap 使用
散列类型相当于Java中的HashMap,他的值是一个字典,保存很多key,value对,每对key,value的值个键都是字符串类型,换句话说,散列类型不能嵌套其他数据类型.一个散列类型键最多可以包 ...
- 基于.Net Standard开发的微信服务端开源库
一直想做一个开源库, 为社区贡献一份力量, 同时提高一下自己 一年来在给公司做一款微信小程序, 于是突发奇想用.Net Standard做一整套微信开发服务端类库 地址: https://gitee. ...
- Fiddler之手机抓包
1.Fiddle设置端口,Tools->Options->Connections, 2.手机设置代理服务器: 注意:要保证手机和PC电脑IP在同一个网段(或者同一个网关) (1).安卓手机 ...
- 笔记-10:处理时间的标准库-time库
1.time库介绍 主要用来处理时间的标准库. time库提供了系统级精确计时器的计时功能,可以用来分析程序性能,也可让程序暂停运行时间. time库的功能主要分为:时间处理.时间格式化.计时. 2. ...
- java实现带过期时间的缓存
private static ScheduledExecutorService swapExpiredPool = new ScheduledThreadPoolExecutor(10); priva ...
- 【解决方法】You seem to have the current working directory in your LD_LIBRARY_PATH environment variable.
参考地址:https://blog.csdn.net/qq_24755999/article/details/78722788 You seem to have the current working ...
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
ref : https://dsqiu.iteye.com/blog/1700312 本文内容框架: §1 Boyer-Moore算法 §2 Horspool算法 §3 Sunday算法 §4 KMP ...
- SpringBoot 第二篇:SpringBoot配置文件使用
背景 项目跑起来,和以前相比,现在的配置文件能干什么?SpringBoot 项目的配置文件就是创建项目时,自带的 application.properties ,打开里面空空如也.这个文件里面的语法是 ...
- sqlserver使用EF模型经验
sqlserver使用EF模型经验 EF模型使用本人在之前两三年中从没使用过,所以刚开始使用就会踩上许多的坑.今天我不单单说下自己所踩的一些坑与当前公司中使用EF模型设计的理念,即是为我自己做个笔记, ...
- OSI的七层网络模型
一.概念七层模型,亦称OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系.它是一个七层的.抽象 ...