1. 程式人生 > >計算機網路第五章知識點

計算機網路第五章知識點

tcp提供有確認,有連線的資料流服務,udp提供無確認,無連線的資料報服務。

為什麼說tcp提供資料流服務而udp提供資料報服務呢?這其實與這兩個協議本身的傳輸機制有關,tcp提供可靠的傳輸機制,也就是說只要是被髮送的資料都會被接收方接收到,並且雙方也知道被正確接收了,這就有一種現象:一段比較大的資料被分段傳送出去,對於接收方而言,就像一股水流一樣不斷地並且一滴不漏的被接收(這個過程中有確認機制,更加形象地類似水流),非常類似於水流。而udp不負責可靠傳輸,他只知道盡最大的努力把資料傳送出去,並不關心資料是否被接收方實際接收,對於接收方而言,他接收資料的情形是:來一個我接受一個,並不關心中間是否有丟失的資料報,就像飛機空頭物資一樣,並不是投一包東西,然後地面確認一下,再投第二包東西(這種方式在無形中使得物資之間有了一種默契),而是多架飛機一起往下投物資,沒有順序可言,哪個先下來我先接那個,並且投下的物資是否在半空被老鷹叼走了地面並不關心(這種方式下,不同物資之間似乎相互獨立,從傳輸層理解的話就是每個udp報文獨立存在,他們的聯絡是發生在他的高層應用層)。再結合到資料的傳送和接收上,對於接收端而言並無順序可言,資料報之間沒有約定的連線格式,每個udp資料報之間就像獨立的個體一樣。

1.程序間通訊概念 B

一臺主機的一個程序和另一臺主機的一個程序進行資料交換。

運輸層的複用和分用:

複用:在傳送方不同的應用程序中都可以使用同一個運輸層協議傳送資料。(重複使用)

分用:接受方的運輸層在剝去報文的部首後能夠把這些資料正確交付目的應用程序。(分別交付)

2.TCP,UDP 協議概念 A

兩個通訊實體在通訊時傳送的資料單位,按照OSI的標準,稱為運輸協議資料單元TPDU,但在TCP/IP體系中,則根據所使用的協議是TCP或UDP,分別稱為TCP報文段和UDP使用者資料報。

運輸層的兩個主要協議:

(1)使用者資料報協議UDP:

傳送資料前不需要先建立連線。遠地主機的運輸層在收到UDP報文後,不需要給出任何確認。

這時的邏輯通道是一條不可靠通道。

(2)傳輸控制協議TCP:

提供可靠的、面向連線的服務。傳送資料前需要先建立連線,資料傳送結束後要釋放連線。這時儘管下面的網路層是不可靠的(只提供盡最大努力服務),但這種邏輯通道就相當於一條全雙工的可靠通道。

3.運輸層的埠 A

執行在計算機中的程序是用程序識別符號來標誌的。但執行在應用層的各種應用程序卻不應當讓計算機作業系統指派它的程序識別符號。這是因為在因特網上使用的計算機的作業系統種類很多,而不同的作業系統又使用不同格式的程序識別符號,因此傳送方非常可能無法識別其他機器上的程序。為了使執行不同作業系統的計算機的應用程序能夠互相通訊,就必須用統一的方法對 TCP/IP體系的應用程序進行標誌。解決這個問題的方法就是在運輸層使用協議埠號(protocolport number),或通常簡稱為埠(port),埠用一個16位埠號進行標誌。埠號只具有本地意義,即埠號只是為了標誌本計算機應用層中的各程序。在因特網中不同計算機的相同埠號是沒有聯絡的。雖然通訊的終點是應用程序,但我們可以把埠想象是通訊的終點,因為我們只要把要傳送的報文交到目的主機的某一個合適的目的埠,剩下的工作(即最後交付目的程序)就由TCP來完成。

服務端使用的埠號:又可分為熟知埠號/系統埠號和登記埠號

客戶端使用的埠號(短暫埠號):僅在客服程序執行時動態選擇

4.常用應用的熟知埠號 B

5.UDP 基本概念 A

使用者資料報協議 (User Datagram Protocol, UDP)是一個簡單的面向無連線的,不可靠的資料報的傳輸層協議。 在TCP/IP模型中,UDP為網路層以上和應用層以下提供了一個簡單的介面。UDP只提供資料的不可靠交付,它一旦把應用程式發給網路層的資料傳送出去,就不保留資料備份(所以UDP有時候也被認為是不可靠的資料報協議)。

UDP的主要特點:

1、UDP 是無連線的,即傳送資料之前不需要建立連線,傳送資料之後也沒有連線可釋放,因此減小了開銷和傳送資料之前的時延。

2、UDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持複雜的連線狀態表

3、UDP是面向報文的,傳送方UDP對應用程式交下來的報文,在新增首部後直接向下交付IP層。UDP對應用層交下來的報文,既不合並,也不拆分,而是保留這些報文的邊界。也就是說,應用層交付給UDP的報文,UDP就照樣傳送,即一次傳送一個報文。在接收方的UDP,對IP層交上來的UDP使用者資料報,在去除首部後就原封不動的交付上層的應用程序。也就是說,UDP一次交付一個完整的報文。

應用程式必須選擇合適大小的報文,若報文太長,UDP將其交給IP層後,IP層在傳送時可能要進行分片,這回降低IP層的效率,反之,若報文太短,UDP將其交給IP層後,會使IP資料報的首部相對長度太大,這也降低了IP層的效率。

這裡寫圖片描述

圖3、UDP是面向報文的

(4)、UDP沒有擁塞控制,因此網路出現的擁塞不會使源主機的傳送效率降低,這對某些實時應用是很重要的,很多實時應用(IP電話、視訊會議)要求源主機以恆定速率傳送資料,並且允許在網路發生擁塞時丟失一些資料,但不允許資料有太大的時延。

當很多源主機同時都向網路中傳送高速率的實時視訊流時,網路就可能發生擁塞,導致大家都無法正常接收,因此,不適用擁塞控制的UDP有可能引起網路嚴重擁塞。

(5)、UDP支援一對一、一對多、多對一和多對多的互動通訊

(6)、UDP首部開銷小,只有8個位元組,比TCP的20個位元組首部要短。

6.UDP 首部格式 圖 5-5 B

使用者資料報UDP有兩個欄位:資料欄位首部欄位。首部欄位只有8個位元組,由四個欄位組成,每個欄位的長度都是兩個位元組。各欄位意義如下:

(1)源埠:源埠號,在需要對方回信時選用,不需要時可用全0
(2)目的埠:目的埠號,這在終點交付報文時必須要用到
(3)長度: UDP使用者資料報的長度,其最小值為8(此時僅有首部)
(4)檢驗和:檢測UDP使用者資料報在傳輸中是否有錯,有錯就丟棄

圖1、UDP的首部格式

圖1、UDP的首部格式

7.UDP 埠分用 圖 5-6 A

當運輸層從IP層收到UDP資料報時,就根據首部中的目的埠,把UDP資料報通過相應的埠,上交最後的終點——應用程序。圖2是UDP基於埠分用的示意圖。

這裡寫圖片描述

圖2、UDP基於埠分用

如果接收方UDP發現收到的報文中的目的埠號不正確(即不存在對應於該埠號的應用程序),就丟棄該報文,並由網際控制報文協議ICMP傳送“埠不可達”差錯報文給傳送方。

8. 傳輸控制協議 TCP 基本概念 A

TCP提供了完善的錯誤控制和流控制,能夠確保資料正確傳輸,是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。

9.TCP 的最主要特點 A 

  1. TCP是面向連線的運輸層協議。這就是說應用程式在使用TCP協議之前,必須先建立連線。在傳送完資料之後,必須釋放已經建立的連結。
  2. 每一條TCP連結只能有兩個端點,每一條TCP連結只能是點對點的。
  3. TCP提供可靠交付的服務。通過TCP連線傳送的資料,無差錯、不丟失、不重複、並且按需到達。
  4. TCP提供全雙工的通訊
  5. 面向位元組流。TCP中的“流”指的流入到程序或者從程序流出的位元組序列。雖然應用程式和TCP的互動是一次一個資料塊(大小不等),但TCP把應用程式交下來的資料塊看成僅僅是一連串的無結構的位元組流。

10.TCP 的連線 A

TCP 把連線作為最基本的抽象。每一條TCP連線有兩個端點。TCP連線的端點不是主機,不是主機的IP地址,不是應用程序,也不是運輸層的協議埠。TCP連線的端點叫做套接字(socket)或插口。埠號拼接到IP地址即構成了套接字。
套接字(socket) = (IP地址:埠號)
每一條TCP連線唯一地被通訊兩端的兩個端點(即兩個套接字)所確定。即:
TCP 連線 = {socket1, socket2} = {(IP1: port1), (IP2: port2)}

11.可靠傳輸的工作原理 停止等待協議 A         P214

“停止等待”就是每傳送完一個分組就停止傳送,等待對方的確認。在收到確認後再發送下一個分組。缺點是通道利用率太低。

三種情況:無差錯情況、出現差錯、確認丟失和確認遲到。

12.可靠傳輸的工作原理 連續 ARQ 協議 B       P216 

13. TCP 報文首部格式 A

TCP雖然是面向位元組流的,但是TCP傳送的資料單元卻是報文段。一個TCP報文段分為首部和資料兩部分,而TCP的全部功能則體現在它首部中的各欄位的作用。TCP報文段的前20個位元組是固定的(如下圖所示),後面有4N個位元組是根據需要新增的選項。因此,TCP首部的最小長度是20個位元組


  1. 源埠和目的埠:各佔兩個位元組,分別寫入源埠號和目的埠號。TCP的分用功能就是通過埠號去實現的。
  2. 序號:序號佔4個位元組。序號的範圍是 ,共個序號。序號增加到後,下一個序號又返回0。也就是運算。TCP裡面是面向位元組流的。在一個TCP連線中傳送的位元組流中的每一個位元組都得按照順序編號,整個要傳送的位元組流的起始位置要在一開始就要確定。首部中的序號欄位的值指的是本報文段傳送的第一個位元組的序號。比如說,一個報文段序號欄位的值為101,而攜帶的資料有200個位元組。這就表明這個報文段的最後一個位元組的序號是300.當傳送下一個報文段的時候,其序號欄位的值就應該為301.這個欄位的名稱也叫作報文段序號。
  3. 確認號:佔4個位元組。是希望收到對方下一個報文段的第一個資料位元組的序號。如果說確認號等於N,那麼就說明到序號N - 1的所有資料都已經正確收到。
  4. 資料偏移:佔4位,它指出TCP報文段的資料起始處距離TCP報文段的起始處有多遠。這個欄位實際上就是TCP報文段的首部長度,但是需要注意的是這裡“資料偏移”的單位是32位字,即以4位元組長的字為計算單位。所以它能表示的最大長度就是60個位元組,也就是說TCP首部的最大值是60位元組。
  5. 保留位:佔6位,保留為今後使用,故應該置為0。
  6. 編碼位:佔6位。分別是URG、ACK、PSH、SYN、FIN。                                                                         當URG=1時表明緊急欄位有效,資料的傳送不按照原來的排隊順序而是把緊急資料插入到本報文段的最前面,其他的資料部分仍然按照原來的排隊順序傳送。確認ACK:僅當ACK=1時確認號欄位才有效。當ACK=0時,確認號無效。TCP規定,在連結建立後所有的傳送的報文段都必須把ACK置1。推送PSH:當兩個應用程序進行互動式的通訊時,有時一端鍵入一個命令時希望立即受到對方的響應,此時就可以把PSH置1,並立即建立一個報文段傳送出去,接受方TCP受到PSH=1的報文後會立即或者儘快的交付給應用程序,而不是等到整個快取都填滿了之後再向上交付。復位RST:當RST=1時,表明TCP連線中出現嚴重錯誤,必須釋放連結並且重新建立運輸連線。RST也稱為重建位或者重置位。         同步SYN:在連線建立時用來同步序號。當SYN = 1而ACK = 0時表明這是一個連線請求報文段。對方若同意連線,則應在響應報文中使SYN = 1且 ACK = 1。因此SYN置1表示這是一個連線請求或者連線接受報文。                                                  終止FIN:當FIN = 1時,表明此報文段的傳送方已傳送完資料,並且要求釋放連線。
  7. 視窗:佔2位元組。視窗值是之間的整數。視窗指的是傳送本報文段的一方的接收視窗(而不是自己的傳送視窗)。視窗值告訴對方:從本報文段首部中的確認號算起,接收方目前允許對方傳送的資料量(以位元組為單位)。之所以有這個限制是因為接收方的資料快取空間是有限的。視窗值是作為接收方讓傳送方設定其傳送視窗的依據。視窗值是經常動態變化的。例如:傳送了一個報文段,其確認號為701,視窗欄位是1000,這就是告訴對方:從701號算起,我的接收快取空間還可接收1000個位元組資料。
  8. 檢驗和:佔兩個位元組。檢驗和欄位檢驗的範圍包括首部和資料部分。
  9. 緊急指標:佔2位元組。緊急指標僅在URG=1時才有意義,它指出本報文段中的緊急資料的位元組數(緊急資料結束後就是普通資料)。因此緊急指標指出了緊急資料的末尾在報文段中的位置。當所有緊急資料都處理完畢時,TCP就告訴應用程式恢復到正常操作。值得注意的是,即使視窗為0時也可傳送緊急資料。
  10. 選項欄位:長度可變,最多40位元組,沒有使用選項時,TCP首部長度20位元組。最後的填充欄位僅僅是為了讓整個首部長度是4的倍數。

TCP最初只有一種選項:最大報文段長度MSS。MSS是每一個TCP報文段中的資料欄位的最大長度(報文段長度減去首部長度)。資料欄位加上TCP首部才等於整個的TCP報文段,

14. TCP 可靠傳輸的實現——滑動視窗機制 A  

15.TCP 可靠傳輸的實現——超時重傳時間的選擇 B  

16.TCP 流量控制  C

17. TCP 擁塞控制  C

18. TCP 的運輸連線管理——TCP 連線建立過程(三次握手協議) A  

TCP連線的建立採用客戶伺服器方式。主動發起連線建立的應用程序叫做客戶,而被動等待連線建立的應用程序叫伺服器。

TCP建立連線的過程叫做握手,握手需要在客戶和伺服器之間交換三個TCP報文段。

19. TCP 的運輸連線管理——TCP 連線釋放過程 A