## 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",以及返回的內容,如請求的文件、錯誤消息、或者其它信息。
:-: 
## 過程解析
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響應數據,解析響應文本類型,解析數據,斷開連接
- PHP
- PHP 核心架構
- PHP 生命周期
- PHP-FPM 詳解
- PHP-FPM 配置優化
- PHP 命名空間和自動加載
- PHP 運行模式
- PHP 的 Buffer(緩沖區)
- php.ini 配置文件參數優化
- 常見面試題
- 常用函數
- 幾種排序算法
- PHP - 框架
- Laravel
- Laravel 生命周期
- ThinkPHP
- MySQL
- 常見問題
- MySQL 索引
- 事務
- 鎖機制
- Explain 使用分析
- MySQL 高性能優化規范
- UNION 與 UNION ALL
- MySQL報錯:sql_mode=only_full_group_by
- MySQL 默認的 sql_mode 詳解
- 正則表達式
- Redis
- Redis 知識
- 持久化
- 主從復制、哨兵、集群
- Redis 緩存擊穿、穿透、雪崩
- Redis 分布式鎖
- RedisBloom
- 網絡
- 計算機網絡模型
- TCP
- UDP
- HTTP
- HTTPS
- WebSocket
- 常見幾種網絡攻擊方式
- Nginx
- 狀態碼
- 配置文件
- Nginx 代理+負載均衡
- Nginx 緩存
- Nginx 優化
- Nginx 配置 SSL 證書
- Linux
- 常用命令
- Vim 常用操作命令
- Supervisor 進程管理
- CentOS與Ubuntu系統區別
- Java
- 消息隊列
- 運維
- RAID 磁盤陣列
- 邏輯分區管理 LVM
- 業務
- 標準通信接口設計
- 業務邏輯開發套路的三板斧
- 微信小程序登錄流程
- 7種Web實時消息推送方案
- 用戶簽到
- 用戶注冊-短信驗證碼
- SQLServer 刪除同一天用戶重復簽到
- 軟件研發完整流程
- 前端
- Redux
- 其他
- 百度云盤大文件下載
- 日常報錯記錄
- GIT
- SSL certificate problem: unable to get local issuer certificate
- NPM
- reason: connect ECONNREFUSED 127.0.0.1:31181
- SVN
- SVN客戶端無法連接SVN服務器,主機積極拒絕
- Python
- 基礎
- pyecharts圖表
- 對象
- 數據庫
- PySpark
- 多線程
- 正則
- Hadoop
- 概述
- HDFS