当响应某个分组时,I C M P和标准的运输层协议必须把分组带的任意源路由逆转。逆转源
路由是通过i p _ s r c r o u t e保存的路由构造的。

7 7 7 - 7 8 3 i p _ s r c r o u t e把保存在i p _ s r c r t结构中的源路由逆转后,
如果 i p _ n h o p s 是 0,则没有保存的路由,所以
i p _ s r c r o u t e返回一个指针。
当一个无效分组到达时, i p i n t r把i p _ n h o p s清零。运输层
协议必须调用i p _ s r c r o u t e,并在下一个分组到达之前自己保存逆转后的路由。正
如以前我们注意到的,这样做是正确的,因为 i p i n t r在处理分组时,在 I P输入队列的
下一个分组被处理之前都会调用运输层 ( T C P或U D P )的。
为源路由分配存储器缓存
7 8 4 - 7 8 6 如果i p _ n h o p s非0,i p _ s r c r o u t e就分配一个m b u f,并把m _ l e n设置成足够大,
以便包含第一跳目的地、选项首部信息 (O P T S I Z)以及逆转后的路由。如果分配失败,则返回
一个空指针,跟没有源路由一样。
p被初始化为指向到达路由的末尾,i p _ s r c r o u t e把最后记录的地址复制到m b u f的前面,
在这里它为外出的第一跳目的地开始逆转后的路由。然后该函数把一份 N O P选项和
源路由信息复制到m b u f中。
8 0 5 - 8 1 8 W h i l e循环把其余的IP 地址从源路由中以相反的顺序复制到 m b u f中。路由的最
后一个地址被设置成到达分组中被 s a v e _ r t e放在i p _ s r c r t . d s t中的源站地址。返回一个
指向m b u f的指针。

最新文章

  1. C#单元测试面面观
  2. nginx 反向代理 配置 https 实现http https同时存在
  3. 在应用中嵌入Python:转
  4. Windows 64位 安装Oracle instantclient 官方绿色版和PL/SQL Developer 总结
  5. web网页的表单排版利器--960css
  6. Json与Gson讲解
  7. python之数据结构链表实现方式
  8. Git时光机穿梭
  9. HDU--1195--bfs--Open the Lock
  10. NFS 安装与配置
  11. 内核线程的进程描述符task_struct中的mm和active_mm
  12. Java SE之调整JVM内存笔记
  13. SpringBoot整合elasticsearch
  14. R12.2.4 ORA-01017: invalid username/password; logon denied
  15. java之ArrayList详细介绍
  16. Vue仿抽屉
  17. Revit API 操作共享参数和项目参数
  18. python轻量级orm
  19. MathType如何设置标尺的单位
  20. jQuery数组处理详解(转载)

热门文章

  1. Ie浏览器请求400错误,谷歌火狐等浏览器正常请求.
  2. Jquery生成二维码(微信中长按图片识别二维码功能)
  3. 工作总结--CTO(张王岩)IO的正式使用
  4. 多年经验【Parallels Desktop14.0.1 永久激活 】版 推荐苹果mac 虚拟机pmg序列号
  5. [转帖]Oracle报错ORA-26563--当重命名表时碰到物化视图
  6. 关于c++模板非类型参数中指针和引用类型必须为全局或者静态变量的问题
  7. php 之分页
  8. Shell重定向:2>&1
  9. (一)第一个python语句、乘除法、获取用户输入、函数
  10. c#入门学习笔记