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