《Linux高性能服务器编程》——2.6 重定向-阿里云开发者社区

开发者社区> 华章计算机> 正文

《Linux高性能服务器编程》——2.6 重定向

简介: 本节书摘来自华章计算机《Linux高性能服务器编程》一书中的第2章,第2.6节,作者 游双,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
+关注继续查看

2.6 重定向

图2-3显示了ICMP重定向报文也能用于更新路由表,因此本节我们简要讨论ICMP重定向。

2.6.1 ICMP重定向报文

ICMP重定向报文格式如图2-4所示。

image

我们在1.1节讨论过ICMP报文头部的3个固定字段:8位类型、8位代码和16位校验和。ICMP重定向报文的类型值是5,代码字段有4个可选值,用来区分不同的重定向类型。本书仅讨论主机重定向,其代码值为1。

ICMP重定向报文的数据部分含义很明确,它给接收方提供了如下两个信息:

image

接收主机根据这两个信息就可以断定引起重定向的IP数据报应该使用哪个路由器来转发,并且以此来更新路由表(通常是更新路由表缓冲,而不是直接更改路由表)。

/proc/sys/net/ipv4/conf/all/send_redirects内核参数指定是否允许发送ICMP重定向报文,而/proc/sys/net/ipv4/conf/all/accept_redirects内核参数则指定是否允许接收ICMP重定向报文。一般来说,主机只能接收ICMP重定向报文,而路由器只能发送ICMP重定向报文。

2.6.2 主机重定向实例

2.4.3节中,我们把机器ernest-laptop的网关设置成了机器Kongming20,2.5节中我们又使能了Kongming20的数据报转发功能,因此机器ernest-laptop将通过Kongming20来访问因特网,比如在ernest-laptop上执行如下ping命令:

$ ping www.baidu.com
PING www.a.shifen.com (119.75.217.56) 56(84) bytes of data.
From Kongming20 (192.168.1.109): icmp_seq=1 Redirect Host(New nexthop: 192.168.1.1)
64 bytes from 119.75.217.56: icmp_seq=1 ttl=54 time=6.78 ms

--- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 6.789/6.789/6.789/0.000 ms

从ping命令的输出来看,Kongming20给ernest-laptop发送了一个ICMP重定向报文,告诉它请通过192.168.1.1来访问目标机器,因为这对ernest-laptop来说是更合理的路由方式。当主机ernest-laptop收到这样的ICMP重定向报文后,它将更新其路由表缓冲(使用命令route -Cn查看),并使用新的路由方式来发送后续数据报。上面讨论的重定向过程可用图2-5来总结。

image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《高性能Linux服务器构建实战》——1.9节本章小结
本节书摘来自华章社区《高性能Linux服务器构建实战》一书中的第1章,第1.9节本章小结,作者:高俊峰,更多章节内容可以访问云栖社区“华章社区”公众号查看
921 0
《高性能Linux服务器构建实战》——1.7节实战Nginx与PHP(FastCGI)的安装、配置与优化
本节书摘来自华章社区《高性能Linux服务器构建实战》一书中的第1章,第1.7节实战Nginx与PHP(FastCGI)的安装、配置与优化,作者:高俊峰,更多章节内容可以访问云栖社区“华章社区”公众号查看
1425 0
《高性能Linux服务器构建实战》——1.4节Nginx的安装与配置
本节书摘来自华章社区《高性能Linux服务器构建实战》一书中的第1章,第1.4节Nginx的安装与配置,作者:高俊峰,更多章节内容可以访问云栖社区“华章社区”公众号查看
1524 0
Java性能优化之编程技巧总结
1、慎用异常 在Java软件开发中,经常使用 try-catch 进行错误捕获,但是,try-catch 语句对系统性能而言是非常糟糕的。
859 0
《多核与GPU编程:工具、方法及实践》----1.4 性能指标
发展多核硬件和开发多核软件的目标是获取更高性能,例如更短的执行时间、更大规模的问题和更大的数据集等。很明显,这需要一个客观的标准或者准则来评估这些努力的有效性。
2702 0
13.Linux shell编程(条件语句和标准输出重定向)
(创建于2018/1/31) 条件语句 shell中的条件语句必须以fi结尾,否则会报错syntax error: unexpected end of file if else then 这里的test命令意思就是test后的条件如果成立,则它就是0(...
741 0
《多核与GPU编程:工具、方法及实践》----1.5 并行程序性能的预测与测量
构建并行程序要比串行程序更具挑战性。并行程序程序员需要解决诸如共享资源访问、负载均衡(即,将计算负载分配到所有计算资源上来最小化执行时间)以及程序终止(即,以协调方式暂停程序)等相关问题。
1286 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新