TCP和UDP的區別及socket網路程式設計步驟

2022-05-31 14:27:12 字數 1770 閱讀 2755

tcp和udp的區別

1.連線

tcp是面向連線的傳輸層協議,即傳輸資料之前必須先建立好連線。

udp無連線。

2. 服務物件

tcp是點對點的兩點間服務,即一條tcp連線只能有兩個端點;

udp支援一對一,一對多,多對一,多對多的互動通訊。

3.可靠性

tcp是可靠交付:無差錯,不丟失,不重複,按序到達。

udp是盡最大努力交付,不保證可靠交付。

4.擁塞控制,流量控制

tcp有擁塞控制和流量控制保證資料傳輸的安全性。

udp沒有擁塞控制,網路擁塞不會影響源主機的傳送效率。

5. 報文長度

tcp是動態報文長度,即tcp報文長度是根據接收方的視窗大小和當前網路擁塞情況決定的。

udp面向報文,不合併,不拆分,保留上面傳下來報文的邊界。

6.首部開銷

tcp首部開銷大,首部20個位元組。

udp首部開銷小,8位元組。(源埠,目的埠,資料長度,校驗和)

socket網路程式設計的步驟

1.基於tcp的socket:

伺服器端程式:

① 建立乙個socket,用函式socket()

② 繫結ip位址、埠等資訊到socket上,用函式bind()

③ 設定允許的最大連線數,用函式listen()

④ 接收客戶端上來的連線,用函式accept()

⑤ 收發資料,用函式send()和recv(),或者read()和write()

⑥ 關閉網路連線close()

客戶端程式:

① 建立乙個socket,用函式socket()

② 設定要連線的對方的ip位址和埠等屬性

③ 連線伺服器,用函式connect()

④ 收發資料,用函式send()和recv(),或read()和write()

⑤ 關閉網路連線close()

2.基於udp的socket:

伺服器端流程

① 建立套接字檔案描述符,使用函式socket(),生成套接字檔案描述符。

② 設定伺服器位址和偵聽埠,初始化要繫結的網路位址結構。

③ 繫結偵聽埠,使用bind()函式,將套接字檔案描述符和乙個位址型別變數進行繫結。

④ 接收客戶端的資料,使用recvfrom()函式接收客戶端的網路資料。

⑤ 向客戶端傳送資料,使用sendto()函式向伺服器主機傳送資料。

⑥ 關閉套接字,使用close()函式釋放資源。udp協議的客戶端流程

客戶端流程

① 建立套接字檔案描述符,socket()

② 設定伺服器位址和埠,struct sockaddr。

③ 向伺服器傳送資料,sendto()

④ 接收伺服器的資料,recvfrom()

⑤ 關閉套接字,close()

TCP和UDP區別及用法

1 tcp與udp區別總結 1 tcp面向連線 如打 要先撥號建立連線 udp是無連線 的,即傳送資料之前不需要建立連線 tcp提供可靠的服務 也就是說,通過tcp連線傳送的資料,無差錯,不丟失,不重複,且按序到達 udp盡最大努力交付,即不保證可靠交付 udp具有較好的實時性 工作效率比tcp高,...

TCP和UDP及它們的區別

tcp和udp是osi模型中的運輸層中的協議。tcp提供可靠的通訊傳輸,而udp則常被用於廣播和細節控制交給應用的通訊傳輸 udp user datagram protocol udp不提供複雜的控制機制,利用ip提供面向無連線的通訊服務。並且它是將應用程式發來的資料在收到的那一刻,立刻按照原樣傳送...

初識網路協議 基於TCP和UDP的Socket程式設計

在建立socket的時候,socket函式需要指定是ipv4還是ipv6,分別對應af inet和af inet6,這是網路層的。其次,還需指定是tcp還是udp,這是傳輸層的。tcp是基於資料流的,所以設定為sock stream,udp是基於資料報的,所以設定為sock dgram。基於tcp協...