计算机网络原理梳理丨清晰认识 TCP/IP 协议,图解秒懂!
作者:MobMsg,資深全端工程師一枚,架構師社區合伙人!
TCP/IP 協議族
Internet 的核心協議就是 TCP/IP,廣泛應用于局域網和廣域網,目前已有20+年發展史,是現用國際通行標準。TCP/IP 是個協議族,包含有多種協議,網絡模型及分層如圖所示
TCP/IP 協議族全家福?
TCP/IP 五層網絡模型
應用層:應用程序通過TCP/IP互連網絡后發送、接收數據。選擇所需服務類型,按照傳輸層要求組織數據,向下傳遞報文序列或字節流2種類型
傳輸層:提供應用層間通信服務,又稱端到端通信。提供可靠的數據傳輸服務,確保數據準確、有序送達到目的地。數據發送后需對方回送確認信息,有丟失的數據需發送方重發分組。傳輸的對象是傳輸層分組
網際層:又稱IP層,負責機器間通信,接收到傳輸層請求后,向目的地傳送信息分組。此分組會被封裝進IP數據報中,由路由選擇算法決定直送目的地或發給路由,然后將數據向下傳遞給網絡接口層。接收到數據報時,檢驗正確性,由路由選擇算法決定本地處理或轉發,若目的地屬于本機所在網絡,就把數據報的報頭剝去,選擇適當的傳輸層協議向上傳遞分組
網絡接口層:又稱數據鏈路層,處于TCP/IP協議層之下,負責接收IP數據報并將數據報通過選定網絡發送出去
硬件層:處理連接網絡的硬件部分。包括控制操作系統、硬件的設備驅動、NIC(Network Interface Card,網絡適配器,即網卡),及光纖等 物理可見部分(還包括連接器等一切傳輸媒介)
TCP/IP 內含協議職責
應用層協議職能
TCP 協議數據傳輸流程
傳輸控制協議(Transmission Control Protocol,TCP)是 Internet 傳輸層協議,提供面向連接的可靠傳輸服務,可靠性由重發技術保證。TCP 報文首部的大小一定是4字節的倍數,其中固定首部大小為20字節且不變
TCP 數據包示意圖
ACK:確認位,當它的值為1時,確認號才是有效的
TCP 三次握手建立連接
第一次握手:建立連接時,客戶端發送SYN包(syn=i)到服務器,并進入SYN_SEND狀態,等待服務器確認。SYN表示同步序列編碼(Synchronize Sequence Numbers)
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=i+1),同時自己也發送一個SYN包(seq=j),即SYN+ACK包,此時服務器進入SYN_RECV狀態
第三次握手:客戶端收到服務器的SYN+ACK的包后,向服務器發送確認包ACK(j+1),此包發送完畢,客戶端與服務器進入ESTABLISHED狀態,完成三次握手
三次握手建立連接示意圖
TCP 正常數據傳輸過程
本圖表示傳輸2個數據報的過程。主機A向B發送第一個 N 字節的數據包,SEQ為 i ,主機B收到后需要立即向主機A發送確認ACK包,ACK = i + N +1 ,這樣主機A才可確認數據傳輸成功。第二個數據包傳輸時,SEQ數值 = R,主機B收到后立即回傳ACK,此時ACK = R + N + 1,之后數據包傳輸的過程持續此流程,需要注意的是發送方只有收到目標方的確認包后才會清除緩沖區中的數據
ACK確認位 = SEQ數據編號 + 傳遞的字節數N + 1。第一個字節的SEQ編號由本地隨機產生,SEQ+N的作用是為了讓主機A確認發送給主機B的數據是否全部接收 / 是否出現丟失
正常數據傳輸示意圖
TCP 數據重傳與快重傳
數據重傳:主機A向主機B傳送數據,但中間發生錯誤,主機B未能收到。經過一段時間后,主機A未收到主機B的ACK確認包,故主機A再次重傳此數據包。主機A每次發送數據時都會啟動一個定時器,規定時間沒收到響應包則啟動重傳
快重傳:重傳發生在超時之后,但當主機A收到3個以上重復的ACK,其實就說明有數據丟失,也需要重傳,此時重傳定時器還沒有結束,所以叫快速重傳
數據重傳示意圖
TCP 四次揮手結束連接
第一次揮手:客戶端發送一個FIN,用來關閉客戶端到服務器的數據傳送,客戶端進入FIN_WAIT_1狀態
第二次揮手:服務端收到FIN后,發送一個ACK給客戶端,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號),服務端進入CLOSE_WAIT狀態
第三次揮手:服務端發送一個FIN,用來關閉服務端到客戶端的數據傳送,服務端進入LAST_ACK狀態
第四次揮手:客戶端收到FIN后,客戶端進入TIME_WAIT狀態,接著發送一個ACK給服務端,確認序號為收到序號+1,服務端進入CLOSED狀態,完成四次揮手
四次揮手結束連接示意圖
TCP 滑動窗口與擁塞控制
IP 協議數據傳輸流程
網際協議(Internet Protocol,IP)通常被認為提供的是無連接和不可靠的,但實際上,在網絡性能良好的情況下,IP傳送的數據能夠完好無損的到達目的地
無連接是指沒有確定目標系統是否已做好接收數據的準備之前就發送數據。不可靠是指目的系統不對成功完成接收到的分組進行確認
IP 數據報示意圖
IP 發送數據
發送數據時,源計算機上的IP協議需要確定目的地是否在同一網絡,若目的地在同一網絡,使用直達通信,若不在同一網絡,則需要通過網關或路由器完成通信:
主機A組裝目的IP地址為主機B的數據報,之后進行路由選擇,再將次數據報發送至默認路由器(由APR地址解析確定路由器,得到下一默認路由器IP地址與MAC地址的映射關系,然后以該MAC地址為幀的目的地址形成一個幀,并將IP數據報封裝在幀的數據區,最后由具體的物理網絡(以太網)完成數據報的真正傳輸)
IP 轉發數據
路由器接收到主機A的數據幀后,去掉幀頭并對其進行處理,發現此數據報的目的地非本地,需要將其轉發,由路由選擇算法及本地路由表確定下一跳路由器地址,通過ARP地址解析確定下一跳路由的IP地址與MAC地址的映射關系后,將該MAC地址作為數據幀的目的地將數據報封裝為數據幀,通過以太網完成數據轉發。重復此步驟直到第N個路由器與目的地直連,通過ARP地址解析確定目的主機的IP地址與MAC地址的映射關系,利用該MAC地址作為幀的目的地址,將IP數據報封裝成幀,并由以太網實現數據的真正傳遞
IP 接收數據
主機B接收到數據幀后,解封該幀并對其進行處理,確定本機即為目的地址后,將數據報中封裝的數據交由上層協議進行處理,隨即逐層處理并上交直到應用層,完成此次通信
TCP/IP 五大重要特性
邏輯編址:通過IP地址+主機ID,確保計算機可尋
路由選擇:通過網絡路徑選擇協議,確保數據包到達目的地
域名解析:將域名映射為IP地址,使用域名一是便于記憶,二是域名相對固定不變
錯誤檢測:確保分組交換的可靠性傳遞,確認數據正常接收
流量控制:監測網絡流量,防止網絡擁塞出現
長按訂閱更多精彩▼
如有收獲,點個在看,誠摯感謝
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的计算机网络原理梳理丨清晰认识 TCP/IP 协议,图解秒懂!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Autofac的AOP面向切面编程研究
- 下一篇: Exceptionless 5.0.0本