OSI網絡分層
- 應用層
http, smtp,pop3這些都屬於應用層協議瀏覽器
爲用戶的應用程序提供服務服務器
- 表示層
確保一個系統的應用層發送的信息被另外一個系統的應用層接收到網絡
- 會話層
經過傳輸層創建數據傳輸的通道tcp
- 傳輸層
定義了傳輸協議和網絡端口(www和80端口)spa
- 網絡層
爲處於不一樣地理位置的兩臺主機提供連接和路徑選擇接口
- 數據鏈路層
定義如何讓格式化數據進行傳輸,以及如何讓控制對物理介質的訪問文檔
- 物理層
物理設備標準,網線接口、光纖接口域名
TCP/IP協議
- 應用層(OSI中的應用層、表示層、會話層)
應用層面向不一樣的網絡應用引入不一樣的網絡協議,有基於TCP的,例如文件傳輸(FTP)、虛擬終端協議(TELNET)、超文本連接協議(HTTP),一樣也有基於UDP協議的,例如域名解析服務(DNS)。io
- 傳輸層
傳輸層的功能是使源端主機和目標端主機能夠進行對等的會話。定義了兩種協議一、傳輸控制協議(TCP)2.用戶數據報協議(UDP)域名解析
- 網絡互連層
定義了分組和互聯協議,即IP協議
- 主機到網絡層(OSI中的數據鏈路層、物理層)
何爲IP協議
用於將多個包交換網絡鏈接起來的,它在源地址和目的地址之間傳輸一種稱爲數據包的東西,它還能提供將數據大小的從新組裝功能,以適應不一樣網絡對包大小的要求
何爲TCP協議
TCP協議最核心的就是三次握手過程,斷開鏈接的四次分手過程
三次握手協議
- 客戶端發送一個隨機序列碼(1000),發起鏈接,並等待服務端相應
- 服務端收到客戶端請求後,發送本身初始序列碼(1234),並將客戶端的隨機序列碼加一後(1001)發還給客戶端
- 客戶端接收到服務端響應後,將服務端的初始序列碼加一(1235)後,做爲最終應答發還給服務端,此時連接創建成功
四次揮手協議
首先,揮手協議不管客戶端仍是服務端,都可主動發起
主動方、被動方由發起close命令來區分,並不是嚴格規定揮手是由客戶端仍是服務端發起
- 主動方發起一個揮手,發送一個FIN,而後關閉主動方與被動方的數據傳輸,進入FIN_WAIT狀態
- 被動方接收到到主動方發送的FIN後,發送一個ACK相應給主動方,此時被動方進入CLOSE_WAIT狀態
- 被動方發送一個FIN給主動方,用於關閉被動方與主動方的數據傳輸,此時進入LAST_ACK狀態
- 主動方收到FIN後,進入TIME_WAIT狀態,接着發送一個ACK確認給被動方,而後進入CLOSE狀態,完成四次揮手
一次完整的http請求是如何實現的
- 首先瀏覽器和服務端創建TCP的三次握手協議
- 瀏覽器向服務器發送一個命令,http://www.baidu.com,而且發送完成一個再發送一個空白行告知服務端發送信息結束
- 客戶端發送完畢之後,服務端會向客戶端會送應答,通常就是咱們在header頭中常見的狀態碼,例如200,404,500等
- 而後服務端根據客戶端的請求地址相應具體的文檔或相應結果
- 當服務端相應完結果後,會按照約定的conten-type,向客戶端把信息發送過來
- 當服務端把信息發送給客戶端後,原則上會將tcp請求關閉。如果connection如果設置爲keep-alive(長連接的時候都是開啓的)。這樣的話tcp會始終保持