-
1 # 喲喲吼說科技
-
2 # 愛答問題的小星星
眾所終止TCP是一種面向連線的可靠傳輸協議,但是如何實現可靠的傳輸,為什麼同處傳輸層的UDP就是不可靠的傳輸協議?這還要一探究竟,下面談一下:
相關知識介紹所謂的可靠性是指什麼:基於不可靠的網路層(IP)之上對資料流提供可靠的傳輸是指:資料包在傳輸中不被損壞,丟包以及篡改,同時要按包順序及時的傳送給通訊物件。TCP定義:TCP(Transmission Control Protocol 傳輸控制協議)位於OSI的傳輸層,該層主要提供端對端的可靠傳輸,該層透過埠號(port)來將資料送給指定的應用程式。可靠機制:為保證TCP能可靠傳輸,有一系列機制為其服務,主要有:校驗和:主要用於檢驗資料包在傳送過程中沒被損壞和篡改。序號及確認機制:對資料包進行合適的分組以及分配序號,以便接受端接收到資料後能按正確的順序組裝,確認機制就是用於告知通訊對端資料包的接收狀況。定時重傳:啟動定時器,當資料傳輸超時後,傳送端將超時的那個資料包重新發送。視窗控制:視窗控制來動態的調節傳送資料的大小,從而控制因流量過大導致資料傳輸不穩定,同時透過分配合理的視窗大小能有效的利用網路資源。TCP首部要了解TCP的可靠傳輸協議就不得了解一下TCP首部欄位,因為首部欄位中的好幾個就是為了可靠傳輸設立的。
序號:32位的序列號用於標識傳送的資料位元組流在該報文中的第一個資料位元組,當順序號超過2^32 - 1後重新從0開始。確認號(ack):當ACK=1時有效,當ack=y時,表明已經成功接收y-1位元組的資料。ACK確認標誌位:當ACK為1時,表明向對端通訊物件傳送確認資料包。視窗大小:用於控制傳送資料的大小,太大容易擁塞,太小浪費網路資源。校驗和:用於校驗資料包在傳輸過程中沒被損壞,竄改。三次協商相關可靠機制:上面那麼多可靠機制,在三次握手的過程中得以協商確定,像同步各自的序列號,協商視窗大小等,因為一開始誰也不知道該這些引數,必須透過握手才能瞭解。
相關機制的實現:很多機制都是動態協商的,不是一成不變的,要改變就得有一定的實現機制和說明。
視窗大小調節:透過擁塞控制來調節傳送資料大小的視窗,TCP擁塞的三個策(1)慢開始(指數增大)
(2)擁塞避免(加法增大)
(3)擁塞避免(乘法減小)
剛開始很慢的速度傳送資料,然後指數級別增大,達到一個閾值時,然後緩慢增加,直到檢測到有擁塞發生時,此時的最大傳輸速率稱為擁塞視窗。
真正傳送視窗的大小=min(接受視窗大小,擁塞視窗大小),從而實現動態調配發送視窗大小。校驗和的計算:(1)把校驗和欄位置為0;
(2)對IP頭部中的每16bit進行二進位制求和;
(3)如果和的高16bit不為0,則將和高16bit和低16bit反覆相加,直到和的高16bit為0,從而獲得一個16bit的值;
(4)將該16bit的值取反,存入校驗和欄位。
綜上,TCP透過差錯控制(序號和確認機制),擁塞控制等來確保它資料傳輸的可靠性。
-
3 # 中小學生程式設計輔導家教
其實比較簡單,一份資料可能較大,一次傳送不完,需要多次傳送,比如傳送10次,這10次的資料,一次都不能少,而且,順序需要按照之前資料的順序拼裝,由於網路的不可靠,10個數據包,可能只收到9個,或是某個包重複了,有的包又少了。tcp協議,就是保證資料正確送到對端
-
4 # 遷徙de麻雀
這裡的可靠性主要指的資料傳輸的可靠性,要理解tcp的可靠性,那就先來看我們的網路不可靠的主要原因,再看tcp從哪些角度使用哪些策略去嘗試解決這些問題。
不可靠的原因前提條件:假定你已經知道不同協議層的資料分組(傳輸層的報文段,網路層的資料報,應用層的報文)的概念。
從大的方面說,我們這個龐大的網路,包含了眾多裝置(主機和路由器)和線路,他們都有硬體和軟體故障的可能性。同時路由裝置等都有吞吐量等效能瓶頸,超過處理能力的分組都會被丟棄。
所以我們不能保證單個數據分組的某一次傳輸100%地成功!對於網路層來說,它提供的服務是儘可能讓這個分組傳輸成功,如果真碰到上面的問題,對網路層(比如IP)而言,對於單個分組傳輸這項任務它盡力了,成功失敗和它並無關係。以上描述的資料分組在網路層就是IP資料包。
IP報文的單次傳輸成功率沒法得到保證,那就只能由雙方主機在傳輸層來解決。
TCP的策略前提條件:你網路沒欠費,客觀網路環境是路由可達的,TCP的握手已經完成。
跌倒並不可怕,可怕的是再也不站不起來,還順勢睡了下去。一次不成功,那再來一次!
TCP首先假設整個網路就是不可靠的,失敗了就重新發送一遍,直到成功為止。如何算髮送失敗了,不要寄希望於傳輸層來報告每個資料分組是否傳輸成功(可參考ICMP),傳輸層重點考慮的應該是效率!傳送-確認,這麼一個機制日常生活中很常見吧?老師講課,講一段就要問:聽懂了嗎?這個就是老師要從學生那獲得確認(雖然會有人假報)。這個確認你不可能用一年的時間去等待,黃花菜都涼了,所以確認需要是有超時限制。
1、確認和超時重傳是tcp保障傳輸可靠性保做的最核心的事情
重傳的意義就是上面的老師聽到你說不懂那就再給你講,直到你說聽懂了為止,要是你實在聽不懂,那老師也最終知道你聽不懂了,雖然教學失敗了,但是這個確認過程是成功的。回到正題上來,只要網路可路由,雙方主機TCP維護的緩衝區等正常,資料總能傳遞到,並且雙方都能或得明確地確認,如果因為故障的確無法傳遞,那傳送方至少是可以知道傳輸失敗這點。這裡面還有個重要的事情是TCP基於資料流,它還提供資料校驗(校驗和)和序號(分片)維護,保證資料的完整性和正確性。
當然,tcp不僅僅做這些事情。雖然它假設了整個網路或者說傳輸鏈路的不可靠性,但是它還考慮瞭如何儘量提高這個可靠性!
2、流控制和擁塞控制便是提高可靠性兩個主要的策略。
流控制避免傳送方和接收方被過量的分組淹沒,這個透過控制傳送速度就可以做到,實際由滑動視窗(滑動視窗的大小由雙方主機協商確認)機制來實現的。
而擁塞控制實際上可以看做“道德”層面的問題。網路裝置屬於公共資源,拿交通舉例子,某條大街此刻已經發生擁堵,其它車輛還不停地往那個地區湧入,交通是不是更亂?遺憾的是,網路的世界裡沒有交警這種強制角色,也沒有高德、百度之類的擁塞提示工具,路由器如果變得擁塞,將出現快取溢位和分組丟失。如果其它的主機還不停地向網路傾瀉分組,整個網路狀況將更惡化。AIMD、慢啟動和擁塞視窗(非滑動視窗)等都是TCP使用的擁塞控制策略。UDP也因為這個“道德”問題受到過很多專家的批評。
總而言之,流控制和擁塞控制分別在主機級別和網路鏈路級別做了可靠性提升的努力。
回覆列表
TCP(Transmission Control Protocol,傳輸控制協議)是面向連線的、可靠的傳輸層協議。
如題,tcp協議的可靠性具體指什麼?
喲喲認為TCP協議的可靠性主要是由其機制來實現的,相對比UDP協議來說,UDP協議提供的是不可靠的資料傳輸服務,即不保證資料包能傳送至對端;而TCP協議是基於不可靠的IP層進而在傳輸層提供可靠的傳輸服務,保證資料能夠傳送至對端,並且保證資料不會損壞或丟失。
下面喲喲來簡單介紹一下TCP的傳輸機制:
1、三次握手機制三次握手機制在一定程度上保證了資料的可靠傳輸,兩端在建立連線時,透過請求--同步請求應答--確認應答三個步驟來確認兩端同步知曉建立連線;
2、重傳機制由於網路抖動或不穩定等問題造成資料包丟失,在一定的時間段對端沒有收到該資料包時,會告知傳送端重傳該資料包,保證了資料的完整性;
3、資料校驗TCP首部有個欄位是一個欄位就是校驗和,透過將偽首部、TCP首部以及資料使用累加和校驗出一個數字放入校驗和欄位裡,接收端再透過同樣的演算法去核對校驗和是否正確,保證了資料的安全性;
4、資料分片和排序分片在IP層的話是根據MTU值的大小來決定的,在傳輸層的話是透過MSS的值來決定,在資料包過大需要分片,對端接收到這些分片資料後根據TCP首部的標示會將這些分片進行重組,保證資料的完整性;
5、擁塞控制防止過多的資料傳入網路中造成網路裝置或鏈路的負載,保證了資料可以穩定、安全、快速的傳送至對端;