學習筆記-TCP&UDP

本文目的

前兩章節已經詳細的向大家介紹過TCP和UDP,具體請看 和 。本章大致介紹TCP與UDP的區別

學習筆記-TCP&UDP

基本介紹

TCP(傳輸控制協議)提供的是面向連接、可靠的字節流服務。當客戶端和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重複數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。

UDP(用戶數據報協議)是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快。

學習筆記-TCP&UDP

可靠性

UDP和TCP協議的主要區別是兩者在如何實現信息的可靠傳遞方面不同。

TCP

TCP協議中包含了專門的傳遞保證機制,當數據接收方收到發送方傳來的信息時,會自動向發送方發出確認消息;發送方只有在接收到該確認消息之後才繼續傳送其它信息,否則將一直等待直到收到確認信息為止。因此,TCP協議是可靠的。

UDP

與TCP不同,UDP協議並不提供數據傳送的保證機制。如果在從發送方到接收方的傳遞過程中出現數據包的丟失,協議本身並不能做出任何檢測或提示。因此, UDP協議是不可靠的。

通信模型

TCP

TCP通信模型中,在通信開始之前,一定要通過"三次握手"建立相關連接(詳見 ),才能發送數據。通信結束後需要"四次揮手"斷開連接(詳見 )。類似於生活中,"

打電話"

UDP

UDP通信模型中,在通信開始之前,不需要建立相關的連接,只需要發送數據即可,通信結束也無需斷開連接。類似於生活中,"寫信"

相關協議

TCP對應的協議:

(1) FTP:定義了文件傳輸協議,使用21端口。

(2) Telnet:一種用於遠程登陸的端口,使用23端口,用戶可以以自己的身份遠程連接到計算機上,可提供基於DOS模式下的通信服務。

(3) SMTP:郵件傳送協議,用於發送郵件。服務器開放的是25號端口。

(4) POP3:它是和SMTP對應,POP3用於接收郵件。POP3協議所用的是110端口。

(5)HTTP:是從Web服務器傳輸超文本到本地瀏覽器的傳送協議。

UDP對應的協議:

(1) DNS:用於域名解析服務,將域名地址轉換為。DNS用的是53號端口。

(2) SNMP:簡單網絡管理協議,使用161號端口,是用來管理網絡設備的。由於網絡設備很多,無連接的服務就體現出其優勢。

(3) TFTP(Trival File Transfer Protocal),簡單文件傳輸協議,該協議在熟知端口69上使用UDP服務。

頭部格式

TCP

TCP首部複雜,有20個字節,多個字段組成。

學習筆記-TCP&UDP

UDP

UDP首部字段很簡單,只有8個字節,由四個字段組成,每個字段都是兩個字節

學習筆記-TCP&UDP

編程步驟

TCP:

TCP編程的服務器端一般步驟是:

1、創建一個socket,用函數socket();

2、設置socket屬性,用函數setsockopt(),可選 參數;

3、綁定IP地址、端口等信息到socket上,用函數bind();

4、開啟監聽,用函數listen();

5、接收客戶端上來的連接,用函數accept();

6、收發數據,用函數send()和recv(),或者read()和write();

7、關閉網絡連接; closesocket(SocketListen);closesocket(SocketWaiter);

8、關閉監聽;

TCP編程的客戶端一般步驟是:

1、創建一個socket,用函數socket();

2、設置socket屬性,用函數setsockopt();* 可選

3、綁定IP地址、端口等信息到socket上,用函數bind(),可選 參數;

4、設置要連接的對方的IP地址和端口等屬性;

5、連接服務器,用函數connect();

6、收發數據,用函數send()和recv(),或者read()和write();

7、關閉網絡連接;

UDP:

UDP編程的服務器端一般步驟是:

1、創建一個socket,用函數socket();

2、設置socket屬性,用函數setsockopt();* 可選

3、綁定IP地址、端口等信息到socket上,用函數bind();

4、循環接收數據,用函數recvfrom();

5、關閉網絡連接;

UDP編程的客戶端一般步驟是:

1、創建一個socket,用函數socket();

2、設置socket屬性,用函數setsockopt();* 可選

3、綁定IP地址、端口等信息到socket上,用函數bind();* 可選

4、設置對方的IP地址和端口等屬性;

5、發送數據,用函數sendto();

6、關閉網絡連接;

簡單總結

學習筆記-TCP&UDP

連接方面

TCP(如打電話要先撥號建立連接)。

UDP是無連接的,即發送數據之前不需要建立連接。

安全方面的區別

TCP提供可靠的服務,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達。

UDP盡最大努力交付,即不保證可靠交付。

數據可靠性

TCP提供面向連接的、可靠的數據流傳輸。通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達。

UDP提供的是非面向連接的、不可靠的數據流傳輸。盡最大努力交付,即不保證可靠交付。

傳輸效率的區別

TCP傳輸效率相對較低。

UDP傳輸效率高,適用於對高速傳輸和實時性有較高的通信或廣播通信。

連接數量

TCP連接只能是點到點、一對一的。

UDP支持一對一,一對多,多對一和多對多的交互通信。

傳輸單位

TCP傳輸單位稱為TCP報文段,

UDP傳輸單位稱為用戶數據報。

資源消耗

TCP對系統資源要求較多,

UDP對系統資源要求較少。

本文的初衷為學習筆記的分享,部分圖文來源於網絡,如侵,聯刪。


分享到:


相關文章: