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