telnet如何连接到任意端口?

时间:2016-12-10 10:06:05

标签: telnet

通过telnet我能够连接到任何端口的任何服务器,它是如何工作的?是否在该服务器上运行了telnet服务器守护程序? 如果有,守护进程不应该侦听特定端口吗?为什么我可以连接到该服务器上的任意端口? 为什么我可以在127.0.0.1端口telnet到80并从我的Nginx获得响应而没有在我的Ubuntu上运行telnet守护程序?

1 个答案:

答案 0 :(得分:3)

telnet客户端不进行任何特殊处理。它在您指定的任何端口上打开与远程服务器的TCP连接,通过此连接转发您键入的任何内容,并将从服务器接收的任何内容放在屏幕上。

当您telnet 127.0.0.1 80时,它会打开与80端口localhost的连接,通常网络服务器已经在监听(nginx)。

HTTP客户端知道如何制作HTTP请求并通过连接发送它。 telnet客户端对HTTP没有任何了解,但如果您知道协议,则可以手动创建请求并键入它,telnet客户端将很乐意通过连接发送给您。如果另一端的程序(Web服务器)理解该请求,它将发回一个响应。同样,telnet客户端并不理解一点响应(它只是数据),但它很乐意将响应放在屏幕上。

只要有正在侦听该端口的服务器应用程序,您就可以使用telnet连接到(远程或本地)计算机的任何端口。

有一个telnet服务器,它通常在端口23上侦听,如果我没记错的话,当建立连接时它启动一个伪终端程序来处理服务器上的登录会话(它启动以处理会话的确切程序取决于操作系统)。如果登录成功,则telnet客户端会与伪终端程序进行通信,该程序将您键入的密钥传递给远程shell; shell产生的输出通过伪终端返回给你 - > TCP连接 - > telnet客户端。

SSH协议不推荐使用telnet服务器,它执行相同的操作(以及许多其他服务器),但通过连接的所有内容在发送之前都会在每端进行加密,并在使用之前在另一端进行解密。这为telnet服务器已经提供的服务增加了隐私和安全性。

然而,telnet客户端仍然有用,因为它可用于测试使用未加密的文本协议(如HTTP,SMTP,POP3,IMAP等)的服务器的功能。