telnet如何连接到任意端口?
How can telnet connect to an arbitrary port?
通过telnet
我可以在任何端口连接到任何服务器,它是如何工作的?该服务器上是否有 telnet 服务器守护进程 运行?
如果有,守护进程不应该在特定端口上监听吗?为什么我可以连接到该服务器上的任意端口?
为什么我可以在 80
端口远程登录到 127.0.0.1
并在我的 Ubuntu 上没有 telnet 守护程序 运行 的情况下从我的 Nginx 获得响应?
telnet
客户端不做任何特殊处理。它在您指定的任何端口上打开到远程服务器的 TCP 连接,通过此连接转发您键入的任何内容,并将它从服务器接收到的任何内容显示在屏幕上。
当您 telnet 127.0.0.1 80
时,它会打开与 localhost
端口 80
的连接,通常 Web 服务器已经在侦听(在您的情况下为 nginx
)。
HTTP 客户端知道如何制作 HTTP 请求并通过连接发送它。 telnet
客户端对 HTTP 一无所知,但如果您知道协议,您可以手动创建请求并键入它,telnet
客户端会很乐意通过连接为您发送它。如果另一端(Web 服务器)的程序理解该请求,它将发回响应。同样,telnet
客户端一点也不理解响应(它只是数据),但它很乐意将响应显示在屏幕上。
您可以使用 telnet
连接到(远程或本地)计算机的任何端口,只要有服务器应用程序正在侦听该端口即可。
有一个 telnet
服务器,如果我没记错的话,它通常在端口 23
上侦听,当建立连接时,它会启动一个伪终端程序来处理登录会话服务器(它为处理会话而启动的确切程序取决于 OS)。如果登录成功,telnet
客户端将与伪终端程序对话,将您键入的密钥传递给远程 shell; shell 产生的输出通过伪终端 -> TCP 连接 -> telnet 客户端返回给你。
telnet
服务器已被 SSH 协议弃用,SSH 协议做同样的事情(以及许多其他事情),但是通过连接的所有内容在发送之前在每一端都被加密,在被发送之前在另一端被解密用过的。这为 telnet 服务器已经提供的服务增加了隐私和安全性。
但是,telnet
客户端仍然有用,因为它可用于测试使用未加密文本协议(如 HTTP、SMTP、POP3、IMAP 等)的服务器的功能
通过telnet
我可以在任何端口连接到任何服务器,它是如何工作的?该服务器上是否有 telnet 服务器守护进程 运行?
如果有,守护进程不应该在特定端口上监听吗?为什么我可以连接到该服务器上的任意端口?
为什么我可以在 80
端口远程登录到 127.0.0.1
并在我的 Ubuntu 上没有 telnet 守护程序 运行 的情况下从我的 Nginx 获得响应?
telnet
客户端不做任何特殊处理。它在您指定的任何端口上打开到远程服务器的 TCP 连接,通过此连接转发您键入的任何内容,并将它从服务器接收到的任何内容显示在屏幕上。
当您 telnet 127.0.0.1 80
时,它会打开与 localhost
端口 80
的连接,通常 Web 服务器已经在侦听(在您的情况下为 nginx
)。
HTTP 客户端知道如何制作 HTTP 请求并通过连接发送它。 telnet
客户端对 HTTP 一无所知,但如果您知道协议,您可以手动创建请求并键入它,telnet
客户端会很乐意通过连接为您发送它。如果另一端(Web 服务器)的程序理解该请求,它将发回响应。同样,telnet
客户端一点也不理解响应(它只是数据),但它很乐意将响应显示在屏幕上。
您可以使用 telnet
连接到(远程或本地)计算机的任何端口,只要有服务器应用程序正在侦听该端口即可。
有一个 telnet
服务器,如果我没记错的话,它通常在端口 23
上侦听,当建立连接时,它会启动一个伪终端程序来处理登录会话服务器(它为处理会话而启动的确切程序取决于 OS)。如果登录成功,telnet
客户端将与伪终端程序对话,将您键入的密钥传递给远程 shell; shell 产生的输出通过伪终端 -> TCP 连接 -> telnet 客户端返回给你。
telnet
服务器已被 SSH 协议弃用,SSH 协议做同样的事情(以及许多其他事情),但是通过连接的所有内容在发送之前在每一端都被加密,在被发送之前在另一端被解密用过的。这为 telnet 服务器已经提供的服务增加了隐私和安全性。
但是,telnet
客户端仍然有用,因为它可用于测试使用未加密文本协议(如 HTTP、SMTP、POP3、IMAP 等)的服务器的功能