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一次请求的过程大概如下:
用户在 浏览器 输入 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协议具体的请求头 以及服务端发送的响应头
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题