深入理解通訊協議
網絡模型
OSI模型(開放式系統互聯),它是由國際標準化組織(ISO)提出的。
TCP/IP系列協議
TCP/IP(Transmission Control Protocol/Internet Protocol)不只是TCP/IP兩個協議,而是有很多個協議組成,並且是在不同的層,是互聯網的基礎通信架構。
一個http請求瀏覽:應用層HTTP -> 傳輸層TCP -> 網絡層IP(數據包)、 ICMP(確保源地址和目的地址之間是網絡通)、IGMP(本地路由器和英特網的路由器聯通) ->鏈路層
直接使用網絡層協議的應用:ping命令,ICMP協議。
TCP的3次握手協議
第一次握手:Client將標誌位SYN置為1,隨機產生一個值seq=J,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。
第二次握手:Server收到數據包後由標誌位SYN=1知道Client請求建立連接,Server將標誌位SYN和ACK都置為1,ack=J+1,隨機產生一個值seq=K,並將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態。
第三次握手:Client收到確認後,檢查ack是否為J+1,ACK是否為1,如果正確則將標誌位ACK置為1,ack=K+1,並將該數據包發送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間可以開始傳輸數據了。
TCP的4次揮手協議
TCP中是怎麽四次。
(1)第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
(2)第二次揮手:Server收到FIN後,發送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號),Server進入CLOSE_WAIT狀態。
(3)第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
(4)第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接著發送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手。
TCP的通訊原理
“阻塞模式”:如果接收端,當然接收端緩沖區為空的時候,調用Socket的read方法的線程會阻塞,阻塞到有數據進入接收緩沖區;另外對於寫數據到Socket中的線程來說,如果待發送的數據長度大於發送緩沖區空余長度,則會阻塞在write方法上,等待發送緩沖區的報文被發送到網絡上,所以呢這個就是TCP的阻塞。
滑動窗口協議
發送方和接收方都會維護一個數據幀的序列,這個序列被稱作窗口。發送方的窗口大小由接收方確認,目的是控制發送速度,以免接收方的緩存不夠大導致溢出,同時控制流量也可以避免網絡擁塞
HTTP協議
URI是請求的資源,URL是你請求的資源的地址也就是地址路徑。
UDP協議
那為什麽UDP不可靠,我們還使用它了,在這種在線視頻中,丟失數據只會作為幹擾出現,並且這種幹擾是可以容忍的,就比如看視頻的時候出現了畫面與聲音不同步的現象,大家還是會忍受的,同時UDP傳輸比較高效
實戰
TCP的實戰,因為TCP是要建立連接的,所以需要Socket和ServerSocket之間建立連接。
UDP呢,首先UDP是沒有任何兩臺主機之間連接的概念,它只管發給誰就可以了,TCP可以使用流數據,而UDP不行,UDP在處理的時候以一個包的形式進行發送,要麽就發送到了,要麽就丟失。
ppt配圖下載地址:文件名稱:深入理解通訊協議.pptx
鏈接:https://pan.baidu.com/s/1098_HTL3ae0DTNbN0SkW8A
提取碼:niua
復制這段內容後打開百度網盤手機App,操作更方便哦
鏈接失效了請聯系作者
深入理解通訊協議