背景:常常很多人对http协议不是很清楚,都干了很多年了,这块早期原始的BBS什么的都是输入命令看帖子,开发后台程序必须掌握http协议。
备注:输入“GET / HTTP/1.1”,表示向该域名索要首页根文件,使用的协议是HTTP的1.1版本。
当然也可更直接这样telnet:
—————————发送telnet的注意事宜如下——————————
HTTP 概述
*************************************************
HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在http和其他几种网络协议
[1]多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。 通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。HTTP协议的网页
HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。 通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。
*****************************************************
HTTP 与 TCP
HTTP是应用层协议,TCP是传输层协议
数据包在网络传输过程中,HTTP被封装在TCP包内
所以建立HTTP连接时,首先要TCP三次握手。
利用telnet可以与服务器建立http连接,获取网页,实现浏览器的功能。
它对于需要对http header进行观察和测试到时候非常方便。因为浏览器看不到http header。
步骤如下:
1. 运行/cmd
2. telnet www.baidu.com 80
3. 组合键“Ctrl + ]”打开回显,回车。
4. 输入GET /index.html HTTP/1.1 并2次回车。
这时就应该可以看到http response了,包括了header和body。
/*因为window自己带到telnet在输入内容的时候看不到输入的内容,可以下载putty并选用raw tcp connection的方式进行连接。
效果一样,但是毕竟方便好用。*/
需要注意到事情如下:
1. GET 和 HTTP必须大写,因为很多服务器要求大写,小写的话在一些服务器会造成连接失败。
2. HTTP1.1的话,还需要加上一行写明host, 这是http1.1的要求。
GET /officers.html HTTP/1.1
host: www.csua.berkeley.ed
3. 2次回车表示把request发出去,因为http request是以最后一行为空行来表示结束的。
4. 一些比较聪明的网站会屏蔽掉不是浏览器的http request, 这时我们就需要假扮浏览器,需要set的User-agent。
GET /officers.html HTTP/1.1
host: www.csua.berkeley.ed
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
4.1 连接一次即断开
connection:close Http1.1 默认链接为长连接状态keep-alive,若要更改为链接一次即断开
在请求中加入以上状态。
5. 抓取http连接的package可以使用Wireshark,获取浏览器的http request和response,再用telnet模拟浏览器进行连接
上述来自:http://wenku.baidu.com/view/fe0f351fff00bed5b9f31ddc.html###
上面谈到伪装浏览器,有curl更方便。
参考:http://wenku.baidu.com/view/42dc2b18fad6195f312ba62a.html
实验目的及原理:
利用MS的telnet工具,通过手动输入http请求信息的方式,向服务器发出请求,服务器接收、解释和接受请求后,会返回一个响应,该响应会在telnet窗口上显示出来,从而从感性上加深对http协议的通讯过程的认识。
实验步骤:
1、打开telnet
1.1 打开telnet
运行-->cmd-->telnet
1.2 打开telnet回显功能
set localecho
2、连接服务器并发送请求
2.1 open www.guet.edu.cn 80 //注意端口号不能省略
HEAD /index.asp HTTP/1.0
Host:www.guet.edu.cn
/*我们可以变换请求方法,请求桂林电子主页内容,输入消息如下*/
open www.guet.edu.cn 80
GET /index.asp HTTP/1.0 //请求资源的内容
Host:www.guet.edu.cn
2.2 open www.sina.com.cn 80 //在命令提示符号下直接输入telnet www.sina.com.cn 80
HEAD /index.asp HTTP/1.0
Host:www.sina.com.cn
3 实验结果:
3.1 请求信息2.1得到的响应是:
HTTP/1.1 200 OK //请求成功
Server: Microsoft-IIS/5.0 //web服务器
Date: Thu,08 Mar 200707:17:51 GMT
Connection: Keep-Alive
Content-Length: 23330
Content-Type: text/html
Expries: Thu,08 Mar 2007 07:16:51 GMT
Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADEDJKLKKAJEOIMMH; path=/
Cache-control: private
//资源内容省略
3.2 请求信息2.2得到的响应是:
HTTP/1.0 404 Not Found //请求失败
Date: Thu, 08 Mar 2007 07:50:50 GMT
Server: Apache/2.0.54 <Unix>
Last-Modified: Thu, 30 Nov 2006 11:35:41 GMT
ETag: "6277a-415-e7c76980"
Accept-Ranges: bytes
X-Powered-By: mod_xlayout_jh/0.0.1vhs.markII.remix
Vary: Accept-Encoding
Content-Type: text/html
X-Cache: MISS from zjm152-78.sina.com.cn
Via: 1.0 zjm152-78.sina.com.cn:80<squid/2.6.STABLES-20061207>
X-Cache: MISS from th-143.sina.com.cn
Connection: close
失去了跟主机的连接
按任意键继续...
4 .注意事项:1、出现输入错误,则请求不会成功。
2、报头域不分大小写。
3、更深一步了解HTTP协议,可以查看RFC2616,在http://www.letf.org/rfc上找到该文件。
4、开发后台程序必须掌握http协议
摘自:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
——————————————————————telnet与http——————————————————————
在cmd命令下输入
telnet localhost 8080 回车
//先写好下面两行,再粘贴到命令行上,粘贴在上面的内容是看不见的,两次回车后就有结果了。
POST /test/login.jsp HTTP/1.1
Host:localhost 回车 回车(两次回车得到结果)
结果如下:(以下是自己写的jsp页面,在这里通过post方法显示得到)
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=00CFCBA663892EC713FD9BDB7A02BA32; Path=/test/; HttpOnly
Content-Type: text/html;charset=UTF-8
Content-Length: 867
Date: Wed, 18 Apr 2012 14:07:54 GMT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://localhost:80/test/">
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="Login" method="post">
username:<input type="username" name="username"><br>
password:<input type="password" name="password"><br>
<input type="submit" value="submit">
<input type="reset" value="reset"><br>
</form>
</body>
</html>
********************************************************************************************************************************
//Login为web.xml中url-pattern中的值
telnet localhost 8080 回车
GET /test/Login HTTP/1.1
Host:localhost 回车 回车
(结果省略。。。)
telnet www.sina.com.cn 回车
GET /index.html HTTP/1.1
Host:www.sina.com.cn 回车 回车
(结果省略。。。)
HEAD /index.html HTTP/1.1 回车
Host:www.sina.com.cn 回车 回车(两次回车得到结果)
(结果省略。。。)
以上来自:http://blog.csdn.net/zklxuankai/article/details/7475427
备注:输入“GET / HTTP/1.1”,表示向该域名索要首页根文件,使用的协议是HTTP的1.1版本。
当然也可更直接这样telnet:
—————————发送telnet的注意事宜如下——————————
HTTP 概述
*************************************************
HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在http和其他几种网络协议
[1]多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。 通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。HTTP协议的网页
HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。 通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。
*****************************************************
HTTP 与 TCP
HTTP是应用层协议,TCP是传输层协议
数据包在网络传输过程中,HTTP被封装在TCP包内
所以建立HTTP连接时,首先要TCP三次握手。
利用telnet可以与服务器建立http连接,获取网页,实现浏览器的功能。
它对于需要对http header进行观察和测试到时候非常方便。因为浏览器看不到http header。
步骤如下:
1. 运行/cmd
2. telnet www.baidu.com 80
3. 组合键“Ctrl + ]”打开回显,回车。
4. 输入GET /index.html HTTP/1.1 并2次回车。
这时就应该可以看到http response了,包括了header和body。
/*因为window自己带到telnet在输入内容的时候看不到输入的内容,可以下载putty并选用raw tcp connection的方式进行连接。
效果一样,但是毕竟方便好用。*/
需要注意到事情如下:
1. GET 和 HTTP必须大写,因为很多服务器要求大写,小写的话在一些服务器会造成连接失败。
2. HTTP1.1的话,还需要加上一行写明host, 这是http1.1的要求。
GET /officers.html HTTP/1.1
host: www.csua.berkeley.ed
3. 2次回车表示把request发出去,因为http request是以最后一行为空行来表示结束的。
4. 一些比较聪明的网站会屏蔽掉不是浏览器的http request, 这时我们就需要假扮浏览器,需要set的User-agent。
GET /officers.html HTTP/1.1
host: www.csua.berkeley.ed
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
4.1 连接一次即断开
connection:close Http1.1 默认链接为长连接状态keep-alive,若要更改为链接一次即断开
在请求中加入以上状态。
5. 抓取http连接的package可以使用Wireshark,获取浏览器的http request和response,再用telnet模拟浏览器进行连接
上述来自:http://wenku.baidu.com/view/fe0f351fff00bed5b9f31ddc.html###
上面谈到伪装浏览器,有curl更方便。
参考:http://wenku.baidu.com/view/42dc2b18fad6195f312ba62a.html
实验目的及原理:
利用MS的telnet工具,通过手动输入http请求信息的方式,向服务器发出请求,服务器接收、解释和接受请求后,会返回一个响应,该响应会在telnet窗口上显示出来,从而从感性上加深对http协议的通讯过程的认识。
实验步骤:
1、打开telnet
1.1 打开telnet
运行-->cmd-->telnet
1.2 打开telnet回显功能
set localecho
2、连接服务器并发送请求
2.1 open www.guet.edu.cn 80 //注意端口号不能省略
HEAD /index.asp HTTP/1.0
Host:www.guet.edu.cn
/*我们可以变换请求方法,请求桂林电子主页内容,输入消息如下*/
open www.guet.edu.cn 80
GET /index.asp HTTP/1.0 //请求资源的内容
Host:www.guet.edu.cn
2.2 open www.sina.com.cn 80 //在命令提示符号下直接输入telnet www.sina.com.cn 80
HEAD /index.asp HTTP/1.0
Host:www.sina.com.cn
3 实验结果:
3.1 请求信息2.1得到的响应是:
HTTP/1.1 200 OK //请求成功
Server: Microsoft-IIS/5.0 //web服务器
Date: Thu,08 Mar 200707:17:51 GMT
Connection: Keep-Alive
Content-Length: 23330
Content-Type: text/html
Expries: Thu,08 Mar 2007 07:16:51 GMT
Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADEDJKLKKAJEOIMMH; path=/
Cache-control: private
//资源内容省略
3.2 请求信息2.2得到的响应是:
HTTP/1.0 404 Not Found //请求失败
Date: Thu, 08 Mar 2007 07:50:50 GMT
Server: Apache/2.0.54 <Unix>
Last-Modified: Thu, 30 Nov 2006 11:35:41 GMT
ETag: "6277a-415-e7c76980"
Accept-Ranges: bytes
X-Powered-By: mod_xlayout_jh/0.0.1vhs.markII.remix
Vary: Accept-Encoding
Content-Type: text/html
X-Cache: MISS from zjm152-78.sina.com.cn
Via: 1.0 zjm152-78.sina.com.cn:80<squid/2.6.STABLES-20061207>
X-Cache: MISS from th-143.sina.com.cn
Connection: close
失去了跟主机的连接
按任意键继续...
4 .注意事项:1、出现输入错误,则请求不会成功。
2、报头域不分大小写。
3、更深一步了解HTTP协议,可以查看RFC2616,在http://www.letf.org/rfc上找到该文件。
4、开发后台程序必须掌握http协议
摘自:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
——————————————————————telnet与http——————————————————————
在cmd命令下输入
telnet localhost 8080 回车
//先写好下面两行,再粘贴到命令行上,粘贴在上面的内容是看不见的,两次回车后就有结果了。
POST /test/login.jsp HTTP/1.1
Host:localhost 回车 回车(两次回车得到结果)
结果如下:(以下是自己写的jsp页面,在这里通过post方法显示得到)
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=00CFCBA663892EC713FD9BDB7A02BA32; Path=/test/; HttpOnly
Content-Type: text/html;charset=UTF-8
Content-Length: 867
Date: Wed, 18 Apr 2012 14:07:54 GMT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://localhost:80/test/">
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="Login" method="post">
username:<input type="username" name="username"><br>
password:<input type="password" name="password"><br>
<input type="submit" value="submit">
<input type="reset" value="reset"><br>
</form>
</body>
</html>
********************************************************************************************************************************
//Login为web.xml中url-pattern中的值
telnet localhost 8080 回车
GET /test/Login HTTP/1.1
Host:localhost 回车 回车
(结果省略。。。)
telnet www.sina.com.cn 回车
GET /index.html HTTP/1.1
Host:www.sina.com.cn 回车 回车
(结果省略。。。)
HEAD /index.html HTTP/1.1 回车
Host:www.sina.com.cn 回车 回车(两次回车得到结果)
(结果省略。。。)
以上来自:http://blog.csdn.net/zklxuankai/article/details/7475427
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/6932/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2014-9-19 23:17
评论列表