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


技术架构

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)来标识

http


过程解析

http一次请求的过程大概如下:

  • 用户在 浏览器 输入 www.google.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

php 的 http

php大部分 用于web服务器 所以php开发者接触最多的协议也就是基于tcp/ip协议的http协议
在php初级程序员中 其实没有详细的了解过http协议 但是可以通过浏览器的 f12->network 去查看http协议具体的请求头 以及服务端发送的响应头