tcp 的可靠性到底指的是什麼?

時間 2021-05-11 00:09:17

1樓:fnq9999

可參考RFC793

TCP提供可靠交付的服務:

無差錯:校驗和機制,有差錯直接將該報文丟棄,其他什麼也不做。

不丟失:累積確認和超時重傳

不重複:序號

按序號到達:序號

下圖出自RFC793 RFC793

2樓:Comzyh

反正這個可靠性他也沒說清楚是什麼,我就把我知道的講一下。

TCP 和 UDP 最大的功能區別在於建立連線後,能保證報文即使亂序抵達,不會亂序報告給上層

報文中間有丟失,也不會不會越過丟失的部分報告給上層有流量控制功能

TCP 和 UDP 都有這個檢驗和字段(UDP某些情況允許沒有),他們都能夠抵抗傳輸錯誤。但是不能抵抗有意修改,因為如果是有意修改,修改者可以重新計算校驗和。

如果要抵抗篡改,可以考慮使用TLS(安全傳輸層協議)

3樓:keySMILE

面試官的確說錯了

可靠性不(等於或包含) (防篡改或防重放或防洩密)簡單的說,TCP有ACK機制保障端到端的可靠性,這個可靠性指乙個tcp段,如果傳送失敗,是會重傳的。tcp上層機制,例如應用軟體(通常)無需承擔確保傳輸可靠性的。

而防篡改、防重放、防洩密,這些安全性保障,通常是需要由 IPSec 或 TLS 等機制配合金鑰(如簡單的口令或更複雜的PKI體系)來提供。

4樓:lewiszlw

1.確認和重傳機制

2.資料校驗

3.資料合理分片和排序

4.流量控制

5.擁塞控制

我面試就是這麼答的,再細問就說說如何確認和重傳如何進行擁塞控制等等。。。最近也在找工作。。

5樓:

TCP 協議之所以被認為是可靠性傳輸,其底層實現機制主要包括三個方面:

使用序列號對傳輸的資料進行編號,資料超時重傳,資料確認應答。

而不像UDP是面向無連線的。

6樓:就是弟弟

tcp的可靠性說的是傳輸是有應答的,跟udp不一樣有去無回,雖然應答可能合併,面試官提的那個屬於資訊保安,加個md5值就能防止被篡改了,真是搞笑。。。

7樓:往事不回頭

對資料的負責, UDP傳送完就完事了,丟失了並沒有任何機制,而TCP卻有些機制來保證資料傳輸的可靠性,比如說重傳機制,ACK等

8樓:Reid Chan

問題讀起來怪怪的 (就是我猜到他想問什麼,但是問題表述又不太一致)果然面試官的回答就搭不上, 想考察network硬是問成考察security的樣子.

這樣問如何:

TCP使用哪些手段來實現Reliable TransmissionTCP使用什麼手段來驗證資料正確性, 你覺得有什麼缺陷.

大家都是民科的話, 就不要互相傷害了.

9樓:張鐸

面試官這個就扯淡了,我知道你的校驗方法,我難道不能改你資料的時候連你校驗的部分一起改麼。。。

防止資料傳輸過程中的隨機出錯和防止資料被修改不是乙個層面上的東西,TCP在前者上做了一些工作,後者是安全領域搞的事情,通訊加密,防中間人等等,跟TCP本身關係不大。。。死摳到底什麼叫可靠傳輸就沒意思了。。。

10樓:石海

理論上永遠沒有辦法可以解決tcp資料被修改的問題,只可以讓可能性足夠的小。 雖然我們已經加了一層層的checksum 可以檢驗出傳送資料出錯的情況,但是即使這樣仍然無法判斷出checksum 和被check 資料同時發生變更的情況。

11樓:

TCP可靠性,在教科書中的描述主要是對資料的位元無差錯,不重不漏,且最終接收方能按序交付上層。當然為了盡可能避免發生丟包,附帶了流量控制和擁塞控制的功能。一句話,TCP可靠性主要針對傳輸過程中的差錯。

並沒有對資料被竊取等安全效能做特別考慮。

我看的教材是計算機網路,自頂向下設計

其中關於傳輸安全效能的考量,是放在socket層面。

應用層把資料傳給SSL,SSL加密之後給套接字,套接字交給傳輸層。

如果放在七層網路模型來看。SSL其實充當了表示層的作用。

12樓:

在協議棧的上下文中,TCP/UDP 的可靠性是針對底層不可靠的網路和鏈路而言的,處理的是丟包、錯包、重複、亂序甚至擁塞等一系列問題。

被惡意篡改是『安全性』問題。

13樓:Chander.Pan

TCP的可靠性和安全性完全兩碼事,這個面試官都搞錯了,可靠性是指丟包會重傳,傳輸過程不被修改才是安全性,這個問題就大了,http協議裡有用,但是放到原始TCP套接字上未免大材小用。面試官問得應該是如何避免一幀資料有部分丟失,用TLV的方式非常原始,json的自我校驗就可以解決這個問題。

14樓:

講真,題主能不能說說這是哪家公司?給個名字,好讓別人少去踩坑?

這面試官給的解決方案,顯然既解決不了可靠性,也解決不了安全性。加個長度校驗就想保證不被篡改未免太tm瞧不起人了

15樓:朝聞道

在每個 tcp 段的資料部分首部,額外使用若干個位元組,用於標示這次要傳送的資料的長度,在接收端,通過檢測這若干個位元組以及資料的長度,來判斷此次通訊是否被修改。

應該是來判斷此次通訊是否有鏈路動盪引起的錯誤。不是被人為修改。

(1)有錯誤的包會丟掉重傳。

(2)成功接收會發確認包。

16樓:Thinkraft

防意外丟失和防蓄意攻擊是兩碼事。TCP本身主要是針對前者設計的,也就是說傳輸過程中受到干擾,錯了一兩位資料、丟了一兩個包之類的情況,它能比較好地應對,也就是題主你所謂的可靠

但是,這並不能避免你的明文資料被嗅探或被篡改。網路上的各種第三方裝置隨時可能截獲資料報檢視內容,或者偽造資料報——checksum這種校驗非常弱,規則都是透明的,同時篡改資料內容和校驗數即可輕而易舉地狸貓換太子。也就是我們所謂的不安全

應對的辦法就是加密。沒有金鑰的第三方即使拿到資料報也無法還原成有意義的內容,更無法修改替換。還有乙個很重要的是身份認證,防止雙方從最開始就被中間人兩頭騙。

SSL/TLS是乙個比較成熟通用的解決方案。

題主描述中面試官給出的方案有點萌。

17樓:Ivony

確保資料在傳輸中不被篡改,是確保資料的完整性

通常來說方案是數字簽名

在每個 tcp 段的資料部分首部,額外使用若干個位元組,用於標示這次要傳送的資料的長度,在接收端,通過檢測這若干個位元組以及資料的長度,來判斷此次通訊是否被修改。

這個方案基本聊勝於無

雖然TCP協議也有校驗和來確保包的完整性,但是這個校驗和不能防止惡意篡改,而是應對網路傳輸中的干擾訊號等。

然後又發現很多人沒有分清楚資料傳輸安全性和資料完整性之間的區別。

確保資料完整性只需要數字簽名,不需要對整個資料進行加密,數字簽名的原理是對資料的摘要資訊(SHA、MD5)進行非對稱加密來校驗資料的完整性。用途其實非常廣泛,例如作業系統自動更新的檔案,驅動程式,這些都用數字簽名來確保完整性,卻不需要用什麼安全傳輸協議來傳輸

18樓:

1.完整性檢查

tcp協議header中有個checksum,用來檢驗接收到的資料的完整性,保證沒被篡改。接收端根據tcp data計算checksum,如果與header中的checksum一致則接受並回覆ack。

2.tcp要求必須被對端接收並收到對端回覆的ack才能進行後續的資料傳輸,否則就進行這個tcp資料的重傳,這樣就保證盡最大可能將資料送達。當然協議中有重傳上限的設定。

這就是為什麼說tcp是best effort,udp是try。

寶駿的可靠性如何?

當關一夫 相信90 的人都不會認為寶駿可靠性和品控好於寶馬,可問題是為什麼可能還有10 認為有可能呢?個人覺得,首先品控方面沒有爭議,肯定是寶馬更好,這裡面主要是由於製造經驗的積累更多,以及更高定位要求的質量標準也更高。說到可靠性,大多數人免不了以偏概全,某個品牌出了某個質量問題或者排行榜靠後了,就...

RocketMQ如何保證訊息的可靠性?

中介軟體興趣圈 RocketMQ如何保證訊息的可靠性,我覺得可以從訊息傳送 訊息消費兩個方面進行展開分析。講到訊息可靠性就必然會提到訊息丟失,明確訊息丟失的語義非常重要 從訊息傳送的視角來看訊息丟失 Broker服務端向客戶端返回傳送成功後的這些訊息,必須保證在一定時間範圍內可以查詢,在客戶端呼叫訊...

iphone 7 的潛水可靠性?

Podragon潛水腰包 海水的腐蝕性是極高的,不要做無謂的犧牲,除非你是土豪。另外,水下劃屏操作手機,會受水流的影響,除非你一直使用物理鍵。如果真要下海攝影,則考慮帶個高透的手機防水袋吧。 金莎 國外有做過這方面的測試,下到過30公尺,是在淡水裡,理論上在海浬也是可以的,但是30公尺是極限,當然如...