TCP IP 的鏈路層是可靠的嗎?

時間 2021-05-12 06:09:27

1樓:時雨

是不可靠的。

鏈路層在封幀時通過增加迴圈冗餘碼,在兩端進行校驗,可以實現差錯檢測,意思就是說接收端如果收到資料,那就一定是正確的資料(錯誤的被丟了),但並不能保證發動端傳送的資料全部都能被收到。

至於想實現可靠傳輸要依靠運輸層TCP協議來實現。

2樓:

鏈路層是不可靠的。

在光纖出現之前,鏈路上噪音是很大的,會帶來比較高的誤位元速率。然後通常會使用ECC技術,把誤位元速率降到一定值以下,但並不是零。而且,由於成本的原因,這個允許的誤碼值比較小但不是特別小。

過了這一關,鏈路層的任務就完成了,交給上一層。如果上層需要更低的誤位元速率,就由上層再想辦法處理。

光纖出現之後,就出現了大變化,光纖本身的誤位元速率非常低。這樣鏈路層就相當可靠,需要上層處理的概率就比較小。我估計這是IP層/TCP層的校驗碼比較弱但大家仍然滿意的乙個原因。

但整個廣域網不僅有光纖,還有很多電子裝置,總的來看,還不能說鏈路層絕對可靠。

3樓:tracy要開心

首先,network layer的傳輸是不可靠的,換言之,IP傳輸是不可靠的。而transport layer的TCP是可以實現可靠傳輸的。

其次,鏈路層也就是data link layer的傳輸更是不可靠的。

最後,幀填充,可以是IP在切片的時候,尾幀長度不夠,那麼可以理解成network layer做的填充,有效資料的最後乙個位元組是特殊字段。另外,也可以是物理層填充,在沒有路由器或者交換機的網路。

FYI: 最短幀的限制的歷史原因是802.3的CSMA/CD。

在shared networks,傳送幀的節點在傳送當前幀結束前,要求幀頭已經傳到了bus/hub互聯的每個節點,也就是propagation time less than transmission time. 這樣,傳送節點在檢測到collision的時候才能知道這是它發的幀和別人衝突了,因為它當前幀還沒發完。這也就要求節點是可以收發同時。

這也就多帶出了乙個概念,為什麼802.11協議不能用CDMA/CD,只能用CDMA/CA。

4樓:這是一種懷念

TCP/IP沒有規定鏈路層,現有的鏈路層和物理層協議一般是乙太網。TCP/IP協議簇關注的是網際互聯和應用到應用的通訊。所以TCP/IP協議簇嚴格來講只想解決互聯問題。

也就是各種不同體系結構的網路的互聯。只是目前網際網路的下兩層已經基本被乙太網占領,所以才會有一種鏈路層是TCP/IP一部分的錯覺。乙太網的鏈路層是不可靠的無連線無狀態的不可靠服務,這在乙太網幀格式上就表現出來了。

但是TCP可以實現可靠傳輸,雖然在底層沒有實現可靠鏈路。這主要是因為要實現可靠傳輸需要付出很大的代價,參考TCP協議的格式和運作方式就能明白。所以TCP/IP的核心思想是把複雜的東西放在端系統處理,其他地方盡量簡單。

這也是網路分層原理的魅力所在,把什麼問題放在什麼地方處理會更加高效合理。當然你也可以發明乙個不分層的網路體系。

5樓:馬甲

手機打字費力,先強答一點,占個坑。

TCP/IP 設計出來的時候就說的是 OSI 七層標準裡網路層以及以上的層。TCP/IP 設計的目的就是在各種不同的網路實體間互聯的。對於TCP/IP 來說,只要資料鏈路層能傳遞IP資料報就行。

也就是說,資料鏈路層既可以是可靠的,也可以是不可靠的。底層的事對上層來說是透明的,也就是無所謂的,能提供服務點就行。

6樓:車小胖

問題一:鏈路可靠性

總體來說,網線比無線可靠,但網線也不是100%可靠,在交換機的入埠錯誤統計上,CRC Error 一般都是名列前茅,造成CRC Error 的原因有:網絡卡的軟體故障、硬體故障、網線質量、訊號干擾。

曾經在資料中心裡,接入層的交換機某些入口有1.5%% 的CRC Error,先換網線,情況依然。到最後把伺服器重啟,CRC Error 消失,過幾天故障依然。

後來發現這種情況只發生在某個型號,特定版本的伺服器上,解決方案是公升級軟體版本,故障消失。

無線是很不可靠的,可以在電腦上ping 無線路由器,ping 100個包,一般都會丟幾個。造成丟失的原因:因為周圍有很多任務作在同乙個頻端的無線路由器,互相會干擾,造成無線訊號不可用,從而丟棄。

還有乙個原因,無線路由器與電腦之間有很多牆,訊號衰減很多,再加上干擾,最後變得面目可憎而被拋棄。

問題二:如何分幀?

首先乙太網幀是段狀結構,不是連續的,幀與幀之間有乙個時間間隙(Time Slot)

如上圖,這個Inter packet gap 就是間隙,在10/100/1000/10000 G的乙太網上,這12 byte 對應的是不同的時間間隙,速率越高,時間間隙越小。

問題三: 位填充

IP層做位填充

IP層處理IP包是以32 bit (4 byte)為乙個單位,所以IP包的總長度如果不是 4 byte 的整數倍,則需要填充至整數倍,填充內容為0x00(16進製制)。

網絡卡做位填充

乙太網幀如果長度小於64 byte(其中包括乙太網頭部14 byte,幀校驗FCS 4 byte),網絡卡需要將其填充到至少64 byte,滿足網絡卡對最小幀長度的限制。

假設IP層發給網絡卡的包長只有40 byte, 則網絡卡需要填充至少 6個 byte 的 0x00(16進製制)。

乙太網頭 + IP + 0x 00 00 00 00 00 00 + FCS

問題四:如何讓接收方知道位填充的長度?

IP包頭有IP包總長度,那位填充的長度就可以根據這個等式得到:

位填充長度 = 乙太網卡提交給IP層的包長 - IP包總長度

其中 乙太網卡提交給IP層的包長 = 網絡卡接收幀 - 乙太網幀頭 - FCS

7樓:張楊

網絡卡物理層會把bit轉為電訊號,網絡卡之間是有時鐘同步的,fram之間有間隔,為了把frame提出來,frame前還會有前導碼,到了TCPIP,前導碼會被剝離,拿到的就是鏈路層的幀。

對於多填充的幾個位元組,用wireshark抓包很容易看到,為了滿足鏈路層最小幀的限制,比較小的包,報文末尾會有4個0……這個4個0就是填充上去的。

8樓:陳碩

1. 不可靠。

2. 分幀是硬體完成的,例如乙太網是靠 frame 之間的 gap。

3. 接收端的網路層(IP 層)會丟棄多餘的填充位元組,因為 IP header 裡有長度字段。

雲服務是安全可靠的嗎?

偷故事的人 現在,雲服務越來越多,我們承認雲服務是有很多好處,但雲儲存也同樣存在著一些問題。下面是資料上雲儲存的幾個主要壞處 1.安全性與穩定性得不到保障 當企業實施資料上雲之後,必然要將資料從原來的主儲存系統遷移到新的雲儲存系統中,這個遷移的過程產生了極大的安全隱患,若操作不當可能導致企業資料丟失...

實際應用中,TCP IP協議棧是如何工作的?

清風竹影 看了一下目前的幾個回答,作為乙個自以為在這方面理解比較深的,從原理和自身的理解來直觀的問答一下 問題一 協議棧是分層的 對於流程分析基本是對的,但是原理還是有很大偏差。協議棧分層應該大家都知道,但是怎麼理解呢?傳送HTTP請求,應用層會向TCP層傳送資料報文。TCP層看到的是資料,它是根據...

請問pyqt的tcp ip程式設計怎麼學習?

ydc 你可以帶著思考來學習tcpip,機器無非就是乙個帶著unique id的節點,路由器等無非就是連線這些節點或者類似自身的中間節點。現在你要考慮以下問題 1 當節點加入或者離開時,你如何更新各中間節點的路由資訊?也就是如何更新圖的連線。2 如何管理路由資訊使得即便某些中間節點突然斷了,圖還是聯...