• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            aurain
            技術(shù)文摘
            posts - 137,  comments - 268,  trackbacks - 0

            TCP/IP詳解讀書(shū)筆記(第11 UDP:用戶數(shù)據(jù)報(bào)協(xié)議)

            UDP是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議:進(jìn)程的每個(gè)輸出操作都正好產(chǎn)生一個(gè)UDP數(shù)據(jù)報(bào),并組裝成一份待發(fā)送的IP數(shù)據(jù)報(bào)。UDP不提供可靠性:它把應(yīng)用程序傳給IP層的數(shù)據(jù)發(fā)送出去,但是并不保證它們能到達(dá)目的地。UDP數(shù)據(jù)報(bào)封裝格式如圖1所示。

            1UDP數(shù)據(jù)報(bào)封裝格式

             

            UDP首部

            UDP首部的各字段如圖2所示。

            2UDP首部格式

            端口號(hào)表示發(fā)送進(jìn)程和接收進(jìn)程。UDP長(zhǎng)度字段指的是UDP首部和UDP數(shù)據(jù)的字節(jié)長(zhǎng)度。該字段的最小值為8字節(jié)(發(fā)送一份0字節(jié)的UDP數(shù)據(jù)報(bào)是OK)。這個(gè)UDP長(zhǎng)度是有冗余的。IP數(shù)據(jù)報(bào)長(zhǎng)度指的是數(shù)據(jù)報(bào)全長(zhǎng),因此UDP數(shù)據(jù)報(bào)長(zhǎng)度是全長(zhǎng)減去IP首部的長(zhǎng)度。

             

            UDP檢驗(yàn)和

            UDP檢驗(yàn)和覆蓋UDP首部和UDP數(shù)據(jù)。回想IP首部的檢驗(yàn)和,它只覆蓋IP的首部,并不覆蓋IP數(shù)據(jù)報(bào)中的任何數(shù)據(jù)。UDP的檢驗(yàn)和是可選的,它是一個(gè)端到端的檢驗(yàn)和。它由發(fā)送端計(jì)算,然后由接收端驗(yàn)證。其目的是為了發(fā)現(xiàn)UDP首部和數(shù)據(jù)在發(fā)送端到接收端之間發(fā)生的任何改動(dòng)。

             

            IP分片

            物理網(wǎng)絡(luò)層一般要限制每次發(fā)送數(shù)據(jù)幀的最大長(zhǎng)度。任何時(shí)候IP層接收到一份要發(fā)送的IP數(shù)據(jù)報(bào)時(shí),它要判斷向本地哪個(gè)接口發(fā)送數(shù)據(jù)(選路),并查詢?cè)摻涌讷@得其MTUIPMTU與數(shù)據(jù)報(bào)長(zhǎng)度進(jìn)行比較,如果需要?jiǎng)t進(jìn)行分片。分片可以發(fā)生在原始發(fā)送端主機(jī)上,也可以發(fā)生在中間路由器上。

            把一份IP數(shù)據(jù)報(bào)分片以后,只有到達(dá)目的地才進(jìn)行重新組裝(這里的重新組裝與其他網(wǎng)絡(luò)協(xié)議不同,它們要求在下一站就進(jìn)行進(jìn)行重新組裝,而不是在最終的目的地)。重新組裝由目的端的IP層來(lái)完成,其目的是使分片和重新組裝過(guò)程對(duì)運(yùn)輸層( TCPUDP)是透明的,除了某些可能的越級(jí)操作外。已經(jīng)分片過(guò)的數(shù)據(jù)報(bào)有可能會(huì)再次進(jìn)行分片(可能不止一次)。IP首部中包含的數(shù)據(jù)為分片和重新組裝提供了足夠的信息。

            使用UDP很容易導(dǎo)致IP分片,圖3為使用UDP時(shí)的IP分片示意圖。

            3UDP分片示意圖

             

            最大UDP數(shù)據(jù)報(bào)長(zhǎng)度

            理論上,IP數(shù)據(jù)報(bào)的最大長(zhǎng)度是65535字節(jié),這是由IP首部16比特總長(zhǎng)度字段所限制的。去除20字節(jié)的IP首部和8個(gè)字節(jié)的UDP首部,UDP數(shù)據(jù)報(bào)中用戶數(shù)據(jù)的最長(zhǎng)長(zhǎng)度為65507字節(jié)。但是,大多數(shù)實(shí)現(xiàn)所提供的長(zhǎng)度比這個(gè)最大值小。

            第一,應(yīng)用程序可能會(huì)受到其程序接口的限制。socket API提供了一個(gè)可供應(yīng)用程序調(diào)用的函數(shù),以設(shè)置接收和發(fā)送緩存的長(zhǎng)度。對(duì)于UDP socket,這個(gè)長(zhǎng)度與應(yīng)用程序可以讀寫(xiě)的最大UDP數(shù)據(jù)報(bào)的長(zhǎng)度直接相關(guān)。現(xiàn)在的大部分系統(tǒng)都默認(rèn)提供了可讀寫(xiě)大于8192字節(jié)的UDP數(shù)據(jù)報(bào)(使用這個(gè)默認(rèn)值是因?yàn)?/span>8192NFS讀寫(xiě)用戶數(shù)據(jù)數(shù)的默認(rèn)值)。

            第二個(gè)限制來(lái)自于TCP/IP的內(nèi)核實(shí)現(xiàn)。可能存在一些實(shí)現(xiàn)特性(或差錯(cuò)),使IP數(shù)據(jù)報(bào)長(zhǎng)度小于65535字節(jié)。

             

            UDP服務(wù)器的設(shè)計(jì)

            典型的服務(wù)器與操作系統(tǒng)進(jìn)行交互作用,而且大多數(shù)需要同時(shí)處理多個(gè)客戶,通常一個(gè)客戶啟動(dòng)后直接與單個(gè)服務(wù)器通信,然后就結(jié)束了。而對(duì)于服務(wù)器來(lái)說(shuō),它啟動(dòng)后處于休眠狀態(tài),等待客戶請(qǐng)求的到來(lái)。對(duì)于UDP來(lái)說(shuō),當(dāng)客戶數(shù)據(jù)報(bào)到達(dá)時(shí),服務(wù)器蘇醒過(guò)來(lái),數(shù)據(jù)報(bào)中可能包含來(lái)自客戶的某種形式的請(qǐng)求消息。

            1. 客戶IP地址及端口號(hào)

            來(lái)自客戶的是UDP數(shù)據(jù)報(bào)。IP首部包含源端和目的端IP地址,UDP首部包含了源端和目的端的UDP端口號(hào)。當(dāng)一個(gè)應(yīng)用程序接收到UDP數(shù)據(jù)報(bào)時(shí),操作系統(tǒng)必須告訴它是誰(shuí)發(fā)送了這份消息,即源IP地址和端口號(hào)。這個(gè)特性允許一個(gè)交互UDP服務(wù)器對(duì)多個(gè)客戶進(jìn)行處理。給每個(gè)發(fā)送請(qǐng)求的客戶發(fā)回應(yīng)答。

            2. 目的IP地址

            一些應(yīng)用程序需要知道數(shù)據(jù)報(bào)是發(fā)送給誰(shuí)的,即目的IP地址。

            3. UDP輸入隊(duì)列

            通常程序所使用的每個(gè)UDP端口都與一個(gè)有限大小的輸入隊(duì)列相聯(lián)系。這意味著,來(lái)自不同客戶的差不多同時(shí)到達(dá)的請(qǐng)求將由UDP自動(dòng)排隊(duì)。接收到的UDP數(shù)據(jù)報(bào)以其接收順序交給應(yīng)用程序(在應(yīng)用程序要求交送下一個(gè)數(shù)據(jù)報(bào)時(shí))。

            然而,排隊(duì)溢出造成內(nèi)核中的U D P模塊丟棄數(shù)據(jù)報(bào)的可能性是存在的。

            4. 端口復(fù)用

                   每個(gè)服務(wù)器具有不同的本地I P地址,有可能在相同的端口上啟動(dòng)不同的服務(wù)器,使用sockets API時(shí),必須指定SO_REUSEADDR socket選項(xiàng)。

            posted on 2008-08-27 18:09 閱讀(2868) 評(píng)論(2)  編輯 收藏 引用 所屬分類: tcp/ip

            FeedBack:
            # re: TCP/IP詳解讀書(shū)筆記(第11章 UDP:用戶數(shù)據(jù)報(bào)協(xié)議)
            2008-08-28 08:52 | true
            該系列,你寫(xiě)了很久了,支持  回復(fù)  更多評(píng)論
              
            # re: TCP/IP詳解讀書(shū)筆記(第11章 UDP:用戶數(shù)據(jù)報(bào)協(xié)議)
            2008-08-28 09:25 |
            @true
            很汗顏了。。。要加快進(jìn)度了  回復(fù)  更多評(píng)論
              

            <2008年2月>
            272829303112
            3456789
            10111213141516
            17181920212223
            2425262728291
            2345678

            常用鏈接

            留言簿(17)

            隨筆分類(138)

            隨筆檔案(137)

            網(wǎng)絡(luò)開(kāi)發(fā)

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 497412
            • 排名 - 36

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            麻豆精品久久久久久久99蜜桃| 久久天天躁狠狠躁夜夜2020| 丁香色欲久久久久久综合网| 国内精品久久久久影院薰衣草 | 久久亚洲日韩精品一区二区三区| 无码人妻精品一区二区三区久久久| 久久精品国产亚洲av麻豆小说 | 久久久国产视频| 亚洲AV乱码久久精品蜜桃| 久久综合久久伊人| 国内精品久久久久久久涩爱| 久久精品国产99国产精品亚洲 | 成人午夜精品无码区久久| 欧美日韩精品久久免费| 国产精品99久久久精品无码 | 久久精品人人槡人妻人人玩AV | 久久精品无码免费不卡| 亚洲av日韩精品久久久久久a| 欧美精品九九99久久在观看| 日韩久久久久中文字幕人妻| 97久久超碰成人精品网站| 日韩十八禁一区二区久久| 久久亚洲AV无码西西人体| 亚洲国产婷婷香蕉久久久久久| 久久亚洲欧美日本精品| 亚洲精品无码久久久影院相关影片| 久久伊人精品一区二区三区| 色偷偷久久一区二区三区| 久久精品a亚洲国产v高清不卡| 99久久精品国产高清一区二区| 国产免费久久精品丫丫| 久久99国产精品99久久| 久久精品国产亚洲av影院| 青草影院天堂男人久久| 久久久久久A亚洲欧洲AV冫| 香蕉久久影院| a高清免费毛片久久| 久久久久久A亚洲欧洲AV冫| 中文字幕无码精品亚洲资源网久久 | 66精品综合久久久久久久| 久久99国产综合精品|