題 TCP必須使用IP嗎?


這是真的嗎? TCP 是TCP / IP的縮寫,他們的意思是一樣的嗎?

有可能嗎? TCP 建立在另一個協議之上 IP


104
2017-07-16 20:18


起源


為什麼不?我曾經看過一次TCP莫爾斯代碼。 - soandos
一個例子是ICMP隧道,它使用TCP over ICMP。但確實,通常在任何非IP的基礎上構建TCP。通常是網絡接入層使用更廣泛的協議和通道(例如邦戈鼓)。 - Mister Smith
@TomWijsman試過失敗了嗎?據我所知,他們在解決問題和互操作性方面遇到的任何麻煩,而不是任何使TCP工作的麻煩。 - tylerl
@harper使用常規的摩爾斯電碼,對於熟練的操作員來說,200字符/分鐘肯定不是聞所未聞的,大多數人有足夠的練習,絕對可以達到100 c / min(20 wpm)。當然,在這些速度下,你並沒有真正聽到每個角色,而是聽到了很多單詞的聲音。 (據說技術熟練的操作員的標誌是他們記住了對話,但沒有記住使用過的單詞。)但我想,100 c / min的字符間隔到50-60 c / min的總速度是可行的可忽略不計的字符錯誤率。 - α CVn
@harper這取決於您所需的準確度。對於大部分聊天(嚼嚼,在業餘廣播中說話),在這里和那裡說錯了並不是真正的問題,因為上下文比使用的確切詞語更重要。對於電報流量,緊急/遇險通信等,特別是如果文本被加密,每個字,甚至每個字符必須(不僅僅是接收而且還) 複製 正確(和清晰)。請注意,我說200 c / min是“聞所未聞的”;不常見。然而,100 c / min在業餘無線電頻段上相當普遍。 - α CVn


答案:


TCP和IP(v4和v6)肯定是可分離的,一個並不意味著另一個,正如TCP over IPX的例子所證明的那樣(RFC 1791)。

但是,TCP無法構建 任何 網絡協議。兩個原因:

  1. TCP標頭中沒有段大小字段(只有數據偏移量,它給出了TCP標頭的大小)。因此,TCP將僅與包括足夠信息的較低層協議一起工作以計算TCP段的大小(即,較低層協議的有效載荷大小)。這種假設適用於IPv4(RFC 791),IPv6(RFC 2460)和IPX(RFC 1791)。但一般情況下並非如此,例如,不適用於禽類攜帶者(RFC 1149)(見註a)。
  2. TCP僅適用於無連接網絡協議。 TCP有效地不能在某些面向連接的網絡協議(例如,ATM恆定比特率服務)上工作,因為兩個打鬥速率控制功能導致非常差或不可預測的性能。另一個退化的例子是TCP隧道上的TCP。

TCP規範, RFC 793,並不是決定這個問題的好來源,因為它承認它與較低層的界面基本上未指定。

注意a)對於TCP重新組裝打印在小紙片上的數據報(無論是由鴿子攜帶還是更智能的corvid網絡),有效載荷的大小必須寫在標準位置。或者,適應層可以啟發式地確定分段大小。光學掃描儀用於實現鳥類載波規範的主機堆棧(RFC 1149)包括這樣的啟發式適應層,但它仍然沒有記錄。


12
2017-10-22 17:29



技術上準確(據我所知),徹底,引用支持,清晰,輕鬆。我會盡可能地給它一些贊成。 - Scott


我還沒讀完整本 RFC 但1.4節中的語言似乎表明可以使用任何“較低級別”協議。

TCP和低級協議之間的接口本質上是   除了假設有一種機制,其中沒有指定   兩個級別可以異步地將信息傳遞給彼此。   通常,人們希望較低級別的協議指定這一點   接口。 TCP旨在在非常普遍的環境中工作   互聯網絡。假設的低級協議   整個文檔中都是Internet協議。


88
2017-07-16 20:31



甚至,IP本身已經在許多網絡技術上實現 載體鴿。這些鳥實際上用於演示ICMP Ping數據包的傳輸,丟包率為55%(顯然是由於操作員錯誤),延遲時間從1到2小時不等。可以在其上運行TCP,但是連接設置需要很多鳥...... - RBerteig
關於RBerteig的評論;考慮攜帶迷你SDHC卡的攜帶鴿。延遲和吞吐量之間存在差異。 :-) - α CVn
@MichaelKjörling這不會與RFC 1149互操作:“IP數據報打印在一小捲紙上”。 - kmkaplan
@kmkaplan除非數據報印在SDHC卡的標籤上。這就像是幾部電影中的陳詞濫調 - “哦,它實際上是在硬盤上!” - Jon Hanna
必須在防火牆上有一些非常大的洞才能讓鳥類攜帶者通過。 - squillman


互聯網協議套件

TCP不是TCP / IP的簡稱。

TCP / IP經常被用作說“的簡寫方式”互聯網協議套件“並且通常包括其他標準協議。當人們說TCP / IP時,它們通常包括UDP over IP(其中使用UDP而不是TCP)和許多其他協議,如ARP,ICMP,DNS,SNMP和其他應用層協議。

應用層

應用程序使用應用層協議,如SMTP(用於電子郵件)。它們位於兩種傳輸層協議之一 - TCP和UDP。一些應用層協議將使用UDP和TCP中的一個或兩個,但大多數僅與一個傳輸層協議一起使用。

傳輸層

TCP和UDP是Internet協議套件中使用的兩種傳輸層協議。 如果有其他人我不知道他們,其他任何人都會代表一個非常小的專家用途。  已經定義了其他傳輸層協議 - 它們的使用可能僅佔全球IP流量的一小部分

互聯網層

雖然理論上可能在TCP之外使用TCP,但實際上TCP總是通過IP使用 - 即Internet協議。 IP在網絡之間移動數據包(將IP視為將多個LAN連接在一起)

網絡接口層

以太網是最常用的承載TCP / IP的低級鏈路層協議系列,但TCP / IP也廣泛用於ATM等。

IP layer diagram From bootdiscs.net


附錄1 - 關於傳輸層協議的說明

在使用Internet協議套件的網絡上重要使用的唯一傳輸層協議是TCP和UDP。

†為了好玩,我測量了我(非常)小型局域網上的流量,包括NetBIOS(通過TCP),SSH,Rsync,電子郵件,軟件更新,DNS,一般Windows-box聊天和一些其他類型的流量。Wirshark Protocol Hierarchy Statistics

請注意Google中的此聲明 他們的QUIC協議的常見問題

你為什麼不建立一個全新的協議,而不是使用UDP? 今天互聯網上的中間框通常會阻止流量,除非它是TCP或UDP流量

(我的重點)


76
2017-07-16 21:12



帶我回到1996年和OSI模型 en.wikipedia.org/wiki/OSI_model - Rudi
有超過2個傳輸層協議: en.wikipedia.org/wiki/Transport_layer#Protocols - Stuart Blackler
@StuartBlackler:有意思的一點,謝謝。是否有任何(除了TCP和UDP)不屬於我稱之為“消失的小專家用途”類別並且通過IP使用?如果我測量的是IP流量 互聯網交換點,除TCP或UDP之外,傳輸層協議的比例是多少? - RedGrittyBrick
以DCCP為例,它仍然是一個新的協議,但我想在接下來的幾年裡你會看到更多的應用程序使用該協議。原因我認為它不是主流,因為我不相信Windows中有它的支持。可以將其視為具有擁塞控制的UDP。對於很多應用程序來說非常方便,比如Skype和遊戲:)看看吧。要回答你的問題,目前可能只是一個非常小的數量 - Stuart Blackler
@Rudi錯誤,您應該意識到這不是OSI參考模型,如果您確實意識到這一點,那麼不要誤導人們認為它是。它是TCP / IP模型/體系結構......有時,TCP / IP體系結構用OSI(OSI參考模型)的術語描述。但顯示的4層和這些名稱,非常TCP / IP而不是OSI。 red的帖子沒有問題,但你的評論充其量是誤導性的。 - barlop


TCP / IP之所以如此常見的縮寫(而不是UDP / IP或SCTP / IP)是因為這兩個協議是一起設計的,而在Vint Cerf和Bob Kahn的原始論文中,這兩個概念是組合成一個協議。此後不久,它們被劃分為IP以提供路由和TCP以提供流量控制,多路復用,錯誤檢測等。直到六年之後,UDP被引入以提供“輕量級”多路復用層而沒有剩餘的涉及TCP的開銷。

儘管如此,TCP和IP是兩個獨立的事情,完全和有意無關。 TCP不需要IP的事實立即顯而易見,因為TCP可以在IPv4和IPv6上不加修改地運行,這是兩種完全不同的協議。

通過一些工作,您可以創建一個與IP相同的競爭協議,但它可能必須包含大多數(如果不是全部)相同的功能,並且可能最終看起來很像IP。您可能會爭辯說IP擴展(例如IPSec)實際上是備用第3層協議,因此您可以繼續使用。


34
2017-07-17 08:00



正確 - TCP的第一個版本包括IP的功能。也許人們說“TCP / IP”的另一個原因是,在您通過IP發送數據的絕大多數時間,您希望保證所有這些都以正確的順序交付,因此您使用TCP。例如,所有HTTP和FTP流量都使用TCP。一類例外是實時數據;例如,Skype使用UDP,因為你寧願在對話中獲取最新的數據包而不是停止所有錯過的數據包。 - Nathan Long


您可以用其他東西替換IP。實際上,這正是您在使用TCP over IPv6時正在做的事情。 TCP仍然是TCP,但IP是v6而不是v4。

AFAIK,沒有人創建任何其他第3層協議來處理它們之上的TCP,但沒有理由你不能。


22
2017-07-17 02:43





TCP和IP就像麵包上的黃油。

你可以配對任何適用於任何協議的東西,但這兩個都是如此 補充 它只是一個美味 可靠的方式 至 轉移數據 並填補互聯網數據的肚子。它潤滑管子以允許其他乾燥食品和數據握手都支持這種配對。但絕不是排他性的。

Q  但是,除了IP之外,TCP是否不可能建立在另一個協議之上?

一個  對的,這是可能的。我喜歡沒有IP的TCP的Morse Code和Pigeon示例。


8
2017-07-17 19:16





我一直聽說TCP是TCP / IP的縮寫

實際上它代表著 Internet協議上的傳輸控制協議

他們的意思是一樣的。

那不對。

首先,以太網是控制實際硬件部件功能的低級硬件系統。

接下來,想一想 IP 作為電話系統或交通標誌。它提供了連接系統兩點的基本控制。

TCP 另一方面,更像是一個消息系統或交通控制官員,它將消息/汽車指向正確的點。

TCP / IP一起提供了一種可靠地向任何兩個連接設備傳輸數據的系統。

通過Internet,當您想要發送或接收數據時,系統的IP部分是控制與線路(或無線波形)進行實際硬件連接的部分。系統的TCP部分是負責獲取數據並將其分解,發送,重新組裝接收的數據以及檢查數據並在必要時重新發送的軟件。

無數的解釋 提供類比和技術細節,尤其是在 視頻表格。 DifferenceBetween.net有一個特別好的關於這一點 學科

但是,除了IP之外,TCP是否不可能建立在另一個協議之上?

是的,你確實可以創建一個 替代系統到TCP 使用IP。看看吧 互聯網協議套件 一些細節。


6
2017-07-16 20:36



說IP提供“連接”兩個點是有點誤導的。 IP提供了一種發送離散個體的方法 包 從一台機器到另一台機器;每個數據包都獨立於其他數據包。 TCP提供了連續的錯覺 連接,這實際上是通過IP發送的一系列數據包。 - Wyzard
IP也與硬件或物理信令無關。這是由較低級別的技術處理的,例如:以太網。 - Wyzard
這個答案有很多錯誤,完全錯過了這個問題。首先,以太網只是一種用於承載IP的鏈路層協議。還有很多其他人,知識產權不知道或不關心他們中的任何一個。 IP與硬件無關;它是網絡之間的路由層,位於用於連接它們的硬件之上。問題的關鍵在於您是否可以在IP以外的其他方面使用TCP,而不是您是否可以使用除TCP之外的其他使用IP的內容(請參閱UDP以獲取該示例)。 - psusi
@synetech,問題是 不 “可以在IP上使用其他東西”。它是“可以在其他東西上使用TCP”,即 無 IP。 - Wyzard
> the fact that !TCP can go over IP does not necessarily mean TCP can go over !IP Huh? psusi試圖通過使用“!”來變得聰明作為“非運營商”。他的評論應該理解為:“非TCP的東西可以通過IP傳播的事實並不一定意味著TC​​P可以覆蓋非IP的東西”。它是參考你答案的最後一句話,它顯示了“替代TCP系統”的存在。但是,顯示存在TCP的替代方案並不一定暗示或暗示存在IP的替代方案。 - Lie Ryan


TCP是第4層協議。它以有序流的形式保證從計算機上的一個進程到同一/另一個計算機上的另一個進程的數據傳輸。

IP是第3層協議。它提供從一個主機到另一個主機的運輸。

只要有一個協議可以主持主機傳輸數據,TCP就可以工作。

因此,TCP可以通過任何協議實現,但是,我們只製作了IP。 IP很簡單,可以完成工作。

不需要另一個第3層協議。


5
2017-07-17 00:05



IPv6怎麼樣? - curiousguy
IPv6怎麼樣?這只是IP。發送和接收數據包的接口保持不變。因此,TCP可以使用相同的功能。操作系統只能從IPv4和IPv6替換功能指針,它仍然可以工作。我不確定你在這說什麼? - snihalani
IPv6和IPv4是 類似,與 類似的接口 對於上層,但肯定 不一樣的協議 而且在功能上並不嚴格等同。 - curiousguy
您也可以假裝UDP與IP協議相同,因為它們提供與上層非常相似的接口:設置本地和遠程端點地址,發送和接收數據包...... - curiousguy