tcp in tcp不是不好,而是根本不可用,這源自於tcp協議本身的設計:tcp的可靠性是基於丟包檢測和重傳的,他依賴於tcp的下層鏈路是不可靠的這一事實,如果說tcp的下層鏈路是可靠的話,那麼tcp的重傳機制根本就是不必要的。
如果下層鏈路是tcp,則:
tcp的可靠性是靠超時重傳來保證的,而超時時間,即rto是乙個基於rtt動態計算的值,由於tcp的rtt本質上是測不准的,無法保證rtt測量值的準確性,這會導致tcp1和tcp2的超時timer到期時間的關係是任意關係,只要tcp2的丟包重傳造成了tcp1的超時,就會發生重傳疊加,即兩層tcp均發生了針對同那個乙個資料報的重傳,而這是冗餘的,一旦內層tcp1的重傳速度稍微大於外層tcp2的重傳速度,資料報就會在r1處堆積。佇列會指數性增長,觸發tcp1更加激烈的丟包超時重傳。
另一方面,tcp是20位元組的報文頭,而udp只有8位元組的報文頭,使用tcp相當於使用者的資料少傳輸12個位元組。
隧道而言, TCP In TCP會發生什麼
上週晚上在家中,當我搭起熟悉的ss梯子時,發現不可用了t.t。登陸到控制台檢視,發現國內的ip被block了。昨天瞎逛,看到乙個開源專案 udp2raw tunnel,他實現的是將乙個ip報文偽裝成tcp報文,目的是穿過網路中udp防火牆.哈?這難道是tcp in tcp?這玩意兒不是不可用嗎?很早...
為什麼使用if else分支語句不好
為什麼使用if else分支語句不好?不是說不能用,而是說在業務邏輯層等比較抽象的地方使用冗長的if else不好。首先能想到的一點就是 違反了 open close原則 open to extesion close to modification 每一次有新的邏輯變動,都需要了解原有 的邏輯,並在...
為什麼非常努力卻結果不好?
為什麼非常努力卻結果不好?平等思維唐曾磊 很多人做事情很努力,但總是看不到提高,自己感到非常沮喪,同時還怨天尤人,覺得世界對自己不公。到底為什麼非常努力了,卻得不到結果呢?請看下面的平等思維對話。 唐老師,我非常努力了,為什麼結果不好?老唐 努力了為什麼結果要好? 可是,我已經很努力了啊!老唐 努力...