从零开始搭建Flask网站之一:HTTP协议之报文

HTTP协议之报文

很遗憾, 最近两个月可能不会再做flask网站的内容了, 一是因为朋友的项目有该动; 二是最近工作需要我研读下HTTP协议,基本占用了所有的非工作时间,没有时间完成这个项目。所以未来几周会持续更新HTTP协议内容,基本就是HTTP权威指南的一些总结

1. 概念

媒体类型:  因特网上有数以千计的数据类型,HTTP会给每种类型打上MIME(Multipurpose Internet Mail Extension)类型; 常见的一种情况是服务器在返回结果中说明当前的返回结果类型: 
  • HTML格式的文本文档:text/html
  • ASCII文本文档:text/plain
  • JEPG格式图片:image/jpeg
  • GIF 格式图片:  image/git
  • MS的powerpoint:application/vnd.ms-powerpoint

URI, URL, URN:
  • 每个web服务器资源都有一个名字,这样客户端可以准确找到感兴趣的资源,资源名字就叫做URI(统一资源标识符)
  • URL(统一资源定位符)是URI最常见的形式,描述了一台特定服务器上某资源的特定位置
  • URN(统一资源名),是特定内容的唯一名称。优点是与资源所在地无关,资源可以四处搬移,仍处于试验阶段
事务: 一个HTTP事务由一条请求命令和一个响应结果组成,通信通过HTTP报文进行。(也就是说,web浏览器会发送一系列HTTP事务来获取并显示一个页面)

方法: HTTP支持不同的请求命令,这些命令被成为HTTP方法, 只说几个特殊的:
  • PUT  将来自客户端的数据存储到一个命名的服务器资源中
  • POST 将客户端数据发送到一个服务器网关应用程序
 状态码: 每个HTTP响应都会携带状态码:
  • 200 OK
  • 302 Redirect
  • 404 NOT FOUND
报文: 由一行行简单字符串组成,HTTP报文是存文本,而不是二进制(HTTP1.1),其格式包含:
  • 起始行, 报文的第一行。在请求报文中说明要做什么,在响应报文中说明发生了什么
  • 首部字段, 格式为(名字: 关键字)组成,换行加回车作为一行结束; 首部以一个单独的空行作为结束
  • 主体, 主题可以为任何类型的数据
连接: HTTP作为应用层,底层采用TCP/IP协议;由于采用的是TCP/IP协议,因此需要IP(网址)+端口号来建议一条TCP/IP连接,因此网址都有指定的(或者默认80)端口

HTTP版本:

  • 1.1是当前时用的版本, 其语意明确,性能优良;
  • HTTP-NG(2.0)是1.1的发展,其重点关注的是性能的大幅优化,以及更强大的服务逻辑远程执行框架;最近看着chrome已经说即将支持2.0了~值得期待!!
WEB组件:

  • 代理:位于客户端和服务器之间的HTTP中间实体,接受用户请求并将请求传发给服务器;
  • web缓存(代理缓存)是一种特殊的HTTP代理服务器,它将经过代理传送的文档复制保存,下一个请求统一文档的客户端可以直接享受缓存的私有副本提供的服务
  • 网关,特殊的服务器,作为其他服务器的中间实体使用;通常用于将HTTP流量转化为其他的协议(FTP);
  • 隧道是建立起来之后,就会再两条连接只见对原始数据进行盲转发的HTTP程序。HTTP隧道通常在一条或者多条HTTP连接上转发非HTTP数据,转发时不会被窥探;最常见的一种用途是,通过TTP连接承载加密的安全套接字层(SSL)流量,这样SSL流量就可以穿过只允许web流量通过的防火墙了;
  • agent代理,代表用户发起HTTP请求的客户端应用程序

你可能感兴趣的:(从零开始搭建Flask网站之一:HTTP协议之报文)