🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## http协议 超文本传输协议(HTTP,HyperText Transfer Protocol) 是一种用于分布式、协作式和超媒体信息系统的**应用层协议**,是互联网上应用最为广泛的一种网络协议。 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。 > 简单来说,HTTP 就是浏览器(客户端)和网站(服务端)之间传输信息使用的**协议**。 ## 技术架构 HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用**TCP协议**。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如 HTML 文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。 尽管**TCP/IP协议**是互联网上最流行的应用,但是在**HTTP协议**中并没有规定它必须使用或它支持的层。事实上HTTP可以在任何互联网协议或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用,所以其在TCP/IP协议族使用TCP作为其传输层。 通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。 :-: ![](https://img.kancloud.cn/0b/0e/0b0e670f9cd51237e293d994c26fca8f_399x301.png) ## 过程解析 http 一次请求的过程大概如下: * 用户在浏览器输入 `www.xxxxxx.com` * DNS 服务器解析/或者本机hosts,路由器hosts对比 获得ip * 浏览器访问默认端口80,则访问的tcp地址为 ip:80 * tcp协议3次握手,建立连接 * 发送一个http request请求头 * 服务器获得http request请求头,表明该次访问为http访问,解析http请求头,获得请求类型,请求格式,以及请求数据(cookie,get,post数据) * 服务器发送response响应数据,主动断开 * 浏览器接收response响应数据,解析响应文本类型,解析数据,断开连接