RSH的网络通信细节

简介:

rsh 服务侦听 514/TCP 口, client 建立到 server  514/TCP 的连接。服务端会先检查 TCP 连接的源端口是否位于[512,1023] 区间,否则服务端进程终止。 *nix 最早要求范围是 [1,1023] ,后来为消除一些安全隐患,改成 [512,1023] 。但这是实现相关的,并且各个 系统  man 手册可能与其当前实现不同步,某些版本 Solaris  man 手册就有问题,应实测。

为什么 rshd 有这个限制?一般 rsh  rcp  rlogin  设置  setuid-to-root  client 要想访问远端 rshd ,只能用系统自带的 rsh  rcp  rlogin ,但这三个程序会如实指定 client_user 字段,不存在伪造的可能。只有 root 用户才能使用 [1,1023] 的端口。

那么 rshd 如何检查端口? client  server 发送如下请求数据 :

[port]\0<client_user>\0<server_user>\0<command>\0

Port ---- ANSI 字符串形式的端口号,不是短整型形式的端口号。

client_user ---- 客户端当前用户名

server_user ---- 试图远程使用的服务端用户名

command ----  试图远程使用的服务端命令

port 本身是可选项。如果指定了 port ,服务端会建立到客户端这个端口 (port)  TCP 连接, rshd 会将 stderr 重定向到这条连接上。 *nix 要求 port  [1,1023] 上,并且成功建立连接,否则服务端进程终止。但这是实现相关的, Solaris  Linux 自带rsh 命令,抓包表明它们都提供 port 字段,并且没有命令行开关改变这个行为。

server  client 发送如下响应数据 :

<ret><data>

ret 等于 0x00 表示成功, data 对应执行结果,一般是 \n 分隔、结尾的文本。

ret 等于 0x01 表示失败, data 对应错误信息,一般也是 \n 分隔、结尾的文本。

 

Application reaches max limit on rsh connections

It appears from the customer's application that it is reaching the max limit (and even going beyond) on the max allowed number of port connections when doing repeated rsh to the server's in.rshd,-  which allows connections only from the "ephemeral" reserved ports (ports 512-1023).

Many Error Messages of the kind below appear in /var/adm/messages for 5-10 minutes, and, after which connections start to work again.  Customer is getting these error messages at peak load times.  His ultra is a ftp/rsh/rcp server for many differnt remote client machines.

Error msg example: (/var/log/messages)

"Apr  1 11:07:10 asncomm rsh[16295]: can't get stderr port: Resource temporarily unavailable"

The message isn't from xinetd throttling too high of a connection rate. It is from rshd, due to a failure of rresvport. Note that the EAGAIN associated error message translation is documented on the manpage for rresvport:

      “The rresvport() function returns a valid, bound socket descriptor on success.  It returns -1 on error with the global value errno set according to the reason for failure.  The error code EAGAIN is overloaded to mean ''All network ports in use.''

 

参考: rsh的网络通信细节

http://www.netexpert.cn/thread-3717-1-1.html



本文转自 zhenjing 博客园博客,原文链接:   http://www.cnblogs.com/zhenjing/archive/2011/04/20/2021766.html,如需转载请自行联系原作者

相关文章
|
5月前
|
人工智能 JavaScript 数据可视化
重磅发布:VTJ.PRO 赋能若依(RuoYi)「AI + 低代码」能力,企业级开发效率跃升 300%
VTJ.PRO 与若依(RuoYi)深度集成,融合双向代码穿梭、AI智能引擎及多模态渲染技术,打造“设计即生产”新体验。支持可视化开发、AI生成代码、旧组件重构,提升企业开发效率,助力数字化转型。
523 29
|
人工智能 Linux Docker
一文详解几种常见本地大模型个人知识库工具部署、微调及对比选型(1)
近年来,大模型在AI领域崭露头角,成为技术创新的重要驱动力。从AlphaGo的胜利到GPT系列的推出,大模型展现出了强大的语言生成、理解和多任务处理能力,预示着智能化转型的新阶段。然而,要将大模型的潜力转化为实际生产力,需要克服理论到实践的鸿沟,实现从实验室到现实世界的落地应用。阿里云去年在云栖大会上发布了一系列基于通义大模型的创新应用,标志着大模型技术开始走向大规模商业化和产业化。这些应用展示了大模型在交通、电力、金融、政务、教育等多个行业的广阔应用前景,并揭示了构建具有行业特色的“行业大模型”这一趋势,大模型知识库概念随之诞生。
156545 30
|
5月前
|
Linux 编译器 开发工具
在CentOS环境下升级GCC编译器的指南
总结:本文提供了一种方法来升级CentOS的GCC编译器,通过使用CentOS的软件集合和开发者工具集工具,可以比较平滑地进行升级。在整个过程中无需从源代码编译,这样既省去了复杂的编译过程,也避免了可能出现的与系统库不兼容的风险。请注意,使用第三方仓库可能会带来系统稳定性和安全性上的潜在影响。所有操作都应谨慎进行,并确保有相应的数据备份。
703 19
|
5月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
10月前
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
5519 38
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
12月前
|
机器学习/深度学习 人工智能 数据处理
《C++与 Python 人工智能框架的无缝对接:开启数据处理新境界》
在数字化时代,C++和Python分别在数据处理和人工智能领域展现独特优势。C++以其高效能和底层资源控制能力,适用于数据的初步处理;Python则因简洁灵活及丰富的AI库,擅长复杂算法的实现。两者结合,不仅强化了数据处理与分析能力,还为解决实际问题提供了新途径,成为技术领域的热点。本文探讨了这种集成的重要性和应用场景,如图像识别、金融分析等,并讨论了集成过程中可能遇到的挑战及解决方案,最后分享了成功案例与未来展望。
208 10
|
网络协议 算法 程序员
网络必修课:以太网报文格式详解
嗨,大家好!今天,我要带大家深入了解以太网报文格式,这是现代网络通信的重要基础。无论你是网络工程师、开发者,还是对技术感兴趣的朋友,这篇文章都将为你揭开以太网的神秘面纱,让你更好地理解和应用这一关键技术。准备好了吗?让我们开始吧!
651 4
|
消息中间件 存储 安全
|
存储 SQL 数据处理
数据库设计与管理的要点
在数据库设计和管理过程中,清晰的权限控制、数据处理逻辑、以及高效的查询优化,都是不可或缺的组成部分。
218 2
|
算法 SDN C++
以太网帧FCS校验:CRC32的三种实现
这篇文章讨论了CRC32校验码的三种实现方法,用于检测网络通信中的数据错误。首先介绍了基础的按位计算方法,虽然直观但效率低。接着,文章提出了使用非翻转查找表和翻转查找表的快速计算方法,后者在性能上更优。文中提供了C++代码示例,展示如何生成和使用这些查找表。最后,指出在实际应用中,应根据性能需求选择合适的方法。

热门文章

最新文章