為什麼Internet協議 IP, ICMP, IGMP, UDP, TCP 收到有檢驗和錯誤的分組都僅作丟棄處理?

時間 2021-06-01 18:53:01

1樓:二爺

實際原因參考計算機網路

原因是有線網路傳輸資料時,資料完整的概率已經超過99.99%;檢驗演算法的效率更加重要(ipv6中已經不再在ip層攜帶檢驗資料了,因為上層協議總是會進行檢驗),而要支援修復資料,檢驗碼的資料量隨著實際資料的長度而變大,會帶來更大的開銷。這兩點使得修復資料帶來的損耗遠不如直接重傳的收益好。

其實如果你熟悉無線協議的話,你會發現無線協議中就支援資料修復,因為各種干擾使得錯包大大增加,錯誤修復的收益遠大於其帶來的開銷。

2樓:

以IP為例,IP是connection-less and unreliable,它不需要保證通訊質量,所以按照功能來說,它只傳遞即可,並且它也僅僅檢查IP頭而非整個packet。具體通訊質量可以由上層協議來保證,比如TCP。

對於上層協議來說,確實可以通過一定手段來修復錯包,但是修復能力有限。沒有具體研究過FEC等修復演算法,但是印象中修復率不高而且計算量比較大。看應用場合,如果wifi可能需要,但ethernet就不太需要了。

拋開修復演算法,TCP這種reliable的協議可以通過timeout和ACK來保證資料完整性,並且有完整的flow control和congestion control,效率和效果應該都會比修復要高。

個人理解,不一定正確,僅供參考。

3樓:

首先要思考的是,如果要恢復,你能怎麼恢復?重新發乙個包給傳送者讓他重發?那樣是否和 ACK 的功能有重複?

你可以再想一下,如果我們有這種要求目的主機重發包的協議機制,這會不會算一種攻擊?你可以擴充套件一下,看一下 DNS 放大攻擊和 ICMP 放大攻擊。如果我用乙個幾十 B 的小包去讓主機重發乙個幾百 B 的大資料報,會發生什麼?

為什麼IP協議有多種IGP,而只有一種EGP

YouFdMe 就像各個地方有不同的方言在某個範圍內你隨便用都行但是你要是出去了再說方言的話別人就不懂了 這個時候就要用普通話 就是舉個栗子不需要鑽牛角尖 也不是只有一種 EBP 而是存活下來並被公眾所遵守的共同的協議也就剩那乙個了個人理解 憑記憶回答,有錯請見諒,IGP是網內路由協議,協議多的原因...

ICMP協議報文如何傳遞到私有IP?

寒盡不知年 不是所有的ICMP報文都可以通過napt,ICMP的echo request 和reply可以過。因為它們報文裡有乙個id 字段,被用作類似於埠號。可以觀察napt 的轉換表看到這一過程 個人覺得這個問題可能有點混淆,傳遞到私有IP?是指從外到內的主動訪問吧。如果是NAPT的話,不說IC...

為什麼要做個人ip?

網際網路實戰者老林君 因為現在是粉絲經濟時代,人們都比較相信一些專家,比如說我生病了,我要去醫院看看,那我肯定是找一些經驗豐富的老醫生,比如說兩個人,乙個是剛上崗的醫生,乙個是四五十歲的專家的,你相信誰?我估計你一般會相信四五十歲的專家,為什麼,他在這一行做的時間久,經驗豐富所以說你相信他,認可他,...