原创

TCP_IP分层模型之应用层http详解

概念

HTTP(HyperText Transfer Protocol)协议是基于 TCP 的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输 HTML 页面的内容。默认端口是 80。

TTP 协议的特点

  1. HTTP 协议是无状态的 就是说每次 HTTP 请求都是独立的,任何两个请求之间没有什么必然的联系。但是在实际应用当中并不是完全这样的,引入了 Cookie 和 Session 机制来关联请求。
  2. 多次 HTTP 请求 在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应 HTML 页面,然后浏览器收到响应之后发现 HTML 页面还引用了其他的资源,例如,CSS,JS 文件,图片等等,还会自动发送 HTTP 请求这些需要的资源。现在的 HTTP 版本支持管道机制,可以同时请求和响应多个请求,大大提高了效率。
  3. 基于 TCP 协议 HTTP 协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于 TCP 实现的。现在使用的版本当中是默认持久连接的,也就是多次 HTTP 请求使用一个 TCP 连接。

Http 报文头

1.请求报文

请求报文
请求报文

2.响应报文

响应报文
响应报文

3.method: 请求方法,标明客户端希望服务器对资源执行的动作

  • GET:从服务器获取一个资源
  • HEAD:只从服务器获取文档的响应首部
  • POST:向服务器输入数据,通常会再由网关程序继续处理
  • PUT:将请求的主体部分存储在服务器中,如上传文件
  • DELETE:请求删除服务器上指定的文档
  • TRACE:追踪请求到达服务器中间经过的代理服务器
  • OPTIONS:请求服务器返回对指定资源支持使用的请求方法

4.status:标记请求处理过程中发生的情况,如 200,301, 302, 404, 502

  • 200: 成功,请求数据通过响应报文的 entity-body 部分发送;OK
  • 301: 请求的 URL 指向的资源已经被删除;但在响应报文中通过首部 Location 指明了资源现在所处的新位置;Moved Permanently
  • 302: 响应报文 Location 指明资源临时新位置;Moved Temporarily
  • 304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
  • 401: 需要输入账号和密码认证方能访问资源;Unauthorized
  • 403: 请求被禁止;Forbidden
  • 404: 服务器无法找到客户端请求的资源;Not Found
  • 500: 服务器内部错误;Internal Server Error
  • 502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
  • 503: 服务不可用,临时服务器维护或过载,服务器无法处理请求
  • 504: 网关超时

5.图示为 http 跟踪流实例,可以很好的了解一个 http 的请求和响应流程

http跟踪流实例
http跟踪流实例
正文到此结束