一、用Telnet连接HTTP服务器

作者: lesca 分类: HTTP,Tutorials,Web 发布时间: 2011-02-18 19:30

众所周知,WEB客户端可以是浏览器、机器人、搜索引擎等[1]。当然也可以是像telnet那样的程序。
本文主要介绍如何用telnet向HTTP服务器提交请求

用Telnet连接HTTP服务器的格式

telnet hostname port_number

hostname可以是主机的域名,也可以是IP地址
protnumber为HTTP服务所监听的端口号,默认80

第一次成功的连接

//进行连接,默认80端口
telnet home.sisca.info 80

Trying 173.83.46.2...
Connected to home.sisca.info.
//服务器等待请求
Escape character is '^]'.

//客户端的请求从这里开始
//以下是三行代码(包括空行[回车]符)需要粘贴到telnet中去
GET / HTTP/1.1	
Host: home.sisca.info

HTTP/1.1 200 OK			//服务器的响应
Date: Fri, 18 Feb 2011 08:30:43 GMT
Server: Apache
X-Powered-By: PHP/5.2.12
Transfer-Encoding: chunked
Content-Type: text/html
#以下是<body>部分,省略

注意:在HTTP1.1协议下,GET / HTTP/1.1 加上Host是最小的HTTP请求。[2]

另外,您可能已经注意到,服务器返回HTTP报文后,似乎仍然在等待什么。其实在HTTP/1.1协议下,每次响应后服务器的默认操作“保持连接”(Keep-Alive)。也就是好像有这行请求:Connection: Keep-Alive 一样。
如果您希望服务器返回之后立即断开连接,需要在第三行的地方插入Connection: Close
像这样:

GET / HTTP/1.1	
Host: home.sisca.info
Connection: Close
#这行留空,为"\n"

这里,给Connection字段一个小结:它只有Keep-AliveClose两个选项。

提交一个表单
提交一个表单有两种方法:

  • GET
  • POST

第一种方法提交的表单会显式地添加在URL后,以参数形式呈现;
第二种方法则会在HTTP报文中传送,可以允许很大的长度,而且保密性好。
提交表单的方法,请参见下一讲

References:
[1] O’Reilly – HTTP Pocket Reference Chapter1.1 What’s HTTP
[2] O’Reilly – HTTP Pocket Reference Chapter1.2.3 Comment 2

版权声明

本文出自 Lesca 技术宅,转载时请注明出处及相应链接。

本文永久链接: https://www.lesca.cn/archives/connect-to-http-server-with-telnet.html

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!