登錄

數(shù)據(jù)包

百科 > 計算機 > 數(shù)據(jù)包

1.什么是數(shù)據(jù)包[1]

  數(shù)據(jù)包是指分塊的傳輸數(shù)據(jù),它被用于早期的計算機通信網(wǎng)的文獻中,而目前則普遍使用“分組”一詞。

2.數(shù)據(jù)包的傳送[2]

  如果一個協(xié)議已選擇了一個被坤(一個指向網(wǎng)絡接口結(jié)構(gòu)的指針)標識的接口,則協(xié)議就用以下的調(diào)用來傳送一個完全格式化的網(wǎng)絡層數(shù)據(jù)包。

  網(wǎng)絡接口的輸出例程傳送數(shù)據(jù)包m給dst中指定的協(xié)議地址,或返回一個錯誤號。事實上,傳送可能不是立即進行或可能不是成功的。典型的情況是,輸出例程驗證目的地址,將數(shù)據(jù)包在發(fā)送隊列進行排隊,并且,如果接口不忙就預先準備好一個中斷驅(qū)動例程來發(fā)送數(shù)據(jù)包。對于不可靠介質(zhì)(如以太網(wǎng)),成功的傳輸僅意味著數(shù)據(jù)包被放到了電纜上而未遇上沖突。相反,一個X.25接口保證對每一條傳輸?shù)?a href="/wiki/%E6%B6%88%E6%81%AF" title="消息">消息提供正確的發(fā)送或提供一個出錯指示。網(wǎng)絡系統(tǒng)使用的模型并不保證對在一個網(wǎng)絡接口出現(xiàn)的數(shù)據(jù)包進行正確傳送,這與以太網(wǎng)是最為接近的。輸出例程返回的出錯信息只是那些能立即檢測到的并且通常在實際上是微不足道的錯誤(網(wǎng)絡崩潰、沒有緩存空間、無法處理的地址格式等)。如果錯誤在調(diào)用返回之后被檢測到,就不告知協(xié)議。

  當傳送消息時,每一個網(wǎng)絡接口通常必須為每個傳出的數(shù)據(jù)包格式化一個鏈路層地址e。網(wǎng)絡接口層必須理解它所支持的每一種協(xié)議地址格式,以將其格式化為相應的鏈路層地址。每個協(xié)議族的網(wǎng)絡層為每一條消息都選擇一個目的地址,然后使用這個地址來選擇要使用的合適的網(wǎng)絡接口。把目標地址作為一個sockaddr結(jié)構(gòu)傳遞給該接口的輸出例程。假定該接口支持這種地址格式,那么該接口必須將目的協(xié)議地址映射到一個鏈路層協(xié)議地址,這個鏈路層協(xié)議與接口所支持的傳輸介質(zhì)相關(guān)聯(lián)。這個映射可以是一個簡單的算法,它可能需要一個表查詢,或者可能需要更多涉及的技術(shù)。

3.數(shù)據(jù)包的接收[2]

  網(wǎng)絡接口接收數(shù)據(jù)包,并根據(jù)在鏈路層協(xié)議頭部編碼的信息,將數(shù)據(jù)包分派給合適的網(wǎng)絡層協(xié)議。每一個協(xié)議族必須有一個或多個協(xié)議組成網(wǎng)絡層。在這個系統(tǒng)中,每一個網(wǎng)絡層協(xié)議都有一個分配給它的輸入數(shù)據(jù)包隊列。一個網(wǎng)絡接口所接收的數(shù)據(jù)包在一個協(xié)議的輸入數(shù)據(jù)包隊列中排隊,并發(fā)送一個軟件中斷來啟動網(wǎng)絡層處理,見圖1-1。網(wǎng)絡接口模塊使用相似的隊列來存儲正等待傳送的數(shù)據(jù)包。

Image:輸入數(shù)據(jù)包被分派給協(xié)議的輸入隊列.jpg

  圖1-1 輸入數(shù)據(jù)包被分派給協(xié)議的輸入隊列

評論  |   0條評論