一、概述
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,...