數(shù)據(jù)傳輸過程詳解
一、FTP客戶端發(fā)送數(shù)據(jù)到FTP服務(wù)器端,詳述其工作過程。兩臺機器的連接情況如下圖所示:
詳細解答如下
1.1、假設(shè)初始設(shè)置如下所示:
客戶端FTP端口號為:32768
服務(wù)器端FTP端口號為:21
1.2、不同網(wǎng)絡(luò)段上的兩臺計算機通過TCP/IP協(xié)議通訊的過程如下所示:
協(xié)議是水平的,服務(wù)是垂直的。
物理層,指的是電信號的傳遞方式,透明的傳輸比特流。
鏈路層,在兩個相鄰結(jié)點間的線路上無差錯地傳送以幀為單位的數(shù)據(jù)。
網(wǎng)絡(luò)層,負責(zé)為分組交換網(wǎng)上的不同主機提供通信,數(shù)據(jù)傳送的單位是分組或包。
傳輸層,負責(zé)主機中兩個進程之間的通信,數(shù)據(jù)傳輸?shù)膯挝皇菆笪亩巍?/p>
網(wǎng)絡(luò)層負責(zé)點到點(point-to-point)的傳輸(這里的“點”指主機或路由器),而傳輸層負責(zé)端到端(end-to-end)的傳輸(這里的“端”指源主機和目的主機)。
1.3、數(shù)據(jù)包的封裝過程
不同的協(xié)議層對數(shù)據(jù)包有不同的稱謂,在傳輸層叫做段(segment),在網(wǎng)絡(luò)層叫做數(shù)據(jù)報(datagram),在鏈路層叫做幀(frame)。數(shù)據(jù)封裝成幀后發(fā)到傳輸介質(zhì)上,到達目的主機后每層協(xié)議再剝掉相應(yīng)的首部,最后將應(yīng)用層數(shù)據(jù)交給應(yīng)用程序處理。兩臺計算機在不同的網(wǎng)段中,那么數(shù)據(jù)從一臺計算機到另一臺計算機傳輸過程中要經(jīng)過一個或多個路由器。
1.4、工作過程
(1)在PC1客戶端,將原始數(shù)據(jù)封裝成幀,然后通過物理鏈路發(fā)送給Switch1的端口1。形成的幀為:
注:發(fā)送方怎樣知道目的站是否和自己在同一個網(wǎng)絡(luò)段?每個IP地址都有網(wǎng)絡(luò)前綴,發(fā)送方只要將目的IP地址中的網(wǎng)絡(luò)前綴提取出來,與自己的網(wǎng)絡(luò)前綴比較,若匹配,則意味著數(shù)據(jù)報可以直接發(fā)送。也就是說比較二者的網(wǎng)絡(luò)號是否相同。本題中,PC1和PC2在兩個網(wǎng)絡(luò)段。
(2)Switch1收到數(shù)據(jù)并對數(shù)據(jù)幀進行校驗后,查看目的MAC地址,得知數(shù)據(jù)是要發(fā)送給PC2,所以Switch1就對數(shù)據(jù)幀進行存儲轉(zhuǎn)發(fā),查看自己的MAC地址列表后,從端口2將數(shù)據(jù)轉(zhuǎn)發(fā)給路由器的S0端口。
(3)Router收到數(shù)據(jù)后,先對數(shù)據(jù)進行校驗,然后對IP數(shù)據(jù)報進行分析,重新對數(shù)據(jù)進行封裝,查看路由表后,從S1端口將數(shù)據(jù)發(fā)送出去,此時得到新的數(shù)據(jù)幀如下:
注:目的IP和源IP地址不會被改的,改變的是MAC,路由器會把遠端的源MAC地址改成下一跳的MAC地址,然后就發(fā)送出去
(4)Switch2接收到Router給它發(fā)送的數(shù)據(jù)后,進行校驗后直接存儲轉(zhuǎn)發(fā),查看自己的MAC地址列表后,將數(shù)據(jù)幀從端口1發(fā)送給PC2服務(wù)器端。
(5)PC2服務(wù)器端收到數(shù)據(jù)后,先進行校驗,然后進行拆分,得到TCP報文段,由此可以知道目的端口號是21,然后把數(shù)據(jù)交付給相應(yīng)的FTP應(yīng)用進程進行處理。
二、在數(shù)據(jù)的傳輸中會出現(xiàn)以下一些問題,該如何解決?
1、針對數(shù)據(jù)鏈路層,傳輸?shù)臄?shù)據(jù)會出現(xiàn)差錯或者丟失的問題,也有兩端傳輸速度不同的問題,如何解決這些問題?
答:首先我們假設(shè)主機A向主機B發(fā)送數(shù)據(jù)
(1)差錯控制
差錯控制方法分兩類,一類是自動請求重發(fā)ARQ,另一類是前向糾錯FEC,也叫前向糾錯碼(Forward Error Correction簡稱FEC)。
在ARQ方式中,當(dāng)接收端發(fā)現(xiàn)差錯時,就設(shè)法通知發(fā)送端重發(fā),直到收到正確的碼字為止,ARQ方式只使用檢錯碼。
在FEC方式中,接收端不但能發(fā)現(xiàn)差錯,而且能確定二進制碼元發(fā)生錯誤的位置,從而加以糾正,F(xiàn)EC方式必須使用糾錯碼。常用的糾錯碼有奇偶校驗碼、循環(huán)冗余碼和海明碼等
例如:在數(shù)據(jù)幀中加上CRC,這樣主機B就可以檢驗所接收的數(shù)據(jù)是否有差錯,如果有差錯,那么主機B可以向主機A發(fā)送一個否認幀NAK,以表示主機A應(yīng)當(dāng)重傳出現(xiàn)差錯的那個數(shù)據(jù)幀。
(2)丟失的解決辦法
超時重傳。如果主機A在發(fā)送完數(shù)據(jù)給主機B之后,若到了超時計時器所設(shè)置的重傳時間而還沒有收到主機B的任何確認幀ACK,則主機A就重傳前面所發(fā)送的這一數(shù)據(jù)幀。
(3)流量控制
①假設(shè)主機A向主機B傳輸?shù)臄?shù)據(jù)是無差錯的,那么,最簡單的流量控制方法就是:發(fā)送方每發(fā)送一幀數(shù)據(jù)就暫時停下來,接收方收到數(shù)據(jù)幀之后就交付給主機,然后發(fā)一信息給發(fā)送方,表示接收的任務(wù)已經(jīng)完成,這時,發(fā)送方再接著發(fā)送下一個數(shù)據(jù)幀。在這種情況下,接收方的接收緩存的大小只要能夠裝得下一個數(shù)據(jù)幀即可。
②滑動窗口:分別在發(fā)送端和接收端設(shè)置發(fā)送窗口和接收窗口
發(fā)送窗口用來對發(fā)送端進行流量控制,為發(fā)送窗口的大小WT就是代表在還沒有收到對方確認信息的情況下發(fā)送端最多可以發(fā)送多少個數(shù)據(jù)幀。每收到對一個幀的確認,發(fā)送窗口就向前滑動一個位置。由此也可以知道,第一種流量控制發(fā)法中,WT=1。
在接收端設(shè)置接收窗口時為了控制可以接收哪些數(shù)據(jù)而不可以接收哪些數(shù)據(jù),在接收端只有當(dāng)收到的數(shù)據(jù)幀的發(fā)送序號落入接收窗口內(nèi)才允許將該數(shù)據(jù)幀收下。每收到一個序號正確的幀,接收窗口就向前滑動一個位置。
2、IP數(shù)據(jù)報有它的長度,而數(shù)據(jù)傳輸過程中,一些中間設(shè)備也有一個相關(guān)的設(shè)置MTU(最大傳輸單元),如果現(xiàn)在假設(shè)IP數(shù)據(jù)報的長度是5000字節(jié),而MTU設(shè)置是1500字節(jié),那么該怎么辦?
答:解決的辦法是對IP數(shù)據(jù)報進行分片與重組。詳細過程如下:
2.1、 IP v4數(shù)據(jù)報格式
一個IP v4數(shù)據(jù)報由報頭和數(shù)據(jù)兩部分組成,其中數(shù)據(jù)包括高層需要傳輸?shù)臄?shù)據(jù),而報頭是為了正確傳輸高層數(shù)據(jù)而增加的控制信息。報頭的前一部分是固定長度,共20字節(jié),是所有IP數(shù)據(jù)報必須具有的。在報頭的固定部分的后面是一些可選字段,其長度是可變的。下圖給出了IPv4數(shù)據(jù)報的格式義。
IP數(shù)據(jù)報的格式
2.2、不同數(shù)據(jù)鏈路層協(xié)議的MTU值
一個路由器可能連接不同MTU的網(wǎng)絡(luò),如下圖
2.3、IP數(shù)據(jù)報分片
數(shù)據(jù)報分片時,每個分片前都要加上相應(yīng)的IP報頭,形成新的IP數(shù)據(jù)報,除包含一些分片控制域(如標(biāo)志、偏移量)外,分片的報頭和原IP數(shù)據(jù)報的報頭基本一樣。
標(biāo)識符、標(biāo)志、偏移量3個字段在IP報頭中的作用是:
標(biāo)識:占16bit,標(biāo)識數(shù)據(jù)報。當(dāng)數(shù)據(jù)報長度超出網(wǎng)絡(luò)最大傳輸單元(MTU)時,必須要進行分割,并且需要為分割段(fragment)提供標(biāo)識。所有屬于同一數(shù)據(jù)報的分割段被賦予相同的標(biāo)識值。
標(biāo)志:占3bit,指出該數(shù)據(jù)報是否可分段。目前只有前兩個比特有意義。
標(biāo)志字段中的最低位記為MF(More Fragment)。MF=1即表示后面“還有分片”的數(shù)據(jù)報。MF=0表這已是若干數(shù)據(jù)報片中的最后一個。
標(biāo)志字段中間的一位記為DF(Don’t Fragment)。只有當(dāng)DF=0時才允許分片。
片偏移:占13bit,若有分段時,用以指出該分段在數(shù)據(jù)報中的相對位置,也就是說,相對于用戶數(shù)據(jù)字段的起點,該片從何處開始。片偏移以8字節(jié)為偏移單位,即每個分片的長度一定是8字節(jié)(64Bit)的整數(shù)倍。
2.4、IP數(shù)據(jù)報重組
在最終的目的主機上將接收到的所有分片進行重新組裝的過程就是IP數(shù)據(jù)報重組。這時要根據(jù)數(shù)據(jù)報的標(biāo)識、標(biāo)志、偏移量等字段將分段的各個IP數(shù)據(jù)報重新組裝成完整的原始數(shù)據(jù)報。
2.5本題的詳解過程
數(shù)據(jù)報的數(shù)據(jù)部分為5000字節(jié)長(使用固定首部),需要分片長度不超過1500字節(jié)的數(shù)據(jù)報片。因固定首部長度為20字節(jié),因此每個數(shù)據(jù)報片的長度不能超過1480字節(jié)。于是分為4個數(shù)據(jù)報片,其數(shù)據(jù)報片的數(shù)據(jù)部分長度分別為1480字節(jié)、1480字節(jié)、1480字節(jié)和560字節(jié)。原始數(shù)據(jù)報首部被復(fù)制為各數(shù)據(jù)報片的首部,但必須修改有關(guān)字段的值。分片結(jié)果如下圖所示:
3、兩個主機的應(yīng)用進程,也會出現(xiàn)差錯和丟失,兩端的緩存也不同,如何控制流量?應(yīng)用進程如何與端口號進行匹配?
答:因為運輸層提供的功能是應(yīng)用進程之間的邏輯通信,所以面向連接的傳輸控制協(xié)議TCP就保證了全雙工的可靠交付的服務(wù)。具體的有關(guān)差錯控制和流量控制如下面的詳細解釋:
3.1、運輸層為相互通信的應(yīng)用進程提供了邏輯通信,如下圖所示:
3.2、TCP發(fā)送報文段的示意圖如下:
3.3、TCP 的數(shù)據(jù)編號與確認
TCP 協(xié)議是面向字節(jié)的。TCP 將所要傳送的報文看成是字節(jié)組成的數(shù)據(jù)流,并使每一個字節(jié)對應(yīng)于一個序號。
在連接建立時,雙方要商定初始序號。TCP 每次發(fā)送的報文段的首部中的序號字段數(shù)值表示該報文段中的數(shù)據(jù)部分的第一個字節(jié)的序號。
TCP 的確認是對接收到的數(shù)據(jù)的最高序號表示確認。接收端返回的確認號是已收到的數(shù)據(jù)的最高序號加 1。因此確認號表示接收端期望下次收到的數(shù)據(jù)中的第一個數(shù)據(jù)字節(jié)的序號。
3.4、TCP 的流量控制與擁塞控制
(1)滑動窗口(進行流量控制)
TCP 采用大小可變的滑動窗口進行流量控制。窗口大小的單位是字節(jié)。
在 TCP 報文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對方設(shè)置的發(fā)送窗口數(shù)值的上限。
發(fā)送窗口在連接建立時由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時動態(tài)地調(diào)整對方的發(fā)送窗口上限值(可增大或減小)。
上圖(a)表示發(fā)送端要發(fā)送 900 字節(jié)長的數(shù)據(jù),劃分為 9 個 100 字節(jié)長的報文段,而發(fā)送窗口確定為 500 字節(jié)。發(fā)送端只要收到了對方的確認,發(fā)送窗口就可前移。發(fā)送 TCP 要維護一個指針。每發(fā)送一個報文段,指針就向前移動一個報文段的距離。
上圖(b)表示發(fā)送端已發(fā)送了 400 字節(jié)的數(shù)據(jù),但只收到對前 200 字節(jié)數(shù)
據(jù)的確認,同時窗口大小不變。現(xiàn)在發(fā)送端還可發(fā)送 300 字節(jié)。
上圖(c)表示發(fā)送端收到了對方對前 400 字節(jié)數(shù)據(jù)的確認,但對方通知發(fā)送端必須把窗口減小到 400 字節(jié)。現(xiàn)在發(fā)送端最多還可發(fā)送 400 字節(jié)的數(shù)據(jù)。
利用可變窗口大小進行流量控制雙方確定的窗口值是 400,如下圖所示:
(2)擁塞控制
為了更好地進行擁塞控制,因特網(wǎng)標(biāo)準(zhǔn)推薦使用一下三種技術(shù),慢啟動(slow_start)、加速遞減(multiplicative decrease)和擁塞避免(congestion avoidance)。
“擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網(wǎng)絡(luò)擁塞還是不可能的。“擁塞避免”是說在擁塞避免階段把擁塞窗口控制為按線性規(guī)律增長,使網(wǎng)絡(luò)比較不容易出現(xiàn)擁塞。
3.5、端口號的識別
(1)端口的概念:
端口就是運輸層服務(wù)訪問點 TSAP。
端口的作用就是讓應(yīng)用層的各種應(yīng)用進程都能將其數(shù)據(jù)通過端口向下交付給運輸層,以及讓運輸層知道應(yīng)當(dāng)將其報文段中的數(shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)的進程。
從這個意義上講,端口是用來標(biāo)志應(yīng)用層的進程。
(2)端口在進程之間的通信中所起的作用
(3)端口號
端口用一個 16 bit 端口號進行標(biāo)志。
端口號只具有本地意義,即端口號只是為了標(biāo)志本計算機應(yīng)用層中的各進程。在因特網(wǎng)中不同計算機的相同端口號是沒有聯(lián)系的。
端口號分為兩類:
一類是熟知端口,其數(shù)值一般為 0~1023。當(dāng)一種新的應(yīng)用程序出現(xiàn)時,必須為它指派一個熟知端口。
另一類則是一般端口,用來隨時分配給請求通信的客戶進程。
端口的作用可用下圖來表示:
(4)插口
TCP 使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時將 TCP 連接的端點稱為插口(socket),或套接字、套接口。插口包括IP地址(32bit)和端口號(16bit),共48bit。插口和端口、IP 地址的關(guān)系是:

責(zé)任編輯:售電衡衡
- 相關(guān)閱讀
- 泛在電力物聯(lián)網(wǎng)
- 電動汽車
- 儲能技術(shù)
- 智能電網(wǎng)
- 電力通信
- 電力軟件
- 高壓技術(shù)
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計 -
中國自主研制的“人造太陽”重力支撐設(shè)備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng)
-
新基建助推 數(shù)據(jù)中心建設(shè)將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網(wǎng),電力新基建 -
泛在電力物聯(lián)網(wǎng)建設(shè)下看電網(wǎng)企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網(wǎng) -
泛在電力物聯(lián)網(wǎng)建設(shè)典型實踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進這個行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎(chǔ)設(shè)施,電力新基建 -
燃料電池汽車駛?cè)雽こ0傩占疫€要多久?
-
備戰(zhàn)全面電動化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計 -
中國自主研制的“人造太陽”重力支撐設(shè)備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng) -
5G新基建助力智能電網(wǎng)發(fā)展
2020-06-125G,智能電網(wǎng),配電網(wǎng) -
從智能電網(wǎng)到智能城市