IP協議不可靠無連線 為什麼不把它設計為可靠的

2022-09-23 05:21:08 字數 2654 閱讀 1974

網際網路使用的ip協議是無連線的,因此其傳輸是不可靠的。這樣容易使人們感到網際網路很不可靠,那為什麼當初不直接把它設計為可靠的?

先打乙個比方。郵局寄送的平信很像無連線的ip資料報。每封平信可能走不同的傳送路徑,同時平信也不保證不丟失。當我們發現收信人沒有收到寄出的平信時,去找郵局索賠是沒有用的。郵局會說:「平信不保證不丟失。怕丟失就請你寄**信」。但是大家並不會將所有的信件都用**方式郵寄,這是因為郵局從來不會隨意地將平信丟棄,而丟失平信的概率並不大,況且寄**信要多花些錢,還要去郵局排隊,太麻煩。總之,儘管寄平信有可能會丟失,但絕大多數的信件還是平信,因為寄平信方便、便宜。

我們知道,傳統的電信網的最主要的用途是進行**通訊。普通的**機很簡單,沒有什麼智慧型,因此電信公司就不得不把電信網設計得非常好,這種電信網可以保證使用者通話時的通訊質量。這點對使用非常簡單的**機的使用者則是非常方便的。但電信公司為了建設能夠確保傳輸質量的電信網則付出了巨大的代價(使用昂貴的程式控制交換機和網管系統)。

資料的傳送顯然必須是非常可靠的。當初美國國防部在設計 arpanet 時有乙個很重要的討論內容就是:「誰應當負責資料傳輸的可靠性?」這時出現了兩種對立的意見。一種意見是主張應當像電信網那樣,由通訊網路負責資料傳輸的可靠性(因為電信網的發展歷史及其技術水平已經證明了人們可以將網路設計得相當可靠)。但另一種意見則堅決主張由使用者的主機負責資料傳輸的可靠性。這裡最重要的理由是:這樣可以使計算機網路便宜、靈活,同時還可以滿足軍事上的各種特殊的需求。

下面用乙個簡單例子來說明這一問題。

設主機 a 通過網際網路向主機 b 傳送檔案(如下圖所示)。怎樣才能實現檔案資料的可靠傳輸呢?

如按照電信網的思路,就是設法(這需要花費相當多的錢)將不可靠的網際網路做成為可靠的網際網路。

但設計計算機網路的人採用另外一種思路,即設法實現端到端的可靠傳輸。

提出這種思路的人認為,計算機網路和電信網的乙個重大區別就是終端裝置的效能差別很大。電信網的終端是非常簡單的、沒有什麼智慧型的**機。因此電信網的不可靠必然會嚴重地影響人們利用**的通訊。但計算機網路的終端是有很多智慧型的主機。這樣就使得計算機網路和電信網有兩個重要區別。第一,即使傳送資料的網際網路有一些缺陷(如造成位元差錯或分組丟失),但具有很多智慧型的終端主機仍然有辦法實現可靠的資料傳輸(例如,能夠及時發現差錯並通知傳送方重傳剛才出錯的資料)。第二,即使網路可以實現 100% 地無差錯傳輸,端到端的資料傳輸仍然有可能出現差錯。

為了說明這點,我們可以用乙個簡單例子來說明這個問題。這就是主機 a 向主機 b 傳送乙個檔案的情況。

檔案是通過乙個檔案系統儲存在主機 a 的硬碟中。主機 b 也有乙個檔案系統,用來接收和儲存從 a 傳送過來的檔案。應用層使用的應用程式現在就是檔案傳送程式,這個程式一部分在主機 a 執行,另一部分在主機 b 執行。

現在討**件傳送的大致步驟:

(1)主機 a 的檔案傳送程式呼叫檔案系統將檔案從硬碟中讀出。然後檔案系統將檔案傳遞給檔案傳送程式。

(2)主機 a 請求資料通訊系統將檔案傳送到主機 b。這裡包括使用一些通訊協議和將資料檔案劃分為適當大小的分組。

(3)通訊網路將這些資料分組逐個傳送給主機 b。

(4)在主機 b,資料通訊協議將收到的資料傳遞給檔案傳送應用程式在主機 b 執行的那一部分。

(5)在主機 b,檔案傳送程式請求主機 b 的檔案系統將收到的資料寫到主機 b 的硬碟中。

在以上的幾個步驟中,都存在使資料受到損傷的一些因素。例如:

(1)雖然檔案原來是正確寫在主機 a 的硬碟上,但在讀出後就可能出現差錯(如在磁碟儲存系統中的硬體出現了故障)。

(2)檔案系統、檔案傳送程式或資料通訊系統的軟體在對檔案中的資料進行快取或複製的過程中都有可能出現故障。

(3)主機 a 或 b 的硬體處理機或儲存器在主機 a 或 b 進行資料快取或複製的過程中也有可能出現故障。

(4)通訊系統在傳輸資料分組時有可能產生檢測不出來的位元差錯或甚至丟失某些分組。

(5)主機 a 或 b 都有可能在進行資料處理的過程中突然崩潰。

由此可看出,即使對於這樣乙個簡單的檔案傳送任務,僅僅使通訊網路非常可靠並不能保證檔案從主機 a 硬碟到主機 b 硬碟的傳送是可靠的。也就是說,花費很多的錢將通訊網路做成為非常可靠的,對傳送計算機資料來說是得不償失的。既然現在的終端裝置有智慧型,就應當把網路設計得簡單些,而讓具有智慧型的終端來完成「使傳輸變得可靠」的任務。

於是,計算機網路的設計者採用了一種策略,這就是「端到端的可靠傳輸」。更具體些,就是在運輸層使用面向連線的 tcp 協議,它可保證端到端的可靠傳輸。只要主機 b 的 tcp 發現了資料的傳輸有差錯,就告訴主機 a 將出現差錯的那部分資料重傳,直到這部分資料正確傳送到主機 b 為止。而 tcp 發現不了資料有差錯的概率是很小的。採用這樣的建網策略,既可以使網路部分**便宜和靈活可靠,又能夠保證端到端的可靠傳輸。

這樣,我們可以這樣想像,將網際網路的範圍稍微擴大一些,即擴大到主機中的運輸層。由於運輸層使用了 tcp 協議,使得端到端的資料傳輸成為可靠的,因此這樣擴大了範圍的網際網路就成為可靠的網路。

因此,說「網際網路提供的資料傳輸是不可靠的」或「網際網路提供的資料傳輸是可靠的」這兩種說法都可以在文獻中找到,問題是是怎樣界定網際網路的範圍。如果說網際網路提供的資料傳輸是不可靠的,那麼這裡的網際網路指的是不包括主機在內的網路(僅有下三層)。說網際網路提供的資料傳輸是可靠的,就表明網際網路的範圍已經擴大到主機的運輸層。

再回到通過郵局寄平信的例子。當我們寄出一封平信後,可以等待收信人的確認(通過他的回信)。如果隔了一些日子還沒有收到回信,我們可以將該信件再寄一次。這就是將「端到端的可靠傳輸」的原理用於寄信的例子。

UDP為什麼不可靠

udp 使用者資料報協議。提供無連線 盡最大努力的資料傳輸服務 不保證資料傳輸的可靠性 既然不保證那肯定談不上可靠一說。無連線 不需要建立連線,也不需要釋放連線,減少了開銷和傳送資料的時延。盡最大努力的資料傳輸服務 不保證資料傳輸的可靠性,沒有超時和重傳功能。面向報文 傳送方對應用程式交下來的服務,...

《TCP IP協議族》 IP協議為何不可靠

網際網路使用的ip協議是無連線的,因此其傳輸是不可靠的。這樣容易使人們感到網際網路很不可靠,那為什麼當初不直接把它設計為可靠的?先打乙個比方。郵局寄送的平信很像無連線的ip資料報。每封平信可能走不同的傳送路徑,同時平信也不保證不丟失。當我們發現收信人沒有收到寄出的平信時,去找郵局索賠是沒有用的。郵局...

為什麼說ip協議是無連線協議

面向無連線是通訊技術之一。是指通訊雙方不需要事先建立一條通訊線路,二是把每個帶有目的位址的包 報文分組 送到線路上,由系統自主選定路線進行傳輸。在發包之前,不需要建立與對端目標位址之間的連線。上層如果有傳送給ip的資料,該資料會立即被壓縮成ip包傳送出去。1 為了簡化 2 為了提速 面向連線與無連線...