古詩詞大全網 - 團隊口號 - 傳輸層協議(TCP, UDP)

傳輸層協議(TCP, UDP)

傳輸層定義了主機應用程序之間端到端的連通性。傳輸層中最為常見的兩個協議分別是傳輸控制協議TCP(Transmission Control Protocol)和用戶數據報協議UDP(User Datagram Protocol)。

為了簡化問題說明,本課程以Telnet為例描述相關技術。設備支持通過Telnet協議和Stelnet協議登錄。使用Telnet,Stelnet v1協議存在安全風險,建議妳使用STelnet v2登錄設備。

為了簡化問題說明,本課程以FTP為例來描述相關技術。設備支持通過FTP協議,TFTP以及SFTP傳輸文件。使用FTP,TFTP,SFTP v1協議存在風險,建議使用SFTP v2方式進行文件操作。

TCP是壹種面向連接的傳輸層協議,提供可靠的傳輸服務。

TCP是壹種面向連接的端到端協議。TCP作為傳輸控制協議,可以為主機提供可靠的數據傳輸。TCP需要依賴網絡協議為主機提供可用的傳輸路徑。

TCP允許壹個主機同事運行多個應用進程。每臺主機可以擁有多個應用端口,沒對端口號,源和目標IP地址的組合唯壹地標識了壹個會話。端口分為知名端口和動態端口。有些網絡服務會使用固定的端口,這類端口稱為知名端口,端口號範圍為 0~1023 。

比如:FTP,HTTP,Telnet,SNMP服務均使用知名端口。

動態端口範圍 1024~65535 ,這些端口號壹般不會固定分配給某個服務,也就是說許多服務都可以使用這些端口。只要運行的程序向系統提出訪問網絡的申請,那麽系統就可以從這些端口號中分配壹個供該程序使用。

TCP通常使用IP作為網絡層協議,這是TCP數據被封裝在IP數據包內。TCP數據段由TCP Header(頭部)和TCP Data(數據)組成。TCP最多可以有60個字節的頭部,如果沒有Options字段,正常的長度是20字節。

TCP Header是由如上圖標識壹些字段組成,這裏列出幾個常用字段。

註意:

1)主機A(通常也叫客戶端)發送壹個標識了SYN數據段,標識期望與服務器A建立連接,此數據段的序列號(seq)為a;

2)服務器A回復標識了SYN+ACK的數據段,此數據段的序列號(seq)為b,確認序列號為主機A的序列號加1(a+1),以此作為對主機A的SYN報文的確認。

3)主機A發送壹個標識了ACK的數據段,此數據段的序列號(seq)為a+1,確認序列號為服務器A的序列號加1(b+1),以此作為對服務器A的SYN報文段的確認。

TCP是壹種可靠的,面向連接的全雙工傳輸層協議。

TCP連接的簡歷是壹個三次握手的過程。

TCP的可靠傳輸還提現在TCP使用了確認技術來確保目的設備收到了從源設備發來的數據,並且是準確無誤的。

確認技術的工作原理如下:

目的設備接收到源設備發送的數據段時,會向源端發送確認報文,源設備收到確認報文後,繼續發送數據段,如此重復。

如圖所示,主機A向服務器A發送TCP數據段,為描述方便假設每個數據段的長度都是500個字節。

當服務器A成功收到序列號是M+1499的字節以及之前的所有字節時,會以序列號M+1400+1=M+1500進行確認。另外,由於數據段N+3傳輸失敗,所以服務器A未能收到序列號為M+1500的字節,因此服務器A還會再次以序列號M+1500進行確認。

註意:上面說到,數據段 N+3 傳輸失敗,那麽第二次確認號M+1500,主機A會將N+3,N+4,N+5全部發送壹次。

TCP滑動窗口技術通過動態改變窗口大小來實現對端到端設備之間的數據傳輸進行流量控制。

如圖所示,主機A和服務器A之間通過滑動窗口來實現流量控制。為了方便理解,此例中只考慮主機A發送數據給服務器A時,服務器A通過滑動窗口進行流量控制。

例子中:

主機A向服務器發送4個長度為1024字節的數據段,其中主機的窗口大小為4096個字節。服務器A收到第3個字節之後,緩存區滿,第4個數據段被丟棄。服務器以ACK3073(1024*3=3072)響應,窗口大小調整為3072,表明服務器的緩沖區只能處理3072個字節的數據段。於是主機A改變其發送速率,發送窗口大小為3072的數據段。

主機在關閉連接之前,要確認收到來自對方的ACK。

TCP支持全雙工模式傳輸數據,這意味著統壹時刻兩個方向都可以進行數據的傳輸。在傳輸數據之前,TCP通過三次握手建立的實際上是兩個方向的連接,壹次在傳輸完畢後,兩個方向的連接必須都關閉。

TCP連接的建立是壹個三次握手過程,而TCP連接的終止則要經過四次揮別。

如圖:

1.主機A想終止連接,於是發送壹個標識了FIN,ACK的數據段,序列號為a,確認序列號為b。

2.服務器A回應壹個標識了ACK的數據段,序列號為b,確認序號為a+1,作為對主機A的FIN報文的確認。

3.服務器A想終止連接,於是向主機A發送壹個標識了FIN,ACK的數據段,序列號為b,確認好為a+1。

4.主機A回應壹個標識了ACK的數據段,序列號為a+1,確認序號為b+1,作為對服務器A的FIN報文的確認。

以上四次交互完成了兩個方向連接的關閉。

TCP斷開連接的步驟,這個比較詳細:

/ctrl_qun/article/details/52518479

UDP是壹種面向無連接的傳輸層協議,傳輸可靠性沒有保證。

當應用程序對傳輸的可靠性要求不高時,但是對傳輸速度和延遲要求較高時,可以用UDP協議來替代TCP協議在傳輸層控制數據的轉發。UDP將數據從源端發送到目的端時,無需事先建立連接。UDP采用了簡單,容易操作的機制在應用程序間傳輸數據,沒有使用TCP中的確認技術或滑動窗口機制,因此UDP不能保證數據傳輸的可靠性,也無法避免接受到重復數據的情況。

UDP頭部僅占8個字節,傳輸數據時沒有確認機制(註意,但是有校驗和)。

UDP報文分為UDP報文頭和UDP數據區域兩個部分。報頭由源端口,目的端口,報文長度以及校驗和組成。UDP適合於實時數據傳輸,比如語音和視頻通信。相比TCP,UDP的傳輸效率更高,開銷更小,但是無法保證數據傳輸可靠性。UDP頭部的標識如下:

1)16位源端口號:源主機的應用程序使用的端口號。

2)16位目的端口號:目的主機的應用程序使用的端口號。

3)16位UDP長度:是指UDP頭部和UDP數據的字節長度。因為UDP頭部長度是8字節,所以字段的最小值為8。

4)16位UDP校驗和:該字段提供了與TCP校驗字段同樣的功能;該字段是可選的。

使用UDP傳輸數據時,由 應用程序 根據需要提供報文到達確認,排序,流量控制等功能。

主機A發送數據包時,這些數據包是以有序的方式發送到網絡中的,每個數據包獨立地在網絡中被發送,所以不同的數據包可能會通過不同的網路徑叨叨主機B。這樣的情況下,先發送的數據包不壹定先到達主機B。因為UDP數據包沒有序號,主機B將無法通過UDP協議將數據包按照原來的順序重新組合,所以此時需要 應用程序 提供報文的到達確認,排序和流量控制等功能(也就是說UDP報文的到達確認,排序和流量控制是應用程序來確定的)。通常情況下,UDP采用實時傳輸機制和時間戳來傳輸語音和視頻數據。

UDP適合傳輸對延遲敏感的流量,如語音和視頻。

在使用TCP協議傳輸數據時,如果壹個數據段丟失或者接受端對某個數據段沒有確認,發送端會重新發送該數據段。

TCP重新發送數據會帶來傳輸延遲和重復數據,降低了用戶的體驗。對於延遲敏感的應用,少量的數據丟失壹般可以被忽略,這是使用UDP傳輸能夠提升用戶的體驗。

總結:

1.TCP頭部中的確認標識位有什麽作用呢?

TCP報文頭中的ACK標識位用於目的端對已接受到數據的確認。目的端成功收到序列號為x的字節後,會以序列號x+1進行確認。

2.TCP頭部中有哪些標識位參與TCP三次握手?

在TCP三次握手過程中,要使用SYN和ACK標識位來請求建立連接和確認建立連接。