应用层
Web和HTTP
HTTP报文格式
HTTP响应报文
下面提供一个经典的响应报文
该响应报文分为三部分:一个状态行、六个首部行,然后是实体体(表现为data data)
实体体是报文的主要部分,它包括了所请求的对象本身
状态行分为三个字段:协议版本字段、状态码和相应状态信息
首部行:
Date指的是服务器从文件系统中检索到请求对象,将该对象插入响应报文并发送响应报文的时间
Server指的是服务器类型
Last-Modified指的是请求对象创建时间或最后修改时间
Content-Length指的是对象的字节数
常见状态码和信息:
cookie
在用户首次访问某个使用了cookie的站点时,站点会返回一条包含Set cookie的首部,并为该用户设定一个唯一的cookie值,用户接到该报文后,浏览器会读取到Set cookie行,并且获得后面的值,浏览器自动在用户端系统里的cookie文件中添加该网站信息及对应的cookie值
在下一次访问的时候,用户的请求报文中会包含cookie首部行,这样服务器就能从对应的cookie值中获得用户的浏览信息
条件get
代理服务器可以保存用户最近请求的对象,但在一段时间后该对象可能在原始服务器被更改了,如果这时用户再次请求该对象,代理服务器会使用一个条件get连接原始服务器看对象是否更新
这是用户首次访问该对象,缓存器会将服务器响应报文中的对象保存下来
用户再次访问该对象时,缓存器会向原始服务器发送
如果该对象未被更改,服务器返回
SMTP和HTTP
HTTP主要是一个拉协议,意为某些人在Web上装载一些信息,而用户通过HTTP拉取这些信息
SMTP是一个推协议,即发送邮件服务器通过SMTP将报文推向接收邮件服务器
注意到,在接收邮件服务器向接受用户的代理传输文件的时候,使用的不是SMTP协议,因为在正常情况来说,接受用户的客户端不会一直开着,在打开时其代理才会向接收服务器请求更新报文,这时无法使用SMTP,因为这个行为是一个拉取信息的行为,而SMTP是一个推协议