本文目的
前兩章節已經詳細的向大家介紹過TCP和UDP,具體請看 和 。本章大致介紹TCP與UDP的區別
。基本介紹
TCP(傳輸控制協議)提供的是面向連接、可靠的字節流服務。當客戶端和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重複數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。
UDP(用戶數據報協議)是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是並不能保證它們能到達目的地。由於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個字節,多個字段組成。
UDP
UDP首部字段很簡單,只有8個字節,由四個字段組成,每個字段都是兩個字節
編程步驟
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提供可靠的服務,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達。
UDP盡最大努力交付,即不保證可靠交付。
數據可靠性
TCP提供面向連接的、可靠的數據流傳輸。通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達。
UDP提供的是非面向連接的、不可靠的數據流傳輸。盡最大努力交付,即不保證可靠交付。
傳輸效率的區別
TCP傳輸效率相對較低。
UDP傳輸效率高,適用於對高速傳輸和實時性有較高的通信或廣播通信。
連接數量
TCP連接只能是點到點、一對一的。
UDP支持一對一,一對多,多對一和多對多的交互通信。
傳輸單位
TCP傳輸單位稱為TCP報文段,
UDP傳輸單位稱為用戶數據報。
資源消耗
TCP對系統資源要求較多,
UDP對系統資源要求較少。
本文的初衷為學習筆記的分享,部分圖文來源於網絡,如侵,聯刪。
閱讀更多 晒的被人砍 的文章