一、網絡模型網絡
OSI模型即:開放系統互連參考模型(Open System Interconnect 簡稱OSI)是國際標準化組織(ISO)和國際電報電話諮詢委員會(CCITT)聯合制定的開放系統互連參考模型,爲開放式互連信息系統提供了一種功能結構的框架。它從低到高分別是:物理層、數據線路層、網絡層、傳輸層、會話層、表示層和應用層。框架
物理層:物理層是計算機網絡OSI模型中最低的一層。物理層規定:爲傳輸數據所須要的物理鏈路建立、維持、拆除,而提供有機械的,電子的,功能的和規範的特性。計算機網絡
數據鏈路層:數據鏈路層是OSI參考模型中的第二層,介於物理層和網絡層之間。數據鏈路層在物理層提供的服務基礎之上向網絡層提供服務,其最基本的服務是將源自網絡層來的數據可靠地傳輸到相鄰節點的目標機網絡層。server
網絡層:網絡層在數據鏈路層提供的兩個相鄰端點之間的數據幀的傳送功能上,進一步管理網絡中的數據通訊,將數據設法從源端通過若干個中間節點傳輸到目的端,從而向傳輸層提供最基本的端到端的數據服務。blog
傳輸層:實現端到端的數據傳輸。排序
會話層:利用傳輸層提供的服務,使應用創建和維持會話得到同步。資源
表示層:表示層爲在應用過程之間傳輸的信息提供表示方法的服務,它只關心信息發出的語法和語意。同步
二、TCP協議:io
TCP協議(Transmission Control Protocol/Internet Protocol的簡寫)是一種面向鏈接的、可靠的基於字節流的傳輸層通訊協議。TCP將用戶數據打包成報文,它發送後啓動一個定時器,另外一端收到的數據進行確認、對失序的數據從新排序、丟棄重複數據。基礎
TCP的特色:
● TCP協議是面向鏈接的傳輸層協議
● 每一條TCP鏈接只能由兩個端點,每一條TCP鏈接只能是點對點
● TCP提供可靠交付的服務
● TCP提供全雙工通訊。
● 面向字節流
TCP三次握手:
第一次握手:客戶端向服務端發送鏈接請求包,Client將標記位SYN置爲1,隨機產生一個值seq=J,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。
第二次握手:服務端收到客戶端發過來的報文,由SYN=1通知客戶端要求創建鏈接,則爲此次鏈接分配資源。並向客戶端發送一個SYN和ACK都置爲1的TCP報文,設置初始順序號碼Y=0,將確認序號設置爲上一次客戶端發送過來的順序號(Seq)加1。
第三次握手:客戶端收到服務端發來的包後檢查確認號碼(ack)是否正確,即第一次發送的Seq加1。以及標誌位ACK是否爲1。若正確,服務端再次發送確認包,ACK標誌位位1,確認號碼(ack)=K+1,並將該數據包發送給Server,Server檢查ack是否爲K+1,ACK是否爲1,若是正確則鏈接創建成功,Client和Sserver進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間能夠開始傳輸數據了。
TCP四次揮手:
四次揮手即終止TCP鏈接,就是指斷開一個TCP鏈接時,須要客戶端和服務端總共發送4個包以確認鏈接的斷開。因爲TCP鏈接時全雙工的,所以,每一個方向都必需要單獨進行關閉,這一原則是當一方完成數據發送任務後,發送一個FIN來終止這一方向的鏈接,收到一個FIN只是意味着這一方向上沒有數據流動(不會再收到數據),並不能表明鏈接斷開,可是這個TCP鏈接上仍然可以發送數據,直到這一方向也發送了FIN。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉。其流程以下圖
第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
第二次揮手:Server收到FIN後,發送一個ACK給Client,確認序號爲收到序號+1,Server進入CLOSE_WAIT狀態。
第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接着發送一個ACK給Server,確認序號爲收到序號+1,Server進入CLOSE狀態,完成四次揮手。
以上爲主動關閉,另外一方被動關閉的狀況,在實際中還會出現同時發起主動關閉的場景,具體流程以下圖: