日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux C高级编程——网络编程之UDP(4)

發(fā)布時間:2023/12/20 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux C高级编程——网络编程之UDP(4) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Linux網(wǎng)絡(luò)編程——UDP


宗旨:技術(shù)的學(xué)習(xí)是有限的,分享的精神是無限的。


下面分析一幀基于UDPTFTP協(xié)議幀。

以太網(wǎng)首部

0000:?00?05?5d?67?d0?b1?00?05?5d?61?58?a8?08?00

IP首部0000:?45?00

0010:?00?53?93?25?00?00?80?11?25?ec?c0?a8?00?37?c0?a8

0020:?00?01

UDP首部

0020:?05?d4?00?45?00?3f?ac?40

TFTP協(xié)議

0020:?00?01?'c'':''\''q'

0030:?'w''e''r''q''.''q''w''e'00?'n''e''t''a''s''c''i'

0040:?'i'00?'b''l''k''s''i''z''e'00?'5''1''2'00?'t''i'

0050:?'m''e''o''u''t'00?'1''0'00?'t''s''i''z''e'00?'0'

0060:?00

以太網(wǎng)首部:源MAC地址是00:05:5d:61:58:a8,目的MAC地址是00:05:5d:67:d0:b1,上層協(xié)議類型0x0800表示IP

IP首部:每一個字節(jié)0x45包含4位版本號和4位首部長度,版本號為4,即IPv4,首部長度為5,說明IP首部不帶有選項字段。服務(wù)類型為0,沒有使用服務(wù)。?16位總長度字段(包括IP首部和IPpayload的長度)為0x0053,即83字節(jié),加上以太網(wǎng)首部14字節(jié)可知整個幀長度是97字節(jié)。?IP報標(biāo)識是0x9325,標(biāo)志字段和片偏移字段設(shè)置為0x0000,就是DF=0允許分片,?MF=0此數(shù)據(jù)報沒有更多分片,沒有分片偏移。?TTL0x80,也就是128。上層協(xié)議0x11表示UDP協(xié)議。?IP首部校驗和為0x25ec,源主機IPc0?a8?00?37(?192.168.0.55),目的主機IPc0?a8?0001(?192.168.0.1)。

UDP首部:源端口號0x05d4(?1492)是客戶端的端口號,目的端口號0x0045(?69)是TFTP服務(wù)的well-known端口號。?UDP報長度為0x003f,即63字節(jié),包括UDP首部和UDPpayload的長度。?UDP首部和UDPpayload的校驗和為0xac40

TFTP是基于文本的協(xié)議,各字段之間用字節(jié)0分隔,開頭的00?01表示請求讀取一個文件,接下來的各字段是:

c:\qwerq.qwe

netascii

blksize?512

timeout?10

tsize?0

? ? ? ? 一般的網(wǎng)絡(luò)通信都是像TFTP協(xié)議這樣,通信的雙方分別是客戶端和服務(wù)器,客戶端主動發(fā)起請求(上面的例子就是客戶端發(fā)起的請求幀),而服務(wù)器被動地等待、接收和應(yīng)答請求。客戶端的IP址和端口號唯一標(biāo)識了該主機上的TFTP客戶端進程,服務(wù)器的IP地址和端口號唯一標(biāo)識了該主機上的TFTP服務(wù)進程,由于客戶端是主動發(fā)起請求的一方,它必須知道服務(wù)器的IP地址和TFTP服務(wù)進程的端口號,所以,一些常見的網(wǎng)絡(luò)協(xié)議有默認(rèn)的服務(wù)器端口,例如HTTP服務(wù)默認(rèn)TCP協(xié)議的80端口,?FTP服務(wù)默認(rèn)TCP協(xié)議的21端口,?TFTP服務(wù)默認(rèn)UDP協(xié)議的69端口(如上例所示)。在使用客戶端程序時,必須指定服務(wù)器的主機名或IP地址,如果不明確指定端口號則采用默認(rèn)端口,請讀者查閱ftp、?tftp等程序的man?page了解如何指定端口號。?/etc/services中列出了所有wellknown的服務(wù)端口和對應(yīng)的傳輸層協(xié)議,這是由IANA(?Internet?Assigned?Numbers?Authority)規(guī)定的,其中有些服務(wù)既可以用TCP也可以用UDP,為了清晰,?IANA規(guī)定這樣的服務(wù)采用相同的TCPUDP默認(rèn)端口號,而另外一些TCPUDP的相同端口號卻對應(yīng)不同的服務(wù)。

? ? ? ? UDP協(xié)議不面向連接,也不保證傳輸?shù)目煽啃?#xff0c;例如:

? ? ? ? 發(fā)送端的UDP協(xié)議層只管把應(yīng)用層傳來的數(shù)據(jù)封裝成段交給IP協(xié)議層就算完成任務(wù)了,如果因為網(wǎng)絡(luò)故障該段無法發(fā)到對方,UDP協(xié)議層也不會給應(yīng)用層返回任何錯誤信息。

? ? ? ? 接收端的UDP協(xié)議層只管把收到的數(shù)據(jù)根據(jù)端口號交給相應(yīng)的應(yīng)用程序就算完成任務(wù)了,如果發(fā)送端發(fā)來多個數(shù)據(jù)包并且在網(wǎng)絡(luò)上經(jīng)過不同的路由,到達(dá)接收端時順序已經(jīng)錯亂了,UDP協(xié)議層也不保證按發(fā)送時的順序交給應(yīng)用層。

? ? ? ? 通常接收端的UDP協(xié)議層將收到的數(shù)據(jù)放在一個固定大小的緩沖區(qū)中等待應(yīng)用程序來提取和處理,如果應(yīng)用程序提取和處理的速度很慢,而發(fā)送端發(fā)送的速度很快,就會丟失數(shù)據(jù)包,?UDP協(xié)議層并不報告這種錯誤。

總結(jié)

以上是生活随笔為你收集整理的Linux C高级编程——网络编程之UDP(4)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。