[TOC]
# http协议
******
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。设计 HTTP 最初的目的是为了提供一个发布和接收 HTML 页面的方法。1960年美国人 Ted Nelson 构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了 HTTP 超文本传输协议标准架构的发展根基。Ted Nelson 组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force)共同合作研究,最终发布了一系列的 RFC,其中著名的 RFC 2616 定义了 HTTP 1.1。
<br />
## 技术架构
HTTP 是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用 Web 浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为 80)的 HTTP 请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如 HTML 文件和图像。(我们称)这个应答服务器为源服务器(origin server)。
在用户代理和源服务器中间可能存在多个中间层,比如代理、网关或者隧道(tunnels)。尽管 TCP/IP 协议是互联网上最流行的应用,HTTP 协议并没有规定必须使用它和(基于)它支持的层。事实上,HTTP 可以在任何其他互联网协议上,或者在其他网络上实现。HTTP 只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
通常,由 HTTP 客户端发起一个请求,建立一个到服务器指定的端口(默认是80端口)的 TCP 连接。HTTP 服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如“HTTP/1.1 200 OK”,和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
HTTP 使用 TCP 而不是 UDP 的原因在于(打开)一个网页必须传送很多数据,而 TCP 协议提供传输控制,按顺序组织数据,和错误纠正。
通过 HTTP 或者 HTTPS 协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。
![](https://box.kancloud.cn/251858c03adbbc37b41db444ad7c92a5_396x300.jpg)
<br />
## 过程解析
http 一次请求过程大概如下:
* 用户在浏览器输入www.easyswoole.com
* dns服务器解析/或者本机 hosts,路由器 hosts 对比获得 ip
* 浏览器访问默认端口80,则访问的 tcp 地址为 ip:80
* tcp协议3次握手,建立连接
* 发送一个 http request 请求头
* 服务器获得 http request 请求头,表明该次访问为 http 访问,解析 http 请求头,获得请求类型,请求格式,以及请求数据(cookie、get、post数据)
* 服务器发送 response 响应数据,主动断开
* 浏览器接收 response 响应数据,解析响应文本类型,解析数据,断开连接
> https协议中,在请求以及响应时多了一层 tls,ssl 加密解密协议,默认端口从 80 变成了 443
<br />
## phper中的http
由于 php 大部分时候都是用于 web 服务器,所以 php 开发者接触最多的协议也就是基于 tcp/ip 协议的 http 协议了。在 php 初级程序员中,其实没详细的了解过 http 协议,但是可以通过浏览器的 f12->network 去查看 http 协议具体的请求头,以及服务端发送响应头。
- 引言
- Introduction
- 运行模式
- php-fpm
- php-cli
- 基础介绍
- 网络协议
- ip
- tcp
- tcp
- http
- webSocket
- udp
- port端口
- 会话管理
- cookie
- session
- api/token
- linux基础
- lnmp安装
- 命令
- 进程管理
- 扩展安装
- 端口监控
- 防火墙说明
- php7.0
- 部分新特性
- php回调/闭包
- 回调事件
- 闭包/匿名函数
- php多进程
- 多进程开启
- 进程通信
- 进程信号
- 僵尸进程
- 孤儿进程
- 守护进程
- 同步/异步
- 阻塞/非阻塞
- 协程
- Swoole
- 初始Swoole
- 运行机制
- 生命周期
- composer使用
- EasySwoole
- 设计理念
- 组件说明
- 运行过程
- demo
- 提问的艺术