在windows下使用telnet来测试HTTP


4

我正在学习http,并试图使用telnet发送我自己的http请求。

在命令提示符中,我输入:

telnet google.com 80

结果: 屏幕被清除,我看到一个闪烁的光标。 1.为什么我没有看到任何关联的迹象?

现在,尝试输入http命令(获取index.html ...) 当我输入时,我看到光标向右移动,但我没有看到字母出现在屏幕上。只有空白。 那是为什么?

(使用Windows 7 64位)


无论谁投下这个问题,欢迎你在评论中解释你发现的错误。

Answers:


2

HTTP不基于telnet协议。使用telnet作为“测试”HTTP服务器的基础实际上有一些问题。首先,telnet在建立TCP连接后立即发送一些额外的字节来设置会话参数。其次,HTTP不会回显远程对等方发送的数据。第三,良好的IPS设备可以在发送初始会话数据时或在遇到协议违规时丢弃与HTTP端口的连接。

使用telnet客户端测试HTTP服务器充其量只是hack-ish。建立TCP会话时,客户端将显示空白屏幕,并仅显示服务器发回的内容。如果你聪明,你可能能够在许多服务器上检索一个页面......但我认为这是不好的做法。阅读关于如何格式化的HTTP协议 GET 请求。

基本的http请求如下:

GET / HTTP / 1.0

请注意请求后的额外行。完整请求以空白换行结束。


那么,您将使用什么应用程序来构建和发送您自己的http请求? (作为学习协议的手段)

我用 putty 亲身。确保连接类型设置为RAW,并且强制本地回显为“on”。对于更高级的东西...我只是在我的网络浏览器中打开它并使用chrome内置的调试器工具。
TheCompWiz

在你提到的方面,putty与windows telnet有什么不同? “telnet在建立TCP连接后立即发送一些额外的字节来设置会话参数”

使用“原始”连接类型的Putty只建立一个没有初始telnet垃圾的RAW TCP连接。
TheCompWiz

哦,我想我明白了。 “原始”模式。我实际上并不知道telnet与此RAW不同。

1

为什么我没有看到任何迹象表明我已连接?

为什么服务器会发送额外不需要的数据并使用更多带宽? 但是,您已连接,您可以测试它。

尝试输入 HTTP/1.0 然后按[确定]。你应该得到回应。
(一个包含错误,但通常足以测试Web服务器是否启动并运行。)

当我输入时,我看到光标向右移动,但我没有看到字母出现在屏幕上。只有空白。

这是由于windows telnet。默认情况下禁用本地回显。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.