HTTP协议详解

HTTP协议详解

简介

​ HTTP:超文本传输协议(HyperText transfer Prototcol),是一种用于分布式,协作式和超媒体信息系统的应用层协议。HTTP是万维网数据通信的基础。

​ 它是从web服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。用户通过网页浏览器或其他终端,发送一个HTTP请求到服务器上的指定端口。终端为用户代理程序(user agent),存储资源的应答服务器为源服务器。终端和原服务器之间可能存在多个中间层,如代理服务器、网关等

原理

​ HTTP基于TCP/IP通信协议来传递数据,定义了web客户端如何向web服务器发送请求,以及web服务器如何应答这次请求。也是一种请求/响应模式的协议。

Http请求/响应的步骤:

  1. 客户端连接到web服务器,以访问百度为例:www.baidu.com DNS域名解析为服务器的ip。
  2. 客户端发起TCP请求,通过3次握手建立连接。
  3. 发送HTTP请求,通过TCP连接,客户端发送一个请求报文给服务端,请求报文有三部分组成:
    • 请求行:包括请求方法,URL,协议/版本
    • 请求头
    • 请求体(请求正文)
  4. 服务器响应HTTP请求,服务器根据请求数据定位到资源,通过TCP资源返回响应报文,一个响应报文有三分组成:
    • 状态行: 如 状态码 200
    • 响应头:如 Date、Content-type, 浏览器会根据响应头来解析响应体。
    • 响应体:浏览器解析的数据
  5. 终端(浏览器)根据响应报文来解析响应体,渲染成页面,提供给用户浏览

特点

  1. 是一种基于请求/响应模式的协议。
  2. 无状态:协议对于请求和响应不会进行保存,每一次获取数据都要重新发送一次请求
  3. 无连接:每次连接只处理一个请求,服务器处理完请求并作出响应后,即断开连接。
  4. 灵活:HTTP可以传输任意协议的数据对象,传输类型由Content-type标记

常见的请求方法

  • GET:请求指定的信息,GET请求应该只用在读取数据,而不应该用于产生副作用的操作中
  • POST:想指定资源提交数据进行处理,数据包含在请求体中,POST请求可能会导致资源被修改
  • HEAD:类似GET方法,常用于获取资源的源信息
  • PUT:向资源提交数据,常用于修改资源
  • DELETE:请求服务器删除指定的资源

响应状态码

​ 浏览器向web服务器发送请求时,服务器在响应报文中会包含一个包含HTTP状态码(status code):

状态码分类:

  • 1XX:信息状态码,接受的请求正在处理
  • 2XX:成功状态码,请求正常处理完毕
  • 3XX:重定向状态码,需要进行附加操作以完成请求
  • 4XX:客户端错误状态码,服务器无法处理客户端的请求
  • 5XX:服务器错误状态码,服务器处理请求出错

常见的状态码:

  • 200:客服端请求成功
  • 301:请求资源被永久转移到其他URL
  • 302:临时跳转
  • 400:Bad Request,客户端请求语法有错误,服务器不能处理
  • 401:Unauthorized,请求未授权
  • 403:Forbidden,Web客户端发送的请求被Web服务器拒绝(常见的就是跨域问题)
  • 404:请求的资源不存在
  • 405: Method Not Allowed,请求的方法错误
  • 500:服务器内部错误

其他知识点

在浏览器地址栏输入URL,按下回车后的流程:

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址
  2. 解析出IP地址后,根据IP地址和端口号,和服务器建立TCP连接
  3. 浏览器发出请求文件的HTTP请求,改请求作为TCP三次握手的第三次报文的数据发送给服务器
  4. 服务器对浏览器的请求作出响应,并把对应的html文件发送给浏览器
  5. 释放TCP连接
  6. 浏览器对HTML进行解析并进行渲染

TCP三次握手

  1. 建立连接时,客户端发送syn包(syn=x)到服务器,并进入syn_sent状态,等待服务器确认。syn:同步序列编号
  2. 服务器收到syn包,必须确认客户的syn(ack=x+1),同时自己也发送一个syn包(syn=y),即syn+ack包,服务器进入syn_recv状态
  3. 客户端收到服务器的syn+ack包,向服务器发送确认包ack(ack=y+1),此包发送完毕,服务端和客户端进入连接成功状态(established),完成三次握手。
上一篇:TCP三次握手和四次挥手过程


下一篇:mysql获取当前时间毫秒,经典好文