Rlogin的实现
Rlogin协议
远程登录(rlogin)是一个UNIX命令,它允许授权用户进入网络中的其它UNIX 机器并且就像用户在现场操作一样。
1、应用进程的启动
R l o g i n的客户进程和服务器进程使用一个TCP连接。
当普通的T C P连接建立完毕之后,客户进程和服务器进程之间将发生下面所述的动作。
1) 客户进程给服务器进程发送4个字符串:
(a)一个字节的0;
(b)用户登录进客户进程主机的登录名,以一个字节的0结束;
(c)登录服务器进程端主机的登录名,以一个字节的0结束;
(d)用户终端类型名,紧跟一个正斜杠“/”,然后是终端速率,以一个字节的0结束。
在这里需要两个登录名字,这是因为用户登录客户和服务器的名称有可能不一样。由于大多满屏应用程序需要知道终端类型,所以终端类型也必须发送到服务器进程。发送终端速率的原因是因为有些应用随着速率的改变,它的操作也有所变化。例如v i编辑器,当速率比较小的时候,它的工作窗口也变小。所以它不能永远保持同样大小的窗口。
2) 服务器进程返回一个字节的0。
3) 服务器进程可以选择是否要求用户输入口令。这个步骤的数据交互没有什么特别的协议,而被当作是普通的数据进行传输。服务器进程给客户进程发送一个字符串(显示在客户进程的屏幕上),通常是password: 。如果在一定的限定时间内(通常是6 0秒)客户进程没有输入口令,服务器进程将关闭该连接。通常可以在服务器进程的主目录(home directory)下生成一个文件(通常叫. rhosts),该文件的某些行记录了一个主机名和用户名。如果从该文件中已经记录的主机上用已经记录的用户名进行登录,服务器进程将不提示我们输入口令。但是很多关于安全性的文献,强烈建议不要采用这种方法,因为这存在安全漏洞。如果提示输入口令,那么我们输入的口令将以明文的形式发送到服务器进程。我们所键入的每个字符都是以明文的格式传输的。所以某人只要能够截取网络上的原始传输的分组,他就可以截获用户口令。针对这个问题,新版本的Rlogin客户程序,例如 BSD版本的客户程序,第一次采用了Kerberos安全模型。Kerberos安全模型可以避免用户口令以明文的形式在网络上传输。当然,这要求服务器进程也支持Kerberos。
4) 服务器进程通常要给客户进程发送请求,询问终端的窗口大小。
客户进程每次给服务器进程发送一个字节的内容,并且接收服务器进程的所有返回信息。
2、 流量控制
略
3、 客户的中断键
略
4、 窗口大小的改变
略
5、服务器到客户的命令
6、客户到服务器的命令
略
7、客户的转义符
略
Rlogin流程
1、初始的客户-服务器协议
客户进程的端口号是1023,这是由IANA分配的。Rlogin协议要求客户进程用小于1 0 2 4的端口号,术语叫做保留端口。在U n i x系统中,客户进程一般不能使用保留端口号,除非客户进程具有超级用户权限。这是客户进程和服务器进程相互鉴别的一部分,这种鉴别可以使得用户不需要口令而可以登录。
2、客户中断键
略