我是一个服务器,名字是www.lingyv.cn,门牌号是121.42.155.28,每天得工作就是跟各种浏览器打交道。他们总来我这要求取信息、存信息、删信息。可惜我才疏学浅,只稍微学过HTTP协议,所以看得懂用HTTP规定格式发过来的请求信,当然,回复他的时候也是用HTTP规范写回信。
我家有一个看门的人(服务器进程),每当有浏览器想找我时,他就会过来通知我。
这不,说着说着他就进来了。
“报~~~有浏览器找您。”
“好,跟他连线。”
OK,TCP连接已建立……
哒哒哒………打印机将请求报文打印了出来。
我拿过来看了看。
只见第一行写着。
“GET /student/composition/index.html HTTP/1.1”
“恩,这是用1.1版本HTTP规范写的。原来是找我要student文件夹里composition文件夹中的index.html文件啊。”我在心里默念。
转眼扫到第二行:“Host:www.lingyv.cn ”恩,是找我的没错。接着往下看
第三行:“Connerction:keep-alive”噢,他跟我说给他发完index.html后不要关闭跟他的连接
接着看第四、第五行:
“Accept:text/html”
“Accept-Language:zh-CN”
这是在告诉我他能接收哪些类型的信息以及他能接收的语言啊。然后看最后一行:
“User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36”
噢~~~这是在跟我表明自己的身份啊。
看完请求报文。我已经明白了这位浏览器客户的需求。赶紧找到index.html文件,给这位浏览器客户回信(响应报文)。
首先表明我使用的规范以及他的请求是成功的。
“HTTP/1.1 200 OK”
然后表明我接受获取他获取文件的请求
“Accept-Ranges: bytes”
接着告诉他我给他文件的类型
“Content-Type:text/html; charset=UTF-8“
写上日期时间:
“Date:Wed, 13 Apr 2016 13:17:32 GMT“
告诉他我的个人信息:
“Server:Apache/2.0.61 (Unix)”
告诉他内容的长度:
“Content-Length:1350”
……
把这些声明(响应头)写完了。接下来空一行把他想要的文件内容copy进去(响应体)。
好了,所有东西写完,我就把信(响应报文)给这位浏览器客户发了过去,让他得到自己想要的文件信息。