http是基於tcp/ip協議的一種傳輸協議
tcp 三次握手:
客戶端發資料給伺服器
伺服器收到資料反饋到客戶端表示收到
客戶端收到服務端返回的資料,傳送確認收到
tcp 四次揮手斷開連線
在客戶端給服務端傳送了斷開請求後, 客戶端還可以繼續給服務端傳送請求,但服務端不再給客戶端傳送訊息
socket 套接字是對tcp/ip協議的封裝
http的工作流程
第一步:位址解析,從url中解析協議名稱,主機名,埠號和對應的頁面位址。
第二步:封裝http的請求資料報:這一步主要是封裝自己的資訊,比如在post請求時,我們會塞進乙個data資料。
第三步:封裝tcp包,建立連線:因為是基於tcp的協議,網路連線是tcp來完成的,必然要封裝成tcp包,然後tcp再做自己工作,比如封裝ip包,一層層往下傳。
第四步:傳送請求:資料整好了,連線也完事了,那就傳送action了。
第五步:服務端響應:接受到請求,然後給出響應。
第六步:服務端關閉tcp的連線:一次通訊完成之後,若conection的設定不是keep-live的話,服務端會自動關閉tcp的連線。
/**
* http內部socket實現
}
https協議 = http協議 + ssl/tls協議,除了tcp/ip層要進行握手,ssl層也要進行握手進行加密解密。https同時使用了對稱加密和非對稱加密,對稱加密的過程需要客戶端的乙個金鑰,為了確保能把該金鑰安全的傳輸到伺服器端,採用非對稱加密對該金鑰進行加密傳輸。
ssl的全稱是secure sockets layer,即安全套接層協議,是為網路通訊提供安全及
資料完整性的一種安全協議。
tls的全稱是transport layer security,即安全傳輸層協議,最新版tls(transport layer security,傳輸層安全協議)是ietf(internet engineering task force,internet工程任務組)制定的一種新的協議,它建立在ssl 3.0協議規範之上,是ssl 3.0的後續版本。在tls與ssl3.0之間存在著顯著的差別,主要是它們所支援的加密演算法不同,所以tls與ssl3.0不能互操作。雖然tls與ssl3.0在加密演算法上不同,但是在我們理解https的過程中,我們可以把ssl和tls看做是同乙個協議。
https需要證書,使用系統預設信任的證書
如果是沒有信任證書的請求,需要信任自定義的證書
}okhttp 需要設定hostnameverferiy()方法驗證網域名稱,是為了防止中間人攻擊(攔截網路通訊,對資料進行篡改)
iOS開發之HTTP與HTTPS網路請求
http是網際網路中應用最為廣泛的一種網路協議,在進入正文之前,先解釋什麼是網路協議?網路協議為計算機網路中進行資料交換而建立的規則 標準或約定的集合。網路協議是由以下三個要素組成 語義 語法 時序。國際標準化組織 iso 在1978年提出了 開放系統互聯參考模型 即著名的osi rm模型 open...
HTTP和HTTPS請求的響應流程
http的中文意思超文字傳輸協議 http,hypertext transfer protocol 是網際網路上應用最為廣泛的一種網路協議。所有的www檔案都必須遵守這個標準。而https是http基於ssl加密後的傳輸協議。訪問的流程如下圖。客戶端傳送請求。請求首先會經過路由器 交換機 電信運營商...
Python網路爬蟲 http和https協議
一.http協議 1.官方概念 http協議是hyper text transfer protocol 超文字傳輸協議 的縮寫,是用於從全球資訊網 www world wide web 伺服器傳輸超文字到本地瀏覽器的傳送協議。雖然童鞋們將這條概念都看爛了,但是也沒辦法,畢竟這就是http的權威官方的...