是什么
telnet是TCP/IP协议族里的一员,是位于OSI模型的第7层---应用层上的一种协议,你可以把它看成一种协议,它也可作为工具在开发中链接端口测试端口测试,更重要的是可以用来远程登录web服务器,类似ssh。telnet是远程控制web服务器的主要方法之一。
windows开启telnet
默认情况下windows的telnet服务是关闭的,需要我们手动去开启
win+r打开cmd
输入control
点击 “程序”
点击“启动或关闭windows功能”
勾选“telnet客户端”
点击“确定”
telnet常用命令
命令可能是缩写。支持的命令为:
c - close 关闭当前连接
d - display 显示操作参数
o - open hostname [port] 连接到主机(默认端口 23)。
q - quit 退出 telnet
set - set 设置选项(键入 ‘set ?’ 获得列表)
sen - send 将字符串发送到服务器
st - status 打印状态信息
u - unset 解除设置选项(键入 ‘set ?’ 获得列表)
?/h - help 打印帮助信息
telnet ip port 连接ip:port
实践
以下是用python写的简单服务器
# Python3.7+
import socket
HOST, PORT = '', 8888 # 初始化了HOST地址和端口,如果不指明地址的话默认本地地址127.0.0.1
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
print(f'Serving HTTP on port {PORT} ...')
while True:
client_connection, client_address = listen_socket.accept()
request_data = client_connection.recv(1024)
print(request_data.decode('utf-8'))
http_response = b"""\
HTTP/1.1 200 OK
Hello, World!
"""
client_connection.sendall(http_response)
client_connection.close()
运行这个文件,访问127.0.0.1:8888
这里我是直接在vscode跑的
这里先撇开一下写一下这里浏览器和服务器建立连接的流程,算是目前我对网络的愚见
首先说tcp-http
在进行http报文的交互前首先要建立TCP连接,相当于打电话前先搭好电话线
TCP先进行3次握手:
1、喂?听到我说话了吗(浏览器)
2、听到了(服务器)
3、那我开始讲事情了
接着进行http报文的交互
1、发送http请求命令,就是报文的第一行那些(浏览器)
2、发送请求头,host之类的那些(浏览器)
3、若是post方式有请求体会继续提交请求体(浏览器)
4、发送响应状态码(服务器)
5、响应头(服务器)
6、响应内容
7、web服务器关闭TCP连接,除非设置了Connection:keep-alive
以上内容还是很好理解的,其实在建立TCP连接建立前服务器和客户端都使用了所谓的套接字(socket)
telnet连接127.0.0.1 8888
$ telnet localhost 8888
Trying 127.0.0.1 …
Connected to localhost.