一起来看看http这个应用层协议是怎么运作的吧!
简易服务器。
1)首先用有着“瑞士军刀”美誉的nc工具建立一个服务器,这个服务器将会输出所有接受到的内容。
#
nc -l 127.0.0.1 80
2)然后用浏览器访问127.0.0.1,这时浏览器会显示正在加载,是的,咱们的nc服务器目前只管接受,并输出在标准输出,没有返回给客户端(即浏览器)。
3)返回来看看nc的标准输出吧:
-
[root@pingshun Desktop]# nc -l 127.0.0.1 80
-
GET / HTTP/1.1
-
Host: 127.0.0.1
-
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:34.0) Gecko/20100101 Firefox/34.0
-
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
-
Accept-Language: en-US,en;q=0.5
-
Accept-Encoding: gzip, deflate
-
Connection: keep-alive
-
If-Modified-Since: Mon, 11 Aug 2014 17:52:47 GMT
-
If-None-Match: "409e4-12c-5005e39039c78"
-
Cache-Control: max-age=0
输出的便是浏览器发给服务器的请求,可以看到请求方式为GET 请求uri是/ 协议是http/1.1 Host(主机) 127.0.0.1 (本地地址)
模拟客户端:
一个基本的http协议就是这样,下面我们访问来验证一下。
#
nc 80 ##此时把nc用作客户端 (也可用telnet代替)
GET / HTTP/1.1 ##注意有两个空格
Host: ##一个空格
然后敲两次回车(这也是http协议的一部分,代表http头的结束)
下面是操作演示:
-
[root@pingshun Desktop]# nc www.baidu.com 80
-
GET / http/1.0
-
Host: www.baidu.com
-
-
HTTP/1.1 200 OK
-
Date: Mon, 11 Aug 2014 11:23:13 GMT
-
Content-Type: text/html; charset=utf-8
-
Connection: Close
-
Vary: Accept-Encoding
-
Set-Cookie: BAIDUID=890DE889BC08F2B4604E95B66E13D8A6:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
-
Set-Cookie: BDSVRTM=0; path=/
-
Set-Cookie: BD_HOME=0; path=/
-
P3P: CP=" OTI DSP COR IVA OUR IND COM "
-
Cache-Control: private
-
Cxy_all: baidu+95669326e28ac777484e24416abbe01d
-
Expires: Mon, 11 Aug 2014 11:22:35 GMT
-
X-Powered-By: HPHP
-
Server: BWS/1.1
-
BDPAGETYPE: 1
-
BDQID: 0x9f37349f00003867
-
BDUSERID: 0
-
-
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><link rel="dns-prefetch" href="//s1.bdstatic.com"/><link rel="dns-prefetch" href="//t1.baidu.com"/><link rel="dns-prefetch" href=。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。省略后面的html内容。
就会看到返回给你的主页内容!
阅读(934) | 评论(0) | 转发(0) |