所有的網路請求底層協議是不是都是TCP/IP?

比如文件系統NFS,還有FTP, HTTP, RTP等等協議,底層都是要走TCP/IP協議啊?


計算機網路OSI參考模型最高明的地方是將網路劃分為七層積木:

物理層積木

對應硬體設備,一般只由硬體設備驅動來進行抽插,以乙太網網卡為例,那積木的構成就是:

Hardware + Data Link = Ethernet Card + Ethernet Driver

如果是HDLC介面,則積木的構成:

Hardware + Data Link = HDLC Card + HDLC Driver


數據鏈路層積木

硬體設備驅動,提供介面給所有網路層積木來抽插,不光可以供網路層的IP積木來抽插,舉例:

Ethernet Card + Driver + IP

還可以提供給網路層的IPX積木、AppleTalk積木來抽插,舉例:

Ethernet Card + Driver + IPX

Ethernet Card + Driver + AppleTalk

此外還可以供其它的協議積木如ARP、802.1x 、MPLS、PPPoE來把玩,舉例:

Ethernet Card + Driver + ARP

Ethernet Card + Driver + 802.1x

Ethernet Card + Driver + MPLS

Ethernet Card + Driver + PPPoE


網路層積木

IP層只是最流行的網路層積木,以TCP/IP協議棧的形式嵌入在操作系統內核里,IP層不光提供介面給傳輸層積木TCP/UDP使用,舉例:

Ethernet Card + Driver + IP + TCP

Ethernet Card + Driver + IP + UDP

還可以提供給其它安全協議如ESP/AH來操縱:

Ethernet Card + Driver + IP + ESP

Ethernet Card + Driver + IP + AH

還可以供路由協議OSPF/EIGRP來操縱:

Ethernet Card + Driver + IP + OSPF

Ethernet Card + Driver + IP + EIGRP

此外,網路層還有其它積木,如IPX,AppleTalk,但是現在很少用。


傳輸層積木

如果網路層積木是IP,那傳輸層積木對應的就是TCP/UDP,以TCP/IP協議棧的形式嵌入在操作系統內核里,傳輸層積木主要供應用層積木操縱,如HTTP,SMTP,TFTP,舉例如下:

Ethernet Card + Driver + IP + TCP + HTTP

Ethernet Card + Driver + IP + TCP + SMTP

Ethernet Card + Driver + IP + UDP + TFTP


但是各層積木也不是嚴格的等級制度,非常靈活,比如可以搭積木:

Ethernet Card + Driver + IP + TCP + ESP


咦,這個ESP積木不是在IP積木上的嗎?往上看,確實是的,為何要這麼做呢?那我們看看原來的積木構成:

Ethernet Card + Driver + IP + ESP

這四塊積木有一個問題,無法正常跨越PAT(Port Address Translation)設備,所以我們可以使用五塊積木:Ethernet Card + Driver + IP + TCP + ESP ,這樣的話,就可以無障礙跨越PAT設備了。


比如我們還可以這樣搭積木:

Ethernet Card + Driver + IP + L2TP

Ethernet Card + Driver + IP + UDP +L2TP

上面的是四塊積木,下面的是五塊積木,哪個好呢?下面的更便於穿越PAT設備,所以使用的更廣泛。


有同學會說,既然積木的搭建如此靈活,那我可以不可以這樣搭建積木?


Ethernet Card + Driver + HTTP

當然可以,靠MAC地址來識別HTTP伺服器、客戶端,但是這種訪問只能局限於一個網段,那可不可以這樣呢?


Ethernet Card + Driver + IP + HTTP


當然也可以,伺服器、客戶端可以依靠域名、IP地址來識別,可以跨越多個網段,但是如果丟包了,誰來重傳呢?IP層不幹的,HTTP也不願意干,那不歇菜了嗎?No,我們有一個好的辦法,那就是以下的五層積木:

Ethernet Card + Driver + IP + TCP + HTTP

這裡的TCP積木專門負責可靠性,如果有丟包,TCP層積木負責重傳,這種架構分工明確,Ethernet Card + Driver 負責將幀發到物理鏈路上、從鏈路上接收幀,IP層積木負責Internet上尋找目的地,TCP積木負責數據包的可靠性,HTTP積木負責網頁內容的解讀、打包。

那我們可以搭這樣的積木嗎?

Ethernet Card + Driver + TCP + HTTP

Ethernet Card + Driver + UDP + TFTP


目前這兩種都不可以,TCP/UDP嚴重依賴IP積木提供服務,別人提供的服務還不習慣!

基於UDP積木的應用程序都是不可靠的嗎?

這是一個錯覺!舉個例子:

Ethernet Card + Driver + IP + UDP + TFTP

儘管UDP積木以不可靠傳輸聞名於世,但是TFTP卻很勤勞,自力更生完成數據的可靠傳輸,採用數據傳輸、對方應答的方式。換句話說TFTP完成了 TCP+ 文件傳輸的任務。試想文件傳輸如果不可靠,那傳輸的文件誰敢用?所以文件傳輸必須可靠。

那哪些基於UDP積木的應用程序可以容忍不可靠傳輸?

客觀地說,沒有任何應用程序希望自己的數據被丟棄,但是魚和熊掌難以兼顧,如果數據延遲與數據可靠傳輸一定要取捨的話,有些對實時性要求較高的語音、視頻高優先順序的是:延遲低。

Ethernet Card + Driver + IP + UDP + RTP

延遲低可以完成實時通話,丟幾個包聽不清對方說話內容,最多讓對方重複一遍。


讓我們再來看一個積木

Ethernet Card + Driver + IP + UDP +L2TP

現在把L2TP積木全部展示出來:

【Ethernet Card + Driver + IP + UDP+ L2TP 】+ 【PPP + IP + TCP 】+ HTTP

怎麼看起來那麼複雜?如果我們把第一個【】抽象成一塊積木,稱之為 Underlay。把後一個【】抽象成另一塊積木,稱之為Overlay,那上面的積木簡圖就如以下所示:

Underelay + Overlay + HTTP

是不是看起來簡單明了?


那我們再舉一個關於VxLAN的例子

Ethernet Card + Driver + IP + UDP + VxLAN

展開積木:

【Ethernet Card + Driver + IP + UDP+ VxLAN 】+ 【 Ethernet + 802.1Q + IP + TCP/UDP】+ Application

= Underelay + Overlay + Application


另外,可以參考此篇文章:

http://www.zhihu.com/question/20583641/answer/104529492


rtp,dhcp都是udp,dns可以是tcp也可以是udp。

至於底層是不是ip,可以這麼說,如果你不是從事網路專業,你只能遇到ip,非ip的網路在用戶一級協議已經基本上絕跡了。

原因呢,是因為普通用戶一般訪問外界資源,本地資源不夠,而ip是跨子網最最最……普及的協議(寫一萬個最都不過分)。

第二個原因是隔離系統。各種服務端軟體和客戶端軟體可能不一樣,而ip是基本上所有系統都支持的。擴大了訪問應用範圍。

什麼時候上tcp,什麼時候上udp呢?一般情況下,即時服務走udp,可靠服務走tcp。又想可靠又想即時?最好的辦法是在udp上再增加自己的設計。


噫…

嚴格來說,TCP工作在layer4,IP工作在layer3,都不怎麼底層啊…下面還有layer1和layer2呢…

題主好好琢磨下OSI模型吧…


不是的,例如存儲系統中有一套自下而上的FC網路協議,和tcp/IP完全不一樣。


從TCP/IP分層模型的角度來看:

FTP, HTTP, RTP等等協議都是應用層的協議,那麼就需要底層的來提供服務.
底層為上層提供服務如何理解呢?


網路介面層:為上層提供物理硬體,介質訪問控制等。

傳輸層:為上層提供可靠或者不可靠的服務,因為傳輸層的底層都是盡最大努力交付,也就是不可靠服務,我們在需要可靠服務的時候,就可以使用TCP提供的可靠服務了

是不是都是要走TCP/IP協議?
如果定義這裡TCP/IP協議是TCP和IP協議的話,那麼IP協議肯定需要用到的,TCP就看情況
一般TCP/IP協議代表是TCP/IP協議簇的所有協議,為什麼要TCP/IP來代表呢,因為在TCP/IP協議簇中是非常重要的兩個協議


TCP/IP協議簇有哪些呢,還有那些其他協議呢?收藏了一張圖


題主問的是計算機網路,物聯網裡有很多應用不是基於IP網路,比如ZigBee和藍牙。但是現在的趨勢也是支持IP協議


底層?你得先說明白什麼是底層。底層可以是操作系統應用層,可以是內核層,可以是文件系統層,可以是網路層,可以是物理層。


你需要一本《計算機網路》。。。。這年頭流行不讀書就來提問題么?


tcp/ip 是一個協議族,其本身就包含應用層協議http 等!所以lz這樣問就說不合理的,我想lz是想問http等的底層協議是不是都是tcp協議,當然不是,就http協議本身而言在rfc文檔里明確說明只要是可靠傳輸層協議都可以承載http協議,也就是說http 的底層協議可以是tcp但不僅限於tcp


不是,還有RAW IP。


不正經的抖個機靈,TCP/IP在網工們的眼裡屬於高層,不是底層. 謝謝


不是的,tcpip只是用得比較廣泛


理論上這些應用層的協議可以不用TCP/IP
比如FTP就是一個古老的協議,遠在1971年,TCP/IP出現之前就有了


不是,比如兩台Windows XP計算機,你卸載tcpip!只安裝netbeui協議,仍然可以使用網上鄰居。


上學課上是這麼說的:可靠傳輸,比如通過線路傳輸用的是TCP協議,不可靠傳輸,比如無線傳輸,用的UDP協議。有沒有其他協議,我沒有深究過
之所以叫TCP/IP協議族,是因為這兩個協議太重要了。通信無非就是兩個人正常的對話,TCP就是讓A說的話完整無誤的告訴B;IP協議就是當A要找B說話時,能找到誰是B,而不會把A所說的話告訴其他人。書上說的比較嚴謹,但基本上就這麼個意思。


需要了解網路基礎,TCP/IP是協議簇,同時也不是底層協議,估計車小胖的回答你看得不是太懂,概括來說就是需要。    ○ ____
    ‖    |
    ‖了解!!|
    ‖    |
    ‖ ̄ ̄ ̄ ̄
  ∧_∧
 (`?ω?‖
 丶 つ0
  しーJ


如果你所指的是tcp/ip協議棧,那就是對的。如果指的是tcp/ip模型中的Internet層和傳輸層就不一定了。Internet層可以是ip,ipx,apple talk等。傳輸層可以是tcp,udp。網路接入層可以是乙太網,ppp,fr等。


推薦閱讀:

為什麼tcp 連接斷開只有3個包?
TCP 協議有擁塞控制策略, 網路為什麼還會發生擁塞崩潰?
TCP/IP: 在廣域網(外網)上傳輸數據時會用到ARP協議嗎?
tcp 的可靠性到底指的是什麼?
ospf處在哪個tcp/ip的層次,是不是傳輸層,網上說tcp/ip不夠嚴謹,那麼對於osi呢?

TAG:互聯網 | 計算機網路 | TCPIP | 網路協議 |