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”,如下:
用Wireshark抓包,,如下图所示:
由此可以看出,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 命令并没有协议头,全部是内容,客户端发送一个字符,telnet 服务器 返回一个回复(若干字符)。