專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

TCP UDP IP 等協(xié)議基礎(chǔ)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2014年08月18日   【字體:
應(yīng)用層協(xié)議的具體應(yīng)用:
NTP:做網(wǎng)絡(luò)時鐘(時間來源于互聯(lián)網(wǎng),本地不用RTC) 
DNS:
RTP、RTSP:視頻監(jiān)控常用的協(xié)議
SNMP:簡單網(wǎng)絡(luò)管理協(xié)議(集中式管理)
FTP:
HTTP:
.......
 
先理解一下網(wǎng)絡(luò)的模型(linux、國嵌的PPT):



 

目的地址與源地址都是MAC(物理地址);
數(shù)據(jù)字段長度: 數(shù)據(jù)的類型(比如0x0800:表示幀里面的“數(shù)據(jù)”字段是一個IP包)
數(shù)據(jù):這里面存放具體的數(shù)據(jù)包。
 
IP協(xié)議層:IP協(xié)議主要目的是為數(shù)據(jù)的輸入、輸出網(wǎng)絡(luò)提供基本算法,為高層協(xié)議提供無連接的傳送服務(wù)。
IP協(xié)議層的功能:數(shù)據(jù)傳送、尋址、路由選擇、數(shù)據(jù)報(bào)文的分段。
IP協(xié)議包格式:

TCP協(xié)議:TCP協(xié)議是重要的傳輸層協(xié)議,它的目的是為網(wǎng)絡(luò)上的各節(jié)點(diǎn)提供可靠的數(shù)據(jù)交換。它提供數(shù)據(jù)端口編號的譯碼,以識別主機(jī)的應(yīng)用程序,完成數(shù)據(jù)的可靠傳送。
TCP包格式:
UDP協(xié)議:傳送層協(xié)議,它是無連接不可靠的傳送。當(dāng)接收數(shù)據(jù)時它并不向發(fā)送方提供確認(rèn)信息,它不提供輸入包的順序,如果出現(xiàn)丟失包或重份包的情況,也不會向發(fā)送方發(fā)出差錯報(bào)文,它的執(zhí)行速度比TCP快,執(zhí)行時具有較低的開銷。
UDP協(xié)議包格式:
 
 
基于TCP的網(wǎng)絡(luò)編程,基于UDP的網(wǎng)絡(luò)編程;【服務(wù)器、客戶端】
創(chuàng)建TCP服務(wù)器/客服端:

創(chuàng)建UDP服務(wù)器/客服端:

在實(shí)際的網(wǎng)絡(luò)設(shè)計(jì)中,服務(wù)器必須要實(shí)現(xiàn)1對多的功能模型;這里就可分為兩種服務(wù)器:循環(huán)服務(wù)器與并發(fā)服務(wù)器。
循環(huán)服務(wù)器:
上面介紹的TCP、UDP通信模型都是循環(huán)服務(wù)器,TCP的循環(huán)服務(wù)器與UDP的循環(huán)服務(wù)器又不同;TCP循環(huán)服務(wù)器一次只能處理一個客戶端的請求。所以一個客戶端占住服務(wù)器不放,其他的客戶端就沒法訪問服務(wù)器,所以在服務(wù)器端TCP服務(wù)器很少使用循環(huán)模式。但是UDP的循環(huán)服務(wù)器與TCP循環(huán)服務(wù)器不一樣,因?yàn)閁DP不需要建立連接(TCP建立連接后完全占用服務(wù)器),所以UDP的循環(huán)服務(wù)器直接可以服務(wù)多個客戶端。
并發(fā)服務(wù)器:TCP需要使用并發(fā)服務(wù)器模型才能服務(wù)多個客戶端。
并發(fā)服務(wù)器的設(shè)計(jì)思路是每個客戶端的請求并不由服務(wù)器直接處理,而是由服務(wù)器創(chuàng)建一個子進(jìn)程來處理。
關(guān)閉窗口