计网自顶向下(应用层)——HTTP

HTTP请求报文

一个典型的HTTP请求报文:

GET  /somedir/page.html HTTP/1.1

Host: www.someschool.edu

Connection: close

User-agent: Mozilla/5.0

Accept-language: fr

HTTP报文的第一行叫做请求行,后继的行叫做首部行。请求行有3个字段:方法字段、URL字段和HTTP版本字段。其中方法字段(上述报文里的方法字段是GET),包括GET、POST、HEAD、PUT和DELETE。当浏览器请求一个对象时,使用GET方法,在URL字段带有请求对象的标识。本例中该浏览器正在请求对象/somedir/page.html。其版本字段是自解释的;在本例中,浏览器实现的是HTTP/1.1版本。

首部行Host :www.someschool.edu指明了对象所在的主机。close首部行表示:服务器不希望麻烦地使用持续连接,要求服务器在发送完被请求的对象后就关闭这条连接。User-agent表示用户代理,即向服务器发送请求的浏览器的类型。这里的浏览器类型是Mozilla/5.0,即Firefox浏览器。

而首部行中应该有一个“实体体”(entity body)。使用GET方法实体体为空,使用POST方法才使用该实体体。比如用户向服务器请求Web页面,但Web页面的特定内容依赖于用户在表单字段中输入的内容,而方法字段值为POST时,实体体中包含的是用户在表单字段中的输入值。

当然,用表单生成的请求报文不是必须使用POST方法。HTML表单经常使用GET方法,比如填写两个字段,分别填写“monkeys”和“bananas”,这样URL结构为www.somesite.com/animalsearch? monkeys&bananas.

HTTP响应报文

HTTP/1.1 200 OK
Connection : close
Date : Tue,09 Aug 2011 15:44:04 GMT
Server : Apache/2.2.3(CentOS)
Last-Modified : Tue, 09 Aug 2011 15:11:03 GMT
Content-Length : 6821
Content-Type : text/html
(data data data data data ...)

状态码及其相应的短语指示了请求结果。
200 OK:请求成功,信息在返回的响应报文中。
301 Moved Permanently : 请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行中。客户软件将自动获取新的URL。
400 Bad Request : 通用差错代码,指示该请求不能被服务器理解。
404 Not Found : 请求的文档不在服务器上。
505 HTTP Version Not Supported : 服务器不支持请求报文使用的HTTP协议版本。

Cookie
cookie技术有4个组件:
1. 在HTTP响应报文中的一个cookie首部行 2. 在HTTP请求报文中的一个cookie首部行
3. 在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
4. 位于Web站点的一个后端数据库

假设Susan在家中PC使用IE访问亚马逊。假定她已经访问过eBay站点。当请求报文到达该Amazon Web 服务器时,该Web站点将产生一个唯一识别码,并以此作为索引在它的后端数据库中产生一个表项。接下来Amazon web服务器用一个包含Set-cookie:首部的HTTP响应报文对Susan的浏览器进行响应,其中Set-cookie:首部含有该识别码。
当Susan的浏览器收到了该HTTP响应报文时,它会看到Set-cookie:首部。该浏览器在它管理的特定cookie文件中添加一行,包括服务器主机名和在Set-cookie:首部中的识别码。当Susan继续浏览Amazon网站时,每请求一个web页面,其浏览器就会从cookie文件中获取她对这个网站的识别码,并放到请求报文中包括识别码的cookie首部行中。发往Amazon服务器的每个HTTP请求报文都包括以下首部行:cookie 1678.所以Amazon服务器可以跟踪用户1678的活动。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值