TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協(xié)議屬于傳輸層協(xié)議。其中TCP提供IP環(huán)境下的數(shù)據(jù)可靠傳輸,它提供的服務(wù)包括數(shù)據(jù)流傳送、可靠性、有效流控、全雙工操作和多路復(fù)用。通過(guò)面向連接、端到端和可靠的數(shù)據(jù)包發(fā)送。通俗說(shuō),它是事先為所發(fā)送的數(shù)據(jù)開(kāi)辟出連接好的通道,然后再進(jìn)行數(shù)據(jù)發(fā)送;而UDP則不為IP提供可靠性、流控或差錯(cuò)恢復(fù)功能。一般來(lái)說(shuō),TCP對(duì)應(yīng)的是可靠性要求高的應(yīng)用,而UDP對(duì)應(yīng)的則是可靠性要求低、傳輸經(jīng)濟(jì)的應(yīng)用。TCP支持的應(yīng)用協(xié)議主要有:Telnet、FTP、SMTP等;UDP支持的應(yīng)用層協(xié)議主要有:NFS(網(wǎng)絡(luò)文件系統(tǒng))、SNMP(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)、DNS(主域名稱系統(tǒng))、TFTP(通用文件傳輸協(xié)議)等。
中文名稱 | TCP/UDP協(xié)議 | TCP | Transmission Control Protocol |
---|---|---|---|
UDP | User Datagram Protocol | 類別 | 傳輸層協(xié)議 |
TCP/UDP協(xié)議協(xié)議差別
tcp協(xié)議和udp協(xié)議的差別
TCP協(xié)議和UDP協(xié)議各有所長(zhǎng)、各有所短,適用于不同要求的通信環(huán)境。TCP協(xié)議和UDP協(xié)議之間的差別如附表所示。
TCP/UDP協(xié)議數(shù)據(jù)包
對(duì)于網(wǎng)絡(luò)管理的網(wǎng)絡(luò)安全具有至關(guān) 重要的意義。比如,防火墻的作用本質(zhì)就是檢測(cè)網(wǎng)絡(luò)中的數(shù)據(jù)包,判斷其是否違反了預(yù)先設(shè)置的規(guī)則,如果違反就加以阻止。下圖就是某殺毒軟件個(gè)人版防火墻軟件設(shè)置規(guī)則的界面。細(xì)心的讀者會(huì)發(fā)現(xiàn),圖中的"協(xié)議"欄中有"TCP"、"UDP"等名詞。
TCP/IP(Transmission Control Protocol/Internet Protocol)的簡(jiǎn)寫,中文譯名為...
由于大多數(shù)網(wǎng)絡(luò)應(yīng)用程序都在同一臺(tái)機(jī)器上運(yùn)行,計(jì)算機(jī)上必須能夠確保目的地機(jī)器上的軟件程序能從源地址機(jī)器處獲得數(shù)據(jù)包,以及源計(jì)算機(jī)能收到正確的回復(fù)。這是通過(guò)使用 UDP 的“端口號(hào)”完成的。例如,如果一個(gè)...
誰(shuí)有深入淺出linupip協(xié)議棧文檔?
簡(jiǎn)介:《深入淺出Linux TCP /IP協(xié)議?!分饕獙?duì)Linux 2.6.18內(nèi)核協(xié)議棧源代碼做了一些基本的分析,這些分析基于...
格式:pdf
大?。?span id="uucoou0" class="single-tag-height">86KB
頁(yè)數(shù): 6頁(yè)
評(píng)分: 4.6
本科課程論文 Course Paper 論文編號(hào) Paper No: 09012058 撰寫日期 Date: 2012-5-28 桌面視頻會(huì)議系統(tǒng)中視音頻實(shí)時(shí)交互的實(shí)現(xiàn) Desktop video conference system CTV audio real-time interactive realization 謝大帥 Dashuai Xie (計(jì)算機(jī)與信息工程學(xué)院 網(wǎng)絡(luò)工程 09 網(wǎng)絡(luò)工程 09012058) 論文類型 Paper Type: 研究總結(jié) Summary of Focused Research 論及主題 Subject Covered: 巢 湖 學(xué) 院 課程名稱 Course:TCP/IP 協(xié)議族 課程性質(zhì) Course No:專業(yè)基礎(chǔ)課 學(xué) 分 數(shù) Credits:2 主講教師 Instructor:韓俊波 開(kāi)設(shè)學(xué)院 College:計(jì)
格式:pdf
大?。?span id="2ewikyw" class="single-tag-height">86KB
頁(yè)數(shù): 4頁(yè)
評(píng)分: 4.6
近20多年來(lái),隨著通信技術(shù)、計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,工業(yè)自動(dòng)化控制領(lǐng)域也得到了迅速的促進(jìn)和改革。如何將現(xiàn)代通信技術(shù)成功地應(yīng)用到工業(yè)自動(dòng)化控制領(lǐng)域,掀起了一股激烈的討論熱潮。本人設(shè)計(jì)了一個(gè)協(xié)議轉(zhuǎn)換器,使遵循Modbus協(xié)議的現(xiàn)場(chǎng)設(shè)備和控制器能夠掛到以太網(wǎng)上,完成與PC主機(jī)或者遠(yuǎn)距離的控制器之間的通信。
由于TCP協(xié)議棧的程序流程較為復(fù)雜,因?yàn)槌绦蛑行枰幚韺?duì)方發(fā)送過(guò)來(lái)的數(shù)據(jù)、發(fā)起的連接,而我方并不知道對(duì)方會(huì)何時(shí)進(jìn)行什么樣的操作,這就使得協(xié)議處理起來(lái)較為復(fù)雜。另外一個(gè)原因是單片機(jī)TCP/IP協(xié)議棧的穩(wěn)定性是以非常重要的問(wèn)題,一個(gè)穩(wěn)定的協(xié)議棧需要在實(shí)際應(yīng)用中經(jīng)過(guò)長(zhǎng)時(shí)間的測(cè)試,所以編寫一個(gè)穩(wěn)定的單片機(jī)TCP/IP協(xié)議棧更加困難。為此另外一種選擇就是使用現(xiàn)有的TCP/IP協(xié)議棧。
1. eCos單片機(jī)TCP/IP協(xié)議棧:eCos TCP/IP棧是涉及與eCos操作系統(tǒng)/內(nèi)核一起運(yùn)行的。eCos(和TCP/IP棧)由大量處理其結(jié)構(gòu)支持。eCos TCP/IP棧當(dāng)前發(fā)布了一個(gè)測(cè)試版,作為一個(gè)單獨(dú)的模塊。
2. ZLIP 51單片機(jī)TCP/IP協(xié)議棧:ZLIP是專門為51單片機(jī)設(shè)計(jì)的嵌入式TCP/IP協(xié)議棧,可以在有操作系統(tǒng)和沒(méi)有操作系統(tǒng)情況下運(yùn)行,具有代碼量適中、運(yùn)行速度快、用戶接口簡(jiǎn)單、兼容BSD socket接口的特點(diǎn)。實(shí)現(xiàn)了TCP、UDP、ICMP、ARP協(xié)議,ZLWeb實(shí)現(xiàn)了HTTP協(xié)議。支持多TCP連接、多UDP連接同時(shí)運(yùn)行,支持在uc/os-II操作系統(tǒng)下多任務(wù)運(yùn)行數(shù)據(jù)收發(fā)??梢杂糜?1單片機(jī)TCP/IP上網(wǎng)解決方案。
3. uc/ip 單片機(jī)TCP/IP協(xié)議棧:uC/IP(mew-kip)是為為控制其設(shè)計(jì)的一個(gè)TCP/IP協(xié)議棧。代碼基于BSD(很像所有其它棧)但對(duì)非常小的覆蓋范圍功能有所減少。它當(dāng)前為L(zhǎng)inux和DOS目標(biāo)而建。
4. BSD 單片機(jī)TCP/IP協(xié)議棧:BSD棧歷史上是其他商業(yè)棧的開(kāi)始點(diǎn),大多數(shù)專業(yè)TCP/IP棧(如帶Wind-River VxWorks內(nèi)核的)是BSD棧派生的。這是因?yàn)锽SD在BSD許可協(xié)議下提供了他們的棧,它們的許用證使你能以修改或未修改的形式結(jié)合它們的代碼而無(wú)須向創(chuàng)建者付版稅。與GPL許用證相比,如果你結(jié)合GPL源代碼,后者要求你的GPL中公開(kāi)你的源代碼。
5. lwIP 單片機(jī)TCP/IP協(xié)議棧:lwIP(輕型)TCP/IP棧是TCP/IP協(xié)議棧的一個(gè)小型實(shí)現(xiàn)。它包括帶IP和ICMP的TCP和UDP傳輸層。還提供一個(gè)可選的BSD套接字API。為了性能,還包括一個(gè)零拷貝API。LwIP協(xié)議棧是為嵌入式系統(tǒng)設(shè)計(jì)的并能適合40KB的ROM和幾百字節(jié)的RAM。為了可移植性它用C編寫。
6. uIP 單片機(jī)TCP/IP協(xié)議棧:uIP是專門為8位和16單片機(jī)設(shè)計(jì)的一個(gè)非常小的TCP/IP協(xié)議棧。uIP完全用C編寫,以此可以移植到各種不同的結(jié)構(gòu)和操作系統(tǒng)上。一個(gè)編譯的??梢杂袔譑B ROM或幾百字節(jié)RAM中運(yùn)行。uIP還包括一個(gè)HTTP服務(wù)器作為服務(wù)內(nèi)容。
7. TinyTCP 單片機(jī)TCP/IP協(xié)議棧:TinyTCP棧是TCP/IP的一個(gè)非常小的簡(jiǎn)單的實(shí)現(xiàn),它包括一個(gè)FTP客戶。TinyTCP是為燒入ROM設(shè)計(jì)的并且對(duì)大端結(jié)構(gòu)似乎是有用的(初始目標(biāo)是68000芯片)。TinyTCP也包括一個(gè)簡(jiǎn)單的以太網(wǎng)驅(qū)動(dòng)器用于3Com多總線卡。
8. WATTCP 單片機(jī)TCP/IP協(xié)議棧:WATTCP是為嵌入基于DOS的系統(tǒng)而設(shè)計(jì)的一個(gè)小型TCP/IP棧。它包括一個(gè)Real Mode DOS版本和另一個(gè)32位擴(kuò)展環(huán)境版本。
用戶在拿到一個(gè)單片機(jī)TCP/IP協(xié)議棧以后該如何處理呢。其中的處理分為兩個(gè)部分:上層接口和下層接口。
4. 1 上層接口
用戶使用單片機(jī)TCP/IP的目的實(shí)際非常明了,就是要實(shí)現(xiàn)數(shù)據(jù)的傳送,即從PC機(jī)(或者另一個(gè)單片機(jī))上傳送過(guò)來(lái)的數(shù)據(jù)能夠在本地單片機(jī)上接收,反之亦然。所以如果屏蔽底層的話,單片機(jī)TCP/IP協(xié)議棧就是一個(gè)傳輸數(shù)據(jù)的手段。所以最后歸結(jié)到了使用send()、recv()函數(shù)即可。這就是使用單片機(jī)TCP/IP協(xié)議棧的核心所在。
但是事實(shí)上并沒(méi)有這么簡(jiǎn)單,因?yàn)閷?duì)于TCP需要有發(fā)起連接、接受連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等操作以配合數(shù)據(jù)的傳輸。TCP/IP協(xié)議棧一般為用戶提供如下的接口:
1. 初始化協(xié)議棧和釋放協(xié)議棧的函數(shù)接口,類似Init(), Release()之類的函數(shù)。
2. 提供類似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函數(shù),用戶調(diào)用此類函數(shù)進(jìn)行發(fā)起連接、接受連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等操作。
3. 接受連接、接收數(shù)據(jù)、被動(dòng)關(guān)閉的處理:由于此類操作是上位機(jī)發(fā)起的,所以TCP/IP協(xié)議棧必須提供一套機(jī)制來(lái)處理此類事件的發(fā)生。一般來(lái)說(shuō)有兩種方法:
a) 主動(dòng)等待:例如使用BSD的recv()函數(shù)等待數(shù)據(jù)的到來(lái)。
b) 回調(diào)機(jī)制:采用類似MFC的OnReceive()函數(shù)的回調(diào)機(jī)制,也即是說(shuō)在接收到數(shù)據(jù)的時(shí)候會(huì)自動(dòng)調(diào)用OnReceive()函數(shù)。
那么用戶如何使用以上的接口來(lái)實(shí)現(xiàn)遠(yuǎn)程控制、遠(yuǎn)程數(shù)據(jù)采集呢?方法很簡(jiǎn)單。
例如如果需要實(shí)現(xiàn)一個(gè)對(duì)LED燈的亮和滅的遠(yuǎn)程控制應(yīng)用。首先PC機(jī)使用TCP/IP發(fā)送工具例如SocketDlgTest程序發(fā)送一個(gè)字節(jié)的“1”到開(kāi)發(fā)板(根據(jù)開(kāi)發(fā)板的IP地址發(fā)送)。開(kāi)發(fā)板在OnReceive函數(shù)中發(fā)現(xiàn)收到的是“1”,那么就通過(guò)P1端口將燈打開(kāi);反之如果收到的是“0”則將燈熄滅。
如果是實(shí)現(xiàn)一個(gè)遠(yuǎn)程數(shù)據(jù)采集的應(yīng)用,例如定時(shí)進(jìn)行溫度采集。首先PC機(jī)使用SocketDlgTest程序等待發(fā)來(lái)數(shù)據(jù)。開(kāi)發(fā)板每隔一段時(shí)間采集一個(gè)數(shù)據(jù),然后通過(guò)send()函數(shù)將數(shù)據(jù)發(fā)送給PC機(jī)(根據(jù)PC機(jī)的IP地址發(fā)送),這樣PC就接收到了當(dāng)前的遠(yuǎn)程溫度數(shù)據(jù)。
4. 1 下層接口
下層接口是一個(gè)比較復(fù)雜的部分,實(shí)際上是TCP/IP協(xié)議棧和底層硬件的對(duì)接問(wèn)題。如果用戶將TCP/IP協(xié)議棧移植到自己的單片機(jī)系統(tǒng)上。由于硬件上存在一定的差異,就需要修改底層代碼。這里需要包括:
1.網(wǎng)卡驅(qū)動(dòng):如果TCP/IP協(xié)議棧已經(jīng)提供了網(wǎng)卡驅(qū)動(dòng),并且驅(qū)動(dòng)和用戶使用的網(wǎng)卡芯片一樣,那么就相對(duì)容易一些。這里只需要修改網(wǎng)卡的基地址即可。否則需要自己動(dòng)手寫驅(qū)動(dòng)程序。如果網(wǎng)卡采用RTL8019AS可以參考老古開(kāi)發(fā)網(wǎng)的單片機(jī)與TCP/IP網(wǎng)絡(luò)。如果網(wǎng)卡采用CS8900,可以參考《嵌入式 TCP/IP 協(xié)議單片機(jī)技術(shù)在網(wǎng)絡(luò)通信中的應(yīng)用》
2.TCP/IP底層接口。一般單片機(jī)TCP/IP需要底層為其提供定時(shí)中斷、網(wǎng)卡中斷處理的入口。底層需要做相應(yīng)的處理。
· IP協(xié)議對(duì)應(yīng)OSI模型的第三層-網(wǎng)絡(luò)層
· TCP協(xié)議對(duì)應(yīng)OSI模型的第四層傳輸層和第五層會(huì)話層的部分功能
· TCP/IP協(xié)議并不對(duì)網(wǎng)絡(luò)會(huì)話層(OSI模型第五層的一部分)發(fā)生的具體事情進(jìn)行假設(shè),而OSI模型定義了集中多層標(biāo)準(zhǔn)化功能。
· TCP/IP協(xié)議并不對(duì)IP網(wǎng)絡(luò)層下的鏈路層再進(jìn)行分層協(xié)定,而OSI模型指定了兩個(gè)分層。
· 當(dāng)一個(gè)應(yīng)用程序需要的功能在TCP/IP協(xié)議中無(wú)法找到時(shí),該應(yīng)用程序可以提供這些功能并調(diào)用。OSI模型假設(shè)每層的功能已經(jīng)定義好,一個(gè)應(yīng)用程序永遠(yuǎn)不會(huì)再調(diào)用自帶功能,因?yàn)楦鲗又g的接口抽離了許多細(xì)節(jié),可能無(wú)法實(shí)現(xiàn)調(diào)用。