HTTP协议摘要

HTTP协议摘要

  • HTTP协议工作在第几层,它下层使用了哪些协议?

HTTP是应用层协议,工作在第5层(TCP/IP协议族)。它的传输层使用的是TCP协议,网络层使用IP协议。

  • HTTP协议是无连接的,其具体含义是什么?

HTTP协议无连接,不代表真的不建立TCP连接。它是基于TCP的,而TCP是面向连接的传输层协议,所以HTTP一定得建立TCP连接,只不过HTTP限制了每次连接只处理客户端的一个请求,响应结束即断开连接,目的是节省传输时间。

  • HTTP是无状态的。

HTTP对事务的处理没有记忆能力。如果后续操作需要前面的信息,那么前面的信息也必须重传。

HTTP消息结构

分为客户端请求消息的结构和服务器响应消息的结构:

请求消息

  • 请求行: 请求方法(GET/POST/PUT/DELETE/....) URL 协议版本
  • 请求头部: 由多行组成,每行: 头部字段名:值。
  • 请求数据: 具体的请求数据。

请求方法

  • GET:请求URL标识的资源
  • POST:请求URL标识的资源,同时附加额外的数据给服务器,通常用来提交表单。
  • HEAD:和GET类似,知识响应中不必真的回复具体的内容,用于获取报头。
  • PUT: 请求服务器存储一个资源,并用URL标识该资源。
  • DELETE:请求服务器删除URL标识的资源。
  • 其它:TRACE/OPTIONS 不是很常用,用时自查。

请求头部:

  • Accpt-Charset: 客户端指定自己能接收什么字符集。
  • Accept-Encoding:接受什么编码。
  • Authorization:如果服务器返回401(未授权时),可以添加该字段认证自己有权限
  • ....

响应消息

  • 状态行: 号码(200/404/503/.......)
  • 消息报头:后面详解
  • 响应正文:通常是html文件。

响应头部

  • Allow:服务器支持哪些请求方法:GET?POST?..
  • Content-Encoding: 文档的编码方法。
  • Content-Length:内容长度,只有当浏览器使用持久HTTP连接时才需要这个数据。
  • Content-Type: 响应正文术语什么MIME类型,text/html? 等等。。。
  • Date: 当前GMT时间。
  • Refresh:浏览器应该在多少时间后刷新文档,以秒计。编程时,函数setHeader("Refresh","3;URL=http://another_page")可以在3秒钟后让浏览器刷新到URL指定的页面,但是这种功能是通过设置html的 META DATA来实现的,是html编写者写的。而对于Servlet, 才可以直接设置HTTP Refresh头部。
  • Server:Server的名字。
  • Set-Cookie:设置和页面关联的Cookie,Cookie的含义和作用后面详说。

常用状态吗的含义

  • 200:正常
  • 301:资源被转移
  • 403:服务器拒绝你的访问。
  • 404:资源不存在
  • 500:服务器内部错误
  • 503:服务器暂时出错了,一段时间后也许可以使用。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容