❶ 傳輸層協議(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斷開連接的步驟,這個比較詳細:
https://blog.csdn.net/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標識位來請求建立連接和確認建立連接。
❷ 網路與網路之間的七層關系是如何協調通信的
分類: 電腦/網路 >> 互聯網
問題描述:
謝謝,請速回!!!!!
解析:
圖中發送進程送給接收進程和數據,實際上是經過發送方各層從上到下傳遞到物理媒體;通過物理媒體傳輸到接收方後,再經過從下到上各層的傳遞,最後到達接收進程。
在發送方從上到下逐層傳遞的過程中,每層都要加上適當的控制信息,即圖中和H7、H6、...、H1,統稱為報頭。到最底層成為由「0」或「1」組成和數據比特流,然後再轉換為電信號在物理媒體上傳輸至接收方。接收方在向上傳遞時過程正好相反,要逐層剝去發送談知方相應層加上的控制信息。
因接收方的某一層不會收到底下各層的控制信息,而高層的控制信息對於它來說又只是透明的數據,所以它只閱讀和去除本層的控制信息,並進行相應的協議操作。發送方和接收方的對等實體看到的信息是相同的,就好像這些信息通過虛通信直接給了對方一樣。
(1)物理層----定義了為建立、維護和拆除物理鏈路所需的機械的、電氣的、功能的和規程的特性,其作用是使原始的數據比特流能在物理媒體上傳輸。具體涉及接插件的規格、「0」、「1」信號的電平表示、收發雙方的協調等內容。
(2)數據鏈路層----比特流被組織成數據鏈路協議數據單元(通常稱為幀),並以其為單位進行傳輸,幀中包含地址、控制、數據及校驗碼等信息。早念數據鏈路層的主要作用是通過校驗、確認和反饋重發等手段,將不可靠的物理鏈路改造成對網路層來說無差錯的數據鏈路。數據鏈路層還要協調收發雙方的數據傳輸速率,即進行流量控制,以防止接收方因含睜消來不及處理發送方來的高速數據而導致緩沖器溢出及線路阻塞。
(3)網路層----數據以網路協議數據單元(分組)為單位進行傳輸。網路層關心的是通信子網的運行控制,主要解決如何使數據分組跨越通信子網從源傳送到目的地的問題,這就需要在通信子網中進行路由選擇。另外,為避免通信子網中出現過多的分組而造成網路阻塞,需要對流入的分組數量進行控制。當分組要跨越多個通信子網才能到達目的地時,還要解決網際互連的問題。
(4)運輸層----是第一個端--端,也即主機--主機的層次。運輸層提供的端到端的透明數據運輸服務,使高層用戶不必關心通信子網的存在,由此用統一的運輸原語書寫的高層軟體便可運行於任何通信子網上。運輸層還要處理端到端的差錯控制和流量控制問題。
(5)會話層----是進程--進程的層次,其主要功能是組織和同步不同的主機上各種進程間的通信(也稱為對話)。會話層負責在兩個會話層實體之間進行對話連接的建立和拆除。在半雙工情況下,會話層提供一種數據權標來控制某一方何時有權發送數據。會話層還提供在數據流中插入同步點的機制,使得數據傳輸因網路故障而中斷後,可以不必從頭開始而僅重傳最近一個同步點以後的數據。
(6)表示層----為上層用戶提供共同的數據或信息的語法表示變換。為了讓採用不同編碼方法的計算機在通信中能相互理解數據的內容,可以採用抽象的標准方法來定義數據結構,並採用標準的編碼表示形式。表示層管理這些抽象的數據結構,並將計算機內部的表示形式轉換成網路通信中採用的標准表示形式。數據壓縮和加密也是表示層可提供的表示變換功能。
(7)應用層是開放系統互連環境的最高層。不同的應用層為特定類型的網路應用提供訪問OSI環境的手段。網路環境下不同主機間的文件傳送訪問和管理(FTAM)、傳送標准電子郵件的文電處理系統(MHS)、使不同類型的終端和主機通過網路交互訪問的虛擬終端(VT)協議等都屬於應用層的范疇。
圖片拿不下來,你就理解理解吧