转发: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函数的更多相关文章

  1. C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析

    C语言文件打开模式浅析 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式  只可以读   只可以写  读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ...

  2. python文件操作打开模式 r,w,a,r+,w+,a+ 区别辨析

    主要分成三大类: r 和 r+     "读"功能 r  只读 r+ 读写(先读后写) 辨析:对于r,只有读取功能,利用光标的移动,可以选择要读取的内容. 对于r+,同时具有读和写 ...

  3. python文件读写模式 --- r,w,a,r+,w+,a+,rb,wb

    要了解文件读写模式,需要了解几种模式的区别,以及对应指针 r : 读取文件,若文件不存在则会报错 w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件 a : 写入文件,若文件不存在则会先创建再 ...

  4. 第九天- 文件操作 r w a 文件复制/修改

    文件操作简介:使用python来读写文件是非常简单的操作.我们使用 open() 函数来打开一个文件,获取到文件句柄.然后通过文件句柄就可以进行各种各样的操作了.根据打开⽅方式的不同能够执行的操作也会 ...

  5. python对文件操作 r w a 文件复制/修改

    文件操作简介: 使用python来读写文件是非常简单的操作.我们使用 open() 函数来打开一个文件,获取到文件句柄.然后 通过文件句柄就可以进行各种各样的操作了.根据打开⽅方式的不同能够执行的操作 ...

  6. fopen特殊模式r+, w+, a+辨析

    fopen模式分两大类,即 TEXT模式:r, w, a, r+, w+, a+ BIN模式:rb, wb, ab, r+b, w+b, a+b 模式 读指针初始位置 写指针初始位置 模式用途 详细说 ...

  7. python3 文件操作练习 r+ w+ a+ 的理解

    突然来一句:“慨然有经略四方之志” 文件操作三部曲:1.先用open打开 2.再写关闭  3.再回到中间写操作     为啥要刚打开就关闭 那是很容易望,所以先写上... 基本格式 f = open( ...

  8. Python文件读写之r+/w+/a+

    读模式 r 打开不存在的文件会报错.不能写:如不指定模式则默认是r 写模式 w 打开不存在的文件会,会新建一个文件:打开存在的文件会先清空后覆盖原有文件:不能读 追加模式 a 打开不存在的文件会,会新 ...

  9. python r r+ w w+ rb 文件打开模式的区别

    # 只读模式with open ( "file.txt" ,'r' ) as f:        for line in f.readlines():                ...

随机推荐

  1. MyBatis框架总结

    一. MyBatis简介 MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBati ...

  2. 【51nod】1776 路径计数

    [51nod]1776 路径计数 我们先把前两种数给排好,排好之后会有\(a + b + 1\)个空隙可以填数,我们计算有\(k\)个空隙两端都是相同字母的方案数 可以用枚举把第二种数分成几段插进去来 ...

  3. java输入输出 -- Java NIO之套接字通道

    一.简介 前面一篇文章讲了文件通道,本文继续来说说另一种类型的通道 – 套接字通道.在展开说明之前,咱们先来聊聊套接字的由来.套接字即 socket,最早由伯克利大学的研究人员开发,所以经常被称为Be ...

  4. ElasticSearch入门-基本概念介绍以及安装

    Elasticsearch基本概念 Elasticsearch是基于Lucene的全文检索库,本质也是存储数据,很多概念与传统关系型数据库类似. 传统关系型数据库与Elasticsearch进行概念对 ...

  5. PAT甲级 排序题_C++题解

    排序题 PAT (Advanced Level) Practice 排序题 目录 <算法笔记> 6.9.6 sort()用法 <算法笔记> 4.1 排序题步骤 1012 The ...

  6. Docker从国内代理下载镜像

          docker从国内拉取镜像,或者通过加速器拉取         由于国内访问直接访问Docker hub网速比较慢,拉取镜像的时间就会比较长.一般我们会使用镜像加速或者直接从国内的一些平台 ...

  7. hdu 2473 并差集的删除操作

    虚拟数组 待定/.#include<iostream> #include<algorithm> #include<set> using namespace std; ...

  8. (十一)Hibernate中的多表操作(1):单向一对多

    一.单向一对多() 案例一(用XML文件配置): 一个班级有多个学生,班级可以查看所有学生的信息. ClassBean.java package bean; import java.util.Hash ...

  9. (十二)Hibernate中的多表操作(2):单向多对一

    由“多”方可知“一”方的信息,比如多个员工使用同一栋公寓,员工可以知道公寓的信息,而公寓无法知道员工的信息. 案例一:使用xml配置 pojo类 Group.java package bean; // ...

  10. (错误) Eclipse使用Maven创建Web时错误

    转自:http://blog.csdn.net/afgasdg/article/details/12757433 问题描述: 使用Eclipse自带的Maven插件创建Web项目时报错: Could ...