工做須要,網絡接觸的不算深刻,留個坑後續填上~設計模式
其中TCP/IP是一類協議系統,是用於網絡通訊的協議集合。TCP/IP協議傳統認爲值四層協議 瀏覽器
HTTP是客戶端瀏覽器或者其餘程序與Web服務器之間的應用層通訊協議。在Internet上的Web服務器上存放的內容都是超文本信息,客戶端須要經過HTTP協議傳輸要訪問的超文本信息。緩存
GET和POST是最經常使用的請求方式,有如下區別:安全
針對上述安全性問題,在HTTP協議基礎上,經過在HTTP和TCP中間加了一層SSL加密層,從而誕生了HTTPS。針對上述三個問題,HTTPS增長了通訊加密、證書認證和完整性保護。服務器
也能,可是並不是真正的全雙工通訊,它基於客戶端的長輪詢或者Long poll來實現的,比較消耗資源,也沒法讓服務器主動通知客戶端。markdown
最開始的時候客戶端和服務器都是處於CLOSED狀態。主動打開鏈接的爲客戶端,被動打開鏈接的是服務器。忽略報文內容,大體步驟爲:網絡
主要是爲了防止已經失效的請求報文忽然又傳送給服務器,從而創建錯誤鏈接。 若是是兩次握手,假設這樣的場景,客戶端發送一個請求報文,在某一個網絡節點由於網絡緣由被滯留,客戶端遲遲沒有收到確認報文,覺得服務器沒有收到,從而從新發送了一次請求報文,經歷兩次握手後雙方創建鏈接,傳輸數據後關閉鏈接。後來忽然此前滯留的請求報文網絡通暢又到達了服務器,這個報文本該是失效的,可是服務器經歷兩次握手後再次創建鏈接,但實際上客戶端並不須要傳數據,致使服務器空等,形成資源浪費。而若是是三次握手,即便服務器確認了失效的報文,客戶端沒有再次確認,也是不會創建鏈接的。網站
數據傳輸完畢後,雙方均可釋放鏈接。最開始的時候,客戶端和服務器都是處於ESTABLISHED狀態,而後客戶端主動關閉,服務器被動關閉。忽略報文內容,大體步驟以下:加密
客戶端之全部接收到服務器發送的鏈接釋放報文後必須發出確認報文,是由於服務器在發送鏈接釋放報文後,若是沒有獲得客戶端的確認,會認爲報文發送失敗,那麼它會從新發送鏈接釋放報文,因此客戶端不會當即關閉,若是2∗ MSL時間內沒有再接收到服務器發送的鏈接釋放報文,那麼客戶端認爲服務器已經接收到了確認報文,則結束TCP鏈接。2MSL就是一個發送和一個回覆所需的最大時間。spa
因爲TCP是全雙工通訊,任意一方都能發送數據,一方想要關閉鏈接必須等待數據發送完畢,也就須要另外一方贊成,若是是三次揮手,服務器端發送了鏈接釋放報文時,此時客戶端和服務端均半關閉狀態,客戶端接收到鏈接釋放報文後若是不發送確認報文,服務器端沒法肯定客戶端收到了關閉的消息,當前僅僅只有客戶端知道雙方能夠關閉了,可是服務器端並不知道,因此須要發一次確認報文,而且客戶端經過2MSL時間來判斷服務器端也知道了此時雙方能夠關閉,最終雙方斷開這次連接。
Socket是應用層與TCP/IP協議族通訊的中間軟件抽象層,它是一組接口,提供一套調用TCP/IP協議的API。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket接口後面,對用戶來講,一組簡單的接口就是所有,讓Socket去組織數據,以符合指定的協議。
爲了解決網絡傳輸中的雙向通訊問題,來做爲HTTP協議的一個替代者,用於支持長鏈接(HTTP也能夠長鏈接,但並不是真正的全雙工通訊)。 WebSocket經過HTTP請求告訴服務器要創建WebSocket鏈接,而後進行三次握手,在此期間的數據通訊都是HTTP的,鏈接創建完成後,才使用WebScoket協議進行數據通訊。 其鏈接斷開也是經過四次揮手。