[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)來標識。

<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
- 提問的藝術