基於Socket的UDP和TCP協議

2021-08-02 04:03:41 字數 2580 閱讀 4128

一、概述

tcp(傳輸控制協議)和udp(使用者資料報協議)是網路體系結構tcp/ip模型中傳輸層一層中的兩個不同的通訊協議。

tcp:傳輸控制協議,一種面向連線的協議,給使用者程序提供可靠的全雙工的位元組流,tcp套介面是位元組流套介面(stream socket)的一種。

udp:使用者資料報協議。udp是一種無連線協議。udp套介面是資料報套介面(datagram socket)的一種。

二、tcp和udp介紹

1)基本tcp客戶—伺服器程式設計基本框架

說明:(三路握手)

1.客戶端傳送乙個syn段(同步序號)指明客戶打算連線的伺服器端口,以及初始化序號(isn) 。

2.伺服器發回包含伺服器的初始序號的syn報文段作為應答。同時,將確認序號(ack)設定為客戶的isn加1以對客戶的syn 報文段進行確認。乙個syn將占用乙個序號。

3.客戶必須將確認序號設定為伺服器的isn加1以對伺服器的syn報文段進行確認。

2) 基本udp客戶—伺服器程式設計基本框架流程圖

3) udp和tcp的對比:

從上面的流程圖比較我們可以很明顯的看出udp沒有三次握手過程。

簡單點說。udp處理的細節比tcp少。udp不能保證訊息被傳送到(它也報告訊息沒有傳送到)目的地。udp也不保證資料報的傳送順序。udp把資料發出去後只能希望它能夠抵達目的地。

tcp優缺點:

優點

1.tcp提供以認可的方式顯式地建立和終止連線。

2.tcp保證可靠的、順序的(資料報以傳送的順序接收)以及不會重複的資料傳輸。

3.tcp處理流控制。

4.允許資料優先

5.如果資料沒有傳送到,則tcp套介面返回乙個出錯狀態條件。

6.tcp通過保持連續並將資料塊分成更小的分片來處理大資料塊。—無需程式設計師知道

缺點: tcp在轉移資料時必須建立(並保持)乙個連線。這個連線給通訊程序增加了開銷,讓它比udp速度要慢。

udp優缺點:

1.udp不要求保持乙個連線

2.udp沒有因接收方認可收到資料報(或者當資料報沒有正確抵達而自動重傳)而帶來的開銷。

3.設計udp的目的是用於短應用和控制訊息

4.在乙個資料報連線乙個資料報的基礎上,udp要求的網路頻寬比tcp更小。

三、socket程式設計

socket介面是tcp/ip網路的api,socket介面定義了許多函式或例程,程式設計師可以用它們來開發tcp/ip網路上的應用程式。要學internet上的tcp/ip網路程式設計,必須理解socket介面。

socket介面設計者最先是將介面放在unix

作業系統

裡面的。如果了解unix系統的輸入和輸出的話,就很容易了解socket了。網路的socket資料傳輸是一種特殊的i/o,socket也是一種檔案描述符。socket也具有乙個類似於開啟檔案的函式呼叫socket(),該函式返回乙個整型的socket描述符,隨後的連線建立、資料傳輸等操作都是通過該socket實現的。常用的socket型別有兩種:流式socket(sock_stream)和資料報式socket(sock_dgram)。流式是一種面向連線的socket,針對於面向連線的tcp服務應用;資料報式socket是一種無連線的socket,對應於無連線的udp服務應用。

1、socket呼叫庫函式主要有:

建立套接字

socket(af,type,protocol)

建立位址和套接字的聯絡

bind(sockid, local addr, addrlen)

伺服器端偵聽客戶端的請求

listen( sockid ,quenlen)

建立伺服器/客戶端的連線 (面向連線tcp)

客戶端請求連線

connect(sockid, destaddr, addrlen)

伺服器端等待從編號為sockid的socket上接收客戶連線請求

newsockid=accept(sockid,clientaddr,paddrlen)

傳送/接收資料

面向連線:send(sockid, buff, bufflen)

recv( )

面向無連線:sendto(sockid,buff,…,addrlen)

recvfrom( )

釋放套接字

close(sockid)

基於tcp和udp的socket通訊

做個小遊戲的project用到了socket程式設計,於是,就在網上查閱了一下資料,下面簡單總結一下。1.什麼是socket socket是在應用層與傳輸層之間的乙個抽象層,它把tcp ip層複雜的操作抽象為幾個介面 用層的程序實現網路通訊,使得不同主機的相關程序之間交換資料。2.什麼是tcp和ud...

基於UDP的socket程式設計

轉貼自 udpsocket sockets 套接字 程式設計有三種,流式套接字 sock stream 資料報套接字 sock dgram 原始套接字 sock raw 基於udp的socket程式設計是採用的資料報套接字。在這個程式中,將兩個工程新增到乙個工作區。同時還要鏈結乙個ws2 32.li...

C 中Socket通訊用法UDP方式和TCP方式

using system.net.sockets using system.net 一 udp方式 伺服器端 static void main string args remote.tostring console.writeline encoding.ascii.getstring data,0,...