学习《图解HTTP》有感
HTTP協議的出現主要是為了解決文本傳輸的難題(大家互相共享文件沒有一個規范),最初的設計理念是:借助多文檔之間的關聯形成超文本,成為相互參閱的WWW(萬維網)
計算機和網絡設備要通信,如何探測設備,怎么開始通信,什么語言,什么時候結束通信,一系列都要有規范,統稱為TCP/IP協議族(包含HTTP,TCP,IP,UDP,DNS)
與互聯網相關的協議加起來統稱為TCP/IP,也有其他兩種定義,這里不贅述。
TCP/IP協議按層次分為應用層,傳輸層,網絡層,數據鏈路層
分層的好處:1.每層有修改只修改某一層 2.分開設計,設計簡單
應用層:決定了向用戶提供應用服務時通信的活動(FTP,DNS),HTTP也處于這一層
傳輸層:傳輸層對上層應用層,提供處于網絡連接中的兩臺計算機進行數據傳輸(TCP,UDP)
網絡層:處理網絡上流動的數據包,規定了數據包通過哪條路徑傳給對方(IP協議:把各種數據包傳送給對方,需要知道IP地址和MAC地址)
鏈路層:處理連接的硬件部分,通俗理解為服務于ip包的交通工具
訪問一個頁面的過程:客戶端在應用層發出請求,之后傳輸層把這個請求分割成多個報文,各報文打上序號,到網絡層加上mac地址,發給鏈路層,鏈路層傳給對面,對面一層一層拆包刪首部東西。
ARP協議:根據對方的IP地址反查出對應的MAC地址
發送信息像寄快遞,沒法知道完整的動向,一直中轉。
TCP協議:將信息拆分為報文段(拆分就是可靠的字節流服務),并確定對方一定收到。確保方法:三次握手
發送端發帶有syn標志的包,接收端收到之后發帶syn/ack標志的包,發送端發帶有ack標志的包,任意階段收不到都以相同順序再發包。
DNS:域名到IP之間的解析服務
請求報文:請求方法,uri,協議版本,首部字段,內容實體
響應報文,協議版本,狀態碼,原因短語,日期,首部字段,主體
HTTP是 不保存狀態的實體,有時需要保存狀態,比如登錄京東之后買東西,這就有了cookie
持續連接:以前傳輸的數據較少,每次傳輸完一個東西就要TCP連接一次,比如發送一個文件和圖片,都會分別建立TCP連接,增加開銷,因此持續連接就很有必要。
持續連接(keep-alive)特點:只要任一端沒有明確提出斷開連接,則保持TCP連接狀態。
持續連接使管線化成為可能,不用等待也可以發下一個請求,做到同時并行發送多個請求。
一個web服務器上搭建多個web站點,訪問這個服務器上的兩個網站時,DNS解析之后IP一樣,因此發送時要帶具體的uri信息
?
代理:接受客戶端請求,轉發給服務端。
每次代理之后都會在加入代理服務器的Via首部字段再轉發
網關:接受客戶端請求信息,像源服務器一樣處理。網關能使通信道路上的服務器提供非HTTP協議服務
持有資源實體的服務器稱為源服務器
隧道:在相隔遠的客戶端和服務器之間進行中轉,并保持雙方通信連接的程序。主要是確保客戶端和服務器安全通信
使用代理服務器的原因:利用緩存減少網絡寬帶的流量,內部對特定網站的訪問控制。
代理主要按兩種方法分類:是否利用緩存,是否會修改報文
HTTPS:HTTP+SSL,SSL:第三方機構頒布的證書,確定對方身份
HTTPS=HTTP+加密+認證+完整性保護
共享密鑰只有一個公鑰,是對稱加密。公開密鑰采用非對稱加密,發送者用公開的公鑰加密,接收者用私有密鑰解密。
HTTPS采用兩個機制混合的方法,結合效率和安全性,在交換密鑰環節使用公開密鑰加密方法,之后的建立通信交換報文階段則使用共享密鑰加密方式。
但是,公開密鑰加密還是有一定問題的,比如建立公開密鑰通信時,原有的公開密鑰被攻擊者替換掉了,無法證明收到的公開密鑰就是原先發送者發的。
因此引入了數字證書
客戶端也有證書,但沒法讓所有用戶統一搞,所以有的特殊業務才會引用,例如網銀的終端,有客戶端證書。有個問題是這只能證明客戶端的存在,而無法證明是本人的使用。
?
HTTPS慢主要是SSL,SSL兩個方面慢,一種是通信慢,因為加入了SSL通信,另一方面是因為加密處理,cpu負載大
很多不用https的原因,加密消耗資源,證書要錢。
?
總結
以上是生活随笔為你收集整理的学习《图解HTTP》有感的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【剑指offer】面试题62:圆圈中最后
- 下一篇: Leetcode--130. 被围绕的区