telnet命令----用来网络调试。

PC主机IP地址,192.168.0.107。

虚拟机ubuntu的ip地址:192.168.0.107,在ubuntu中telnet主机:telnet 192.168.0.107 8189

PC端开启Socket Server程序,用java编写,代码如下:

public class EchoServer
{
   public static void main(String[] args) throws IOException
   {
      // establish server socket
      try (ServerSocket s = new ServerSocket(8189))
      {
         // wait for client connection
         try (Socket incoming = s.accept())
         {
            InputStream inStream = incoming.getInputStream();
            OutputStream outStream = incoming.getOutputStream();
   
            try (Scanner in = new Scanner(inStream, "UTF-8"))
            {
               PrintWriter out = new PrintWriter(
                  new OutputStreamWriter(outStream, "UTF-8"),
                  true /* autoFlush */);
      
               out.println("Hello! Enter BYE to exit.");
      
               // echo client input
               boolean done = false;
               while (!done && in.hasNextLine())
               {
                  String line = in.nextLine();
                  out.println("Echo: " + line);
                  if (line.trim().equals("BYE")) done = true;
               }
            }
         }
      }
   }
}

运行这个java程序后,在ubuntu中telnet连接,并输入“1111111111111111111111111111111111”,如下:

telnet命令--学习_ip地址

用Wireshark抓包,,如下图所示:

telnet命令--学习_端口号_02

由此可以看出,telnet命令是在应用层,传输层使用的是tcp协议。

 

----------------------------------------------------------------------------------------------------------------------------------------

下面所述的 telnet 是通过 telnet 命令来管理远程电脑。tcp的端口号是23。而上面的那个端口号是随意制定的。

ubuntu 16.04 默认没有 telnet server 功能的,需要手动开启, Ubuntu server 16.04 配置 telnet 服务

查看telnet运行状态: sudo netstat -a | grep telnet

pc电脑使用 telnet 命令发送 “gggggggggggggggggg”,ubuntu 回复没有这个命令,截图如下:

telnet命令--学习_网络_03

由此可知,telnet 命令并没有协议头,全部是内容,客户端发送一个字符,telnet 服务器 返回一个回复(若干字符)。