第2章 TCPIP基礎(chǔ)_第1頁(yè)
第2章 TCPIP基礎(chǔ)_第2頁(yè)
第2章 TCPIP基礎(chǔ)_第3頁(yè)
第2章 TCPIP基礎(chǔ)_第4頁(yè)
第2章 TCPIP基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第2 2章章TCP/IPTCP/IP基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)主要內(nèi)容主要內(nèi)容l2.1 TCP/IP計(jì)算機(jī)網(wǎng)絡(luò)的構(gòu)成計(jì)算機(jī)網(wǎng)絡(luò)的構(gòu)成l2.2 TCP/IP的工作原理的工作原理 l2.3 TCP/IP 協(xié)議棧的實(shí)現(xiàn)方法協(xié)議棧的實(shí)現(xiàn)方法 2.1 TCP/IP計(jì)算機(jī)網(wǎng)絡(luò)的構(gòu)成計(jì)算機(jī)網(wǎng)絡(luò)的構(gòu)成l2.1.1 TCP/IP計(jì)算機(jī)網(wǎng)絡(luò)的構(gòu)成計(jì)算機(jī)網(wǎng)絡(luò)的構(gòu)成l2.1.2 硬件和軟件硬件和軟件l2.1.3 控制通信的三個(gè)軟件控制通信的三個(gè)軟件2.1.1 TCP/IP計(jì)算機(jī)網(wǎng)絡(luò)的結(jié)構(gòu)計(jì)算機(jī)網(wǎng)絡(luò)的結(jié)構(gòu)l在在TCP/IP計(jì)算機(jī)網(wǎng)絡(luò)中,主機(jī)之間是由各種各樣的計(jì)算計(jì)算機(jī)網(wǎng)絡(luò)中,主機(jī)之間是由各種各樣的計(jì)算機(jī)網(wǎng)絡(luò)連接的。機(jī)網(wǎng)絡(luò)連接的

2、。 l我們把主機(jī)之間所連接的計(jì)算機(jī)網(wǎng)絡(luò)稱為數(shù)據(jù)鏈路或通信我們把主機(jī)之間所連接的計(jì)算機(jī)網(wǎng)絡(luò)稱為數(shù)據(jù)鏈路或通信線路。線路。 l數(shù)據(jù)鏈路主要有數(shù)據(jù)鏈路主要有以太網(wǎng)以太網(wǎng)、無線局域網(wǎng)無線局域網(wǎng)(LAN)、)、光纖分布光纖分布數(shù)據(jù)接口網(wǎng)數(shù)據(jù)接口網(wǎng)(FDDI)、)、異步傳輸模式網(wǎng)異步傳輸模式網(wǎng)(ATM)、)、幀中幀中繼繼(FR)、)、專用線路專用線路、綜合業(yè)務(wù)數(shù)字網(wǎng)綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)等。)等。 l主機(jī)與主機(jī)之間可以通過數(shù)據(jù)鏈路直接相連,也可以通過主機(jī)與主機(jī)之間可以通過數(shù)據(jù)鏈路直接相連,也可以通過路由器間接相連。路由器間接相連。計(jì)算機(jī)網(wǎng)絡(luò)的結(jié)構(gòu)計(jì)算機(jī)網(wǎng)絡(luò)的結(jié)構(gòu)2.1.2 硬件和軟件硬件和軟件l計(jì)算機(jī)

3、是由硬件和軟件所組成的,計(jì)算機(jī)網(wǎng)絡(luò)也是由硬件計(jì)算機(jī)是由硬件和軟件所組成的,計(jì)算機(jī)網(wǎng)絡(luò)也是由硬件和軟件所組成的。和軟件所組成的。計(jì)算機(jī)的層次結(jié)構(gòu)計(jì)算機(jī)的層次結(jié)構(gòu)網(wǎng)絡(luò)的層次結(jié)構(gòu)網(wǎng)絡(luò)的層次結(jié)構(gòu)硬件和軟件硬件和軟件l硬件硬件實(shí)現(xiàn)協(xié)議的通信功能實(shí)現(xiàn)協(xié)議的通信功能硬件是由主機(jī)、網(wǎng)卡、調(diào)制解調(diào)器、通信線路、集線器、硬件是由主機(jī)、網(wǎng)卡、調(diào)制解調(diào)器、通信線路、集線器、交換機(jī)、路由器等所組成的。交換機(jī)、路由器等所組成的。 硬件和軟件硬件和軟件l軟件軟件實(shí)現(xiàn)了實(shí)現(xiàn)了Web、電子郵件等功能、電子郵件等功能 用于對(duì)硬件進(jìn)行控制,通過電纜發(fā)送數(shù)據(jù)包,而硬件則按用于對(duì)硬件進(jìn)行控制,通過電纜發(fā)送數(shù)據(jù)包,而硬件則按照軟件的指示

4、,在鏈路中傳輸數(shù)據(jù)包。照軟件的指示,在鏈路中傳輸數(shù)據(jù)包。在主機(jī)上運(yùn)行的軟件,可以分為兩大類在主機(jī)上運(yùn)行的軟件,可以分為兩大類 :應(yīng)用軟件應(yīng)用軟件 針對(duì)不同的目的而編制的軟件。包括文字處理針對(duì)不同的目的而編制的軟件。包括文字處理軟件、電子表格軟件、演示工具等。軟件、電子表格軟件、演示工具等。 操作系統(tǒng)操作系統(tǒng) 對(duì)硬件進(jìn)行控制,為應(yīng)用軟件提供一些服務(wù)并對(duì)硬件進(jìn)行控制,為應(yīng)用軟件提供一些服務(wù)并對(duì)應(yīng)用軟件的執(zhí)行進(jìn)行管理的軟件。包括對(duì)應(yīng)用軟件的執(zhí)行進(jìn)行管理的軟件。包括Windows、MacOS、Linux、UNIX等。等。 2.1.3 控制通信的三個(gè)軟件控制通信的三個(gè)軟件 l操作系統(tǒng)內(nèi)部的計(jì)算機(jī)網(wǎng)絡(luò)軟件

5、,可以分成三大類:操作系統(tǒng)內(nèi)部的計(jì)算機(jī)網(wǎng)絡(luò)軟件,可以分成三大類:傳輸層模塊傳輸層模塊 以運(yùn)行以運(yùn)行Internet模塊為前提才能實(shí)現(xiàn)其功能模塊為前提才能實(shí)現(xiàn)其功能的,它在目的端主機(jī)和發(fā)送端主機(jī)內(nèi)部運(yùn)行,它所提供的的,它在目的端主機(jī)和發(fā)送端主機(jī)內(nèi)部運(yùn)行,它所提供的功能是把應(yīng)用軟件的報(bào)文確定地發(fā)送到接收端。功能是把應(yīng)用軟件的報(bào)文確定地發(fā)送到接收端。 Internet模塊模塊 發(fā)揮作用的前提條件是發(fā)揮作用的前提條件是“在使用設(shè)備驅(qū)動(dòng)在使用設(shè)備驅(qū)動(dòng)程序控制的硬件連接的主機(jī)或路由器之間進(jìn)行通信程序控制的硬件連接的主機(jī)或路由器之間進(jìn)行通信”。 設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序 是指控制與計(jì)算機(jī)相連的設(shè)備的軟件,控

6、是指控制與計(jì)算機(jī)相連的設(shè)備的軟件,控制網(wǎng)絡(luò)接口卡(制網(wǎng)絡(luò)接口卡(NIC:Network Interface Card)的軟件,)的軟件,它負(fù)責(zé)發(fā)送和接收處理。它負(fù)責(zé)發(fā)送和接收處理。 計(jì)算機(jī)網(wǎng)絡(luò)操作系統(tǒng)的三大功能計(jì)算機(jī)網(wǎng)絡(luò)操作系統(tǒng)的三大功能2.2 TCP/IP的工作原理的工作原理l2.2.1 分層次模型和包交換分層次模型和包交換l2.2.2 報(bào)的發(fā)送和接收?qǐng)?bào)的發(fā)送和接收l2.2.3 協(xié)議包頭及其處理協(xié)議包頭及其處理2.2.1 分層次模型和包交換分層次模型和包交換l在發(fā)送端在發(fā)送端 層層封裝層層封裝l在接收端在接收端 層層解封層層解封報(bào)頭的分層化處理報(bào)頭的分層化處理2.2.2 包的發(fā)送和接收包的發(fā)

7、送和接收 以以TCP/IP的通信為例來介紹包的發(fā)送和接收過程的通信為例來介紹包的發(fā)送和接收過程,首先,讓首先,讓我們來看一下在兩臺(tái)計(jì)算機(jī)之間,如何利用我們來看一下在兩臺(tái)計(jì)算機(jī)之間,如何利用TCP/IP協(xié)議通協(xié)議通過電子郵件來發(fā)送過電子郵件來發(fā)送“早上好早上好”這樣的字符這樣的字符:電子郵件的發(fā)送和接收舉例電子郵件的發(fā)送和接收舉例發(fā)送端的處理過程發(fā)送端的處理過程應(yīng)用層的處理應(yīng)用層的處理啟動(dòng)應(yīng)用程序,編輯要發(fā)送的電子郵件。啟動(dòng)應(yīng)用程序,編輯要發(fā)送的電子郵件。首先,啟動(dòng)電子郵件軟件,從鍵盤上輸入首先,啟動(dòng)電子郵件軟件,從鍵盤上輸入“早上早上好好”。使用鼠標(biāo)點(diǎn)擊發(fā)送按鈕,則調(diào)用。使用鼠標(biāo)點(diǎn)擊發(fā)送按鈕,

8、則調(diào)用TCP/IP協(xié)協(xié)議開始通信。議開始通信。發(fā)送端的處理過程發(fā)送端的處理過程在應(yīng)用程序中,首先進(jìn)行編碼處理,編碼處理相當(dāng)于在應(yīng)用程序中,首先進(jìn)行編碼處理,編碼處理相當(dāng)于OSI參考模型的表示層的功能。參考模型的表示層的功能。從廣義上來講,什么時(shí)候建立通信的連接和何時(shí)發(fā)送數(shù)據(jù)從廣義上來講,什么時(shí)候建立通信的連接和何時(shí)發(fā)送數(shù)據(jù)的管理功能,相當(dāng)于的管理功能,相當(dāng)于OSI模型中會(huì)話層的功能。模型中會(huì)話層的功能。 在發(fā)送電子郵件的時(shí)候,應(yīng)用程序明確指示建立在發(fā)送電子郵件的時(shí)候,應(yīng)用程序明確指示建立TCP協(xié)議協(xié)議的連接,一旦建立起的連接,一旦建立起TCP連接,就進(jìn)行發(fā)送處理。連接,就進(jìn)行發(fā)送處理。發(fā)送端的

9、處理過程發(fā)送端的處理過程TCP模塊的處理模塊的處理TCP協(xié)議根據(jù)應(yīng)用程序的指示,進(jìn)行下面的處理:建立連協(xié)議根據(jù)應(yīng)用程序的指示,進(jìn)行下面的處理:建立連接、發(fā)送數(shù)據(jù)和切斷連接。接、發(fā)送數(shù)據(jù)和切斷連接。 為了將應(yīng)用層傳輸過來的數(shù)據(jù)可靠地發(fā)送到對(duì)方,為了將應(yīng)用層傳輸過來的數(shù)據(jù)可靠地發(fā)送到對(duì)方,TCP協(xié)協(xié)議還提供可靠性較高的數(shù)據(jù)傳輸。議還提供可靠性較高的數(shù)據(jù)傳輸。為了實(shí)現(xiàn)為了實(shí)現(xiàn)TCP協(xié)議的功能,在應(yīng)用層數(shù)據(jù)的前面,需要附協(xié)議的功能,在應(yīng)用層數(shù)據(jù)的前面,需要附加加TCP協(xié)議的報(bào)頭。將附加有協(xié)議的報(bào)頭。將附加有TCP報(bào)頭的數(shù)據(jù)向報(bào)頭的數(shù)據(jù)向IP協(xié)議發(fā)協(xié)議發(fā)送。送。 發(fā)送端的處理過程發(fā)送端的處理過程IP模塊

10、的處理模塊的處理在在IP協(xié)議中,從協(xié)議中,從TCP協(xié)議傳輸過來的協(xié)議傳輸過來的TCP報(bào)頭和數(shù)據(jù)被當(dāng)報(bào)頭和數(shù)據(jù)被當(dāng)作一個(gè)數(shù)據(jù)來處理。另外,在作一個(gè)數(shù)據(jù)來處理。另外,在TCP報(bào)頭的前面,需要再附報(bào)頭的前面,需要再附加加IP報(bào)頭。報(bào)頭。在在IP報(bào)頭中,包含有發(fā)送端和接收端的報(bào)頭中,包含有發(fā)送端和接收端的IP地址、數(shù)據(jù)的類地址、數(shù)據(jù)的類型(是型(是TCP協(xié)議還是協(xié)議還是UDP協(xié)議)等信息。協(xié)議)等信息。 在完成在完成IP包的處理之后,參照路由表(包的處理之后,參照路由表(routing table),),確定接收確定接收IP包的下一個(gè)路由器或者主機(jī),并且向與計(jì)算機(jī)包的下一個(gè)路由器或者主機(jī),并且向與計(jì)算

11、機(jī)網(wǎng)絡(luò)接口連接的機(jī)器的驅(qū)動(dòng)程序發(fā)送網(wǎng)絡(luò)接口連接的機(jī)器的驅(qū)動(dòng)程序發(fā)送IP包,進(jìn)行發(fā)送處理。包,進(jìn)行發(fā)送處理。發(fā)送端的處理過程發(fā)送端的處理過程如果不知道通信方的如果不知道通信方的MAC地址,則利用地址解析協(xié)議來地址,則利用地址解析協(xié)議來詢問詢問MAC地址。如果已經(jīng)知道了地址。如果已經(jīng)知道了MAC地址,則最終交給地址,則最終交給Ethernet驅(qū)動(dòng)程序進(jìn)行驅(qū)動(dòng)程序進(jìn)行MAC地址和數(shù)據(jù)的處理。地址和數(shù)據(jù)的處理。網(wǎng)絡(luò)接口的處理網(wǎng)絡(luò)接口的處理如果從如果從Ethernet驅(qū)動(dòng)程序的角度來看,從驅(qū)動(dòng)程序的角度來看,從IP傳輸過來的包,傳輸過來的包,只不過是簡(jiǎn)單的數(shù)據(jù)罷了。只不過是簡(jiǎn)單的數(shù)據(jù)罷了。在該數(shù)據(jù)中附加

12、上在該數(shù)據(jù)中附加上Ethernet報(bào)頭之后,再進(jìn)行發(fā)送處理。報(bào)頭之后,再進(jìn)行發(fā)送處理。再由物理層發(fā)送到通信的對(duì)方中。再由物理層發(fā)送到通信的對(duì)方中。 接收端的處理過程接收端的處理過程l在在接收端的主機(jī)接收端的主機(jī)中所進(jìn)行的處理,與發(fā)送端的主機(jī)處理順中所進(jìn)行的處理,與發(fā)送端的主機(jī)處理順序相反,具體的處理過程:序相反,具體的處理過程:網(wǎng)絡(luò)接口的處理網(wǎng)絡(luò)接口的處理接收包的主機(jī)首先檢查接收包的主機(jī)首先檢查Ethernet報(bào)頭的目的報(bào)頭的目的MAC地址是否地址是否與自己的與自己的MAC地址一致,如果與自己的地址一致,如果與自己的MAC地址一致,地址一致,則接收;若不一致,再檢查是否廣播地址。則接收;若不一

13、致,再檢查是否廣播地址。 若是廣播地址,則接收;若不是廣播地址,再檢查是否組若是廣播地址,則接收;若不是廣播地址,再檢查是否組播地址。播地址。 接收端的處理過程接收端的處理過程若是組播地址,且該主機(jī)屬于該組播組,則接收,否則不若是組播地址,且該主機(jī)屬于該組播組,則接收,否則不接收該幀。接收該幀。接著,進(jìn)行接著,進(jìn)行CRC校驗(yàn),如果校驗(yàn)出有錯(cuò)誤,則丟掉該幀;校驗(yàn),如果校驗(yàn)出有錯(cuò)誤,則丟掉該幀;校驗(yàn)無錯(cuò)誤,檢查校驗(yàn)無錯(cuò)誤,檢查Ethernet類型域,同時(shí)也檢查類型域,同時(shí)也檢查Ethernet協(xié)議所傳輸?shù)臄?shù)據(jù)。協(xié)議所傳輸?shù)臄?shù)據(jù)。 如果如果Ethernet類型域的值是無法處理的協(xié)議的值,則不接類型域

14、的值是無法處理的協(xié)議的值,則不接收該數(shù)據(jù)。收該數(shù)據(jù)。接收端的處理過程接收端的處理過程IP模塊的處理模塊的處理在在IP處理子程序中,如果能夠傳遞處理子程序中,如果能夠傳遞IP報(bào)頭后的數(shù)據(jù),那么報(bào)頭后的數(shù)據(jù),那么原封不動(dòng)地處理原封不動(dòng)地處理IP報(bào)頭即可。報(bào)頭即可。 如果發(fā)送的如果發(fā)送的IP地址是自己主機(jī)的地址是自己主機(jī)的IP地址,即:自己發(fā)給自地址,即:自己發(fā)給自己的包,則可以原封不動(dòng)地接收。己的包,則可以原封不動(dòng)地接收。 如果包的接收地址為自己的主機(jī)地址,則檢查上一層的協(xié)如果包的接收地址為自己的主機(jī)地址,則檢查上一層的協(xié)議,如果是議,如果是TCP協(xié)議,則將數(shù)據(jù)傳遞給協(xié)議,則將數(shù)據(jù)傳遞給TCP處理

15、子程序;處理子程序;如果是如果是UDP協(xié)議,則將數(shù)據(jù)傳輸給協(xié)議,則將數(shù)據(jù)傳輸給UDP處理子程序。處理子程序。 接收端的處理過程接收端的處理過程如果是路由器,則接收到的如果是路由器,則接收到的IP包的接收端地址基本上都不包的接收端地址基本上都不是屬于自己的,在這種情況下,需要從路由表中查出下一是屬于自己的,在這種情況下,需要從路由表中查出下一個(gè)要發(fā)送的主機(jī)或者路由器,然后轉(zhuǎn)發(fā)處理。個(gè)要發(fā)送的主機(jī)或者路由器,然后轉(zhuǎn)發(fā)處理。TCP模塊的處理模塊的處理在在TCP協(xié)議中,首先計(jì)算檢驗(yàn)和,然后確認(rèn)數(shù)據(jù)是否損壞。協(xié)議中,首先計(jì)算檢驗(yàn)和,然后確認(rèn)數(shù)據(jù)是否損壞。 還需要確認(rèn)所接收到的數(shù)據(jù)是否按順序到達(dá),并且檢查

16、下還需要確認(rèn)所接收到的數(shù)據(jù)是否按順序到達(dá),并且檢查下一個(gè)端口號(hào),將正在進(jìn)行的通信與一個(gè)特定的應(yīng)用程序聯(lián)一個(gè)端口號(hào),將正在進(jìn)行的通信與一個(gè)特定的應(yīng)用程序聯(lián)系起來。系起來。接收端的處理過程接收端的處理過程如果數(shù)據(jù)準(zhǔn)確無誤地到達(dá),則向發(fā)送端主機(jī)返回一個(gè)確認(rèn)如果數(shù)據(jù)準(zhǔn)確無誤地到達(dá),則向發(fā)送端主機(jī)返回一個(gè)確認(rèn)數(shù)據(jù)已經(jīng)到達(dá)的數(shù)據(jù)已經(jīng)到達(dá)的“確認(rèn)應(yīng)答確認(rèn)應(yīng)答”。在接收端主機(jī)正確地接收到數(shù)據(jù)的情況下,使用端口號(hào)來在接收端主機(jī)正確地接收到數(shù)據(jù)的情況下,使用端口號(hào)來識(shí)別一個(gè)應(yīng)用程序,并把數(shù)據(jù)原封不動(dòng)地傳遞給該程序。識(shí)別一個(gè)應(yīng)用程序,并把數(shù)據(jù)原封不動(dòng)地傳遞給該程序。應(yīng)用程序的處理應(yīng)用程序的處理接收端的應(yīng)用層將傳輸層

17、遞交過來的數(shù)據(jù)原封不動(dòng)地接收接收端的應(yīng)用層將傳輸層遞交過來的數(shù)據(jù)原封不動(dòng)地接收下來即可。下來即可。 應(yīng)用程序?qū)邮盏降臄?shù)據(jù)進(jìn)行分析,可以知道這個(gè)電子郵應(yīng)用程序?qū)邮盏降臄?shù)據(jù)進(jìn)行分析,可以知道這個(gè)電子郵件是發(fā)給件是發(fā)給“B”先生的。先生的。 接收端的處理過程接收端的處理過程如果如果“B”先生的郵箱不存在,那么就向發(fā)送端的應(yīng)用層先生的郵箱不存在,那么就向發(fā)送端的應(yīng)用層返回返回“沒有接收人沒有接收人”的錯(cuò)誤信息。的錯(cuò)誤信息。如果接收到的話,則將信息存儲(chǔ)在硬盤上。如果接收到的話,則將信息存儲(chǔ)在硬盤上。如果所有的電子郵件消息都準(zhǔn)確無誤地存儲(chǔ)起來,則處理如果所有的電子郵件消息都準(zhǔn)確無誤地存儲(chǔ)起來,則處理正

18、常結(jié)束,并向發(fā)送端的應(yīng)用層返回一個(gè)正常的信息。正常結(jié)束,并向發(fā)送端的應(yīng)用層返回一個(gè)正常的信息。在存儲(chǔ)過程中,如果硬盤已滿,不能存儲(chǔ)該電子郵件消息在存儲(chǔ)過程中,如果硬盤已滿,不能存儲(chǔ)該電子郵件消息的話,則異常結(jié)束,并向發(fā)送端的應(yīng)用層返回一個(gè)錯(cuò)誤信的話,則異常結(jié)束,并向發(fā)送端的應(yīng)用層返回一個(gè)錯(cuò)誤信息。息。 接收端的處理過程接收端的處理過程這樣,如果這樣,如果B先生運(yùn)行電子郵件軟件,則能夠閱讀來自于先生運(yùn)行電子郵件軟件,則能夠閱讀來自于A先生的電子郵件。先生的電子郵件。通過上述處理,在接收端顯示器上就能夠看到通過上述處理,在接收端顯示器上就能夠看到“早上好早上好”的信息。的信息。 2.2.3 協(xié)議報(bào)

19、頭及其處理協(xié)議報(bào)頭及其處理 l關(guān)于通信協(xié)議的技術(shù)性能指標(biāo),可以分為兩個(gè)關(guān)于通信協(xié)議的技術(shù)性能指標(biāo),可以分為兩個(gè)方面來定義,即:方面來定義,即:報(bào)頭格式的定義報(bào)頭格式的定義操作的定義操作的定義 通信協(xié)議可以描述如下通信協(xié)議可以描述如下 l協(xié)議協(xié)議=包的結(jié)構(gòu)包的結(jié)構(gòu)+操作的定義操作的定義 包的格式包的格式2.3 TCP/IP 協(xié)議棧的實(shí)現(xiàn)方法協(xié)議棧的實(shí)現(xiàn)方法l2.3.1 地址變換地址變換l2.3.2 協(xié)議棧的內(nèi)部處理協(xié)議棧的內(nèi)部處理l2.3.3 套接字套接字l2.3.4 系統(tǒng)調(diào)用及內(nèi)部處理系統(tǒng)調(diào)用及內(nèi)部處理2.3.1 地址變換地址變換l為了識(shí)別特定的主機(jī),我們使用了各種地址。這些地址分為了識(shí)別特定

20、的主機(jī),我們使用了各種地址。這些地址分別是:別是: 在應(yīng)用層使用一個(gè)域名;在應(yīng)用層使用一個(gè)域名;在傳輸層使用一個(gè)端口號(hào);在傳輸層使用一個(gè)端口號(hào);在在IP層使用一個(gè)層使用一個(gè)IP地址;地址;在在Ethernet層使用一個(gè)層使用一個(gè)MAC地址。地址。 TCP/IP 協(xié)議棧協(xié)議棧765432543應(yīng)用層應(yīng)用層表示層表示層會(huì)話層會(huì)話層傳輸層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層物理層物理層1應(yīng)用層應(yīng)用層傳輸層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層物理層物理層12地址變換地址變換l在通信的時(shí)候,必須對(duì)這些地址信息進(jìn)行相應(yīng)的變換處理。在通信的時(shí)候,必須對(duì)這些地址信息進(jìn)行相應(yīng)的變換處理。l對(duì)于這樣的處理,可

21、以采用下面的兩種方法:對(duì)于這樣的處理,可以采用下面的兩種方法:一種方法是在各種主機(jī)的內(nèi)部設(shè)置一個(gè)表格,基于該表格一種方法是在各種主機(jī)的內(nèi)部設(shè)置一個(gè)表格,基于該表格進(jìn)行變換處理;進(jìn)行變換處理;另外一種是通過計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行查詢的處理方法。另外一種是通過計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行查詢的處理方法。域名變換為域名變換為IP地址地址l在進(jìn)行一個(gè)域名到一個(gè)在進(jìn)行一個(gè)域名到一個(gè)IP地址的變換處理的時(shí)候,可以有地址的變換處理的時(shí)候,可以有下面的兩種方法:下面的兩種方法:利用域名系統(tǒng)協(xié)議(利用域名系統(tǒng)協(xié)議(DNS)的方法)的方法 根據(jù)域名發(fā)出一個(gè)檢索根據(jù)域名發(fā)出一個(gè)檢索IP地址的請(qǐng)求;從地址的請(qǐng)求;從DNS服務(wù)器中獲服務(wù)器中

22、獲取一個(gè)取一個(gè)IP地址之后,開始實(shí)際的通信。地址之后,開始實(shí)際的通信。 使用主(使用主(hosts)文件的方法)文件的方法 hosts文件中記錄有一個(gè)文件中記錄有一個(gè)IP 地址與一個(gè)域名的對(duì)應(yīng)關(guān)系。地址與一個(gè)域名的對(duì)應(yīng)關(guān)系。 根據(jù)域名檢索根據(jù)域名檢索IP地址地址應(yīng)用層協(xié)議變換為端口號(hào)應(yīng)用層協(xié)議變換為端口號(hào)l在指定一個(gè)端口號(hào)的時(shí)候,使用的不是一個(gè)號(hào)碼,而是用在指定一個(gè)端口號(hào)的時(shí)候,使用的不是一個(gè)號(hào)碼,而是用一個(gè)一個(gè)英文字符串英文字符串來表示。來表示。例如,關(guān)鍵字遠(yuǎn)程登錄(例如,關(guān)鍵字遠(yuǎn)程登錄(telnet)所表示的端口號(hào)為)所表示的端口號(hào)為23,關(guān)鍵字超文本傳輸協(xié)議(關(guān)鍵字超文本傳輸協(xié)議(htt

23、p)所表示的端口號(hào)為)所表示的端口號(hào)為80,人,人們將這些關(guān)鍵字稱為們將這些關(guān)鍵字稱為“服務(wù)名服務(wù)名”,使用,使用services文件進(jìn)行文件進(jìn)行上述處理的定義和變換處理。上述處理的定義和變換處理。 l關(guān)于所有端口號(hào)和關(guān)鍵字的一覽表,可以從下而的關(guān)于所有端口號(hào)和關(guān)鍵字的一覽表,可以從下而的Internet快捷方式文件快捷方式文件URL中獲得:中獲得: /assignments/port-numbers根據(jù)關(guān)鍵字檢索端口號(hào)根據(jù)關(guān)鍵字檢索端口號(hào)路由時(shí)的地址變換路由時(shí)的地址變換l主機(jī)或路由器在發(fā)送一個(gè)主機(jī)或路由器在發(fā)送一個(gè)IP包的時(shí)候,必須先確定通過哪包的時(shí)候,必

24、須先確定通過哪一個(gè)路由來發(fā)送該一個(gè)路由來發(fā)送該IP包。包。l在在IP協(xié)議中,使用了一步接一步(協(xié)議中,使用了一步接一步(Hop by Hop)的路由)的路由尋址方法。尋址方法。l所謂一步(跳點(diǎn)),就是經(jīng)過一個(gè)路由器;一步接一步的所謂一步(跳點(diǎn)),就是經(jīng)過一個(gè)路由器;一步接一步的路由尋址就是每經(jīng)過一個(gè)路由器,就選擇下一個(gè)轉(zhuǎn)發(fā)地址。路由尋址就是每經(jīng)過一個(gè)路由器,就選擇下一個(gè)轉(zhuǎn)發(fā)地址。路由時(shí)的地址變換路由時(shí)的地址變換一步一步的路由尋址一步一步的路由尋址IPIP地址到地址到MACMAC地址的變換地址的變換l在確定應(yīng)該發(fā)送的一個(gè)在確定應(yīng)該發(fā)送的一個(gè)IP地址之后,必須通過數(shù)地址之后,必須通過數(shù)據(jù)鏈路來發(fā)送

25、一個(gè)包。據(jù)鏈路來發(fā)送一個(gè)包。 l當(dāng)使用當(dāng)使用Ethernet來發(fā)送一個(gè)包的時(shí)候,還必須指來發(fā)送一個(gè)包的時(shí)候,還必須指定一個(gè)主機(jī)或路由器的定一個(gè)主機(jī)或路由器的MAC地址。地址。 l在根據(jù)一個(gè)在根據(jù)一個(gè)IP地址來檢索地址來檢索MAC地址的時(shí)候,使用地址的時(shí)候,使用了了ARP協(xié)議(協(xié)議(Address Resolution Protocol,地址解析協(xié)議)和地址解析協(xié)議)和ARP表。表。 lARP協(xié)議具有本地性,即:是在同一個(gè)數(shù)據(jù)鏈路中所連接協(xié)議具有本地性,即:是在同一個(gè)數(shù)據(jù)鏈路中所連接的主機(jī)或路由器中,對(duì)于只知道一個(gè)主機(jī)的的主機(jī)或路由器中,對(duì)于只知道一個(gè)主機(jī)的IP地址而不知地址而不知道道MAC地址

26、,去檢索其地址,去檢索其MAC地址的協(xié)議。地址的協(xié)議。l為了將所檢索到的為了將所檢索到的MAC地址保存在臨時(shí)的一個(gè)存儲(chǔ)器中,地址保存在臨時(shí)的一個(gè)存儲(chǔ)器中,ARP協(xié)議使用了協(xié)議使用了ARP表。表。 l在該在該ARP表中,記錄著與一個(gè)表中,記錄著與一個(gè)IP地址相對(duì)應(yīng)的地址相對(duì)應(yīng)的MAC地址。地址。 l該該ARP表被保存在一臺(tái)主機(jī)的存儲(chǔ)器中,也稱為表被保存在一臺(tái)主機(jī)的存儲(chǔ)器中,也稱為ARP高高速緩存,通常,用戶可以根據(jù)需要修改速緩存,通常,用戶可以根據(jù)需要修改A RP表的內(nèi)容,表的內(nèi)容,可以生成、刪除和更新該表??梢陨?、刪除和更新該表。l在發(fā)送一個(gè)在發(fā)送一個(gè)IP包的時(shí)候,首先檢索該包的時(shí)候,首先檢

27、索該ARP表,以確定下一表,以確定下一個(gè)要發(fā)送的主機(jī)或路由器的個(gè)要發(fā)送的主機(jī)或路由器的MAC地址。地址。 l如果表中有該如果表中有該MAC地址,則將該地址,則將該MAC地址寫到一個(gè)報(bào)頭地址寫到一個(gè)報(bào)頭中,然后再發(fā)送該包。中,然后再發(fā)送該包。 l如果表中沒有需要的如果表中沒有需要的MAC地址,則執(zhí)行地址,則執(zhí)行ARP協(xié)議去查詢協(xié)議去查詢?cè)撛揗AC地址。地址。IP到到MAC的變換的變換HostInternetTCP/IPHost2.3.2 協(xié)議棧的內(nèi)部處理協(xié)議棧的內(nèi)部處理 因特網(wǎng)使用的協(xié)議棧因特網(wǎng)使用的協(xié)議棧各種應(yīng)用層協(xié)議各種應(yīng)用層協(xié)議(TELNET,F(xiàn)TP,SMTP等等)TCP,UDPIP與各種

28、網(wǎng)絡(luò)接口與各種網(wǎng)絡(luò)接口應(yīng)用層應(yīng)用層傳輸層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)層 網(wǎng)絡(luò)接口層網(wǎng)絡(luò)接口層ICMPARPRARP物物 理理 硬硬 件件TCP/TP 協(xié)議棧協(xié)議棧IGMP協(xié)議棧的內(nèi)部處理過程協(xié)議棧的內(nèi)部處理過程協(xié)議棧的內(nèi)部處理協(xié)議棧的內(nèi)部處理l在主機(jī)在主機(jī)A的一個(gè)應(yīng)用程序向主機(jī)的一個(gè)應(yīng)用程序向主機(jī)B的一個(gè)應(yīng)用程序發(fā)送報(bào)的一個(gè)應(yīng)用程序發(fā)送報(bào)文的時(shí)候,主機(jī)文的時(shí)候,主機(jī)A的應(yīng)用程序首先做成通信報(bào)文,然后將的應(yīng)用程序首先做成通信報(bào)文,然后將該報(bào)文向主機(jī)該報(bào)文向主機(jī)B進(jìn)行發(fā)送。進(jìn)行發(fā)送。l一個(gè)應(yīng)用程序不能直接向主機(jī)一個(gè)應(yīng)用程序不能直接向主機(jī)B的一個(gè)應(yīng)用程序發(fā)送報(bào)文,的一個(gè)應(yīng)用程序發(fā)送報(bào)文,而是交給嵌入到操作系統(tǒng)中

29、的通信協(xié)議進(jìn)行處理,即:把而是交給嵌入到操作系統(tǒng)中的通信協(xié)議進(jìn)行處理,即:把欲發(fā)送的報(bào)文傳遞給操作系統(tǒng)的傳輸層模塊,依靠它來進(jìn)欲發(fā)送的報(bào)文傳遞給操作系統(tǒng)的傳輸層模塊,依靠它來進(jìn)行實(shí)際的發(fā)送。行實(shí)際的發(fā)送。 l在傳輸層模塊中,在應(yīng)用程序運(yùn)行的兩端主機(jī)的內(nèi)部進(jìn)行在傳輸層模塊中,在應(yīng)用程序運(yùn)行的兩端主機(jī)的內(nèi)部進(jìn)行必要的處理。必要的處理。 協(xié)議棧的內(nèi)部處理協(xié)議棧的內(nèi)部處理l具體來講,應(yīng)用程序需要進(jìn)行識(shí)別端口號(hào)有關(guān)的處理,以具體來講,應(yīng)用程序需要進(jìn)行識(shí)別端口號(hào)有關(guān)的處理,以及為了防止應(yīng)用程序的報(bào)文被破壞,進(jìn)行檢驗(yàn)和的計(jì)算處及為了防止應(yīng)用程序的報(bào)文被破壞,進(jìn)行檢驗(yàn)和的計(jì)算處理等。理等。 l在使用在使用TC

30、P協(xié)議時(shí),為了提供較高的可靠性,需要進(jìn)行一協(xié)議時(shí),為了提供較高的可靠性,需要進(jìn)行一個(gè)連接的管理、一個(gè)包的順序控制、重新發(fā)送控制等,這個(gè)連接的管理、一個(gè)包的順序控制、重新發(fā)送控制等,這些連接表信息被保存在稱為傳輸控制模塊(些連接表信息被保存在稱為傳輸控制模塊(TCB:Transmission Control Black)的存儲(chǔ)區(qū)域內(nèi)。)的存儲(chǔ)區(qū)域內(nèi)。 協(xié)議棧的內(nèi)部處理協(xié)議棧的內(nèi)部處理l在每一個(gè)在每一個(gè)TCP連接上都需要準(zhǔn)備一個(gè)連接上都需要準(zhǔn)備一個(gè)TCB,它在通信狀態(tài),它在通信狀態(tài)的管理和控制中使用。的管理和控制中使用。 lTCP協(xié)議的控制所需要的信息被寫人了傳輸層的一個(gè)報(bào)頭協(xié)議的控制所需要的信息

31、被寫人了傳輸層的一個(gè)報(bào)頭中,并且將其附加到一個(gè)包上。中,并且將其附加到一個(gè)包上。 l而且,而且,“傳輸層的報(bào)頭傳輸層的報(bào)頭”+“應(yīng)用程序的報(bào)文應(yīng)用程序的報(bào)文”作為一個(gè)傳作為一個(gè)傳輸單位,傳遞給一個(gè)輸單位,傳遞給一個(gè)Internet模塊。模塊。協(xié)議棧的內(nèi)部處理協(xié)議棧的內(nèi)部處理l在在Internet模塊中,通過使用計(jì)算機(jī)網(wǎng)絡(luò),進(jìn)行向目的主模塊中,通過使用計(jì)算機(jī)網(wǎng)絡(luò),進(jìn)行向目的主機(jī)發(fā)送一個(gè)包的處理。機(jī)發(fā)送一個(gè)包的處理。 l就是根據(jù)一個(gè)就是根據(jù)一個(gè)IP地址進(jìn)行控制,將一個(gè)包發(fā)送到最終目的地址進(jìn)行控制,將一個(gè)包發(fā)送到最終目的地。地。l為了確定包的路由,我們使用了一個(gè)路由表(為了確定包的路由,我們使用了一

32、個(gè)路由表(routing table)。)。l在構(gòu)成在構(gòu)成TCP/IP計(jì)算機(jī)網(wǎng)絡(luò)的所有主機(jī)中,都具有一個(gè)路計(jì)算機(jī)網(wǎng)絡(luò)的所有主機(jī)中,都具有一個(gè)路由表。由表。 協(xié)議棧的內(nèi)部處理協(xié)議棧的內(nèi)部處理l發(fā)送到對(duì)方主機(jī)的一個(gè)包,將按照下面的順序進(jìn)行處理發(fā)送到對(duì)方主機(jī)的一個(gè)包,將按照下面的順序進(jìn)行處理:在數(shù)據(jù)鏈路模塊中,首先將所接收到的一個(gè)包的在數(shù)據(jù)鏈路模塊中,首先將所接收到的一個(gè)包的MAC地地址與自己的址與自己的MAC地址進(jìn)行比較和地址進(jìn)行比較和CRC校驗(yàn);校驗(yàn); 檢查上一層是什么協(xié)議,再傳遞給上層的模塊。檢查上一層是什么協(xié)議,再傳遞給上層的模塊。在在Internet模塊中,檢查所接收到的一個(gè)包的目的模塊中

33、,檢查所接收到的一個(gè)包的目的IP地址地址是否與自己的是否與自己的IP地址相等。地址相等。 協(xié)議棧的內(nèi)部處理協(xié)議棧的內(nèi)部處理在對(duì)一個(gè)在對(duì)一個(gè)IP包進(jìn)行分割的情況下,還需要進(jìn)行復(fù)原處理,之包進(jìn)行分割的情況下,還需要進(jìn)行復(fù)原處理,之后再將其傳遞給上一層的傳輸層模塊。后再將其傳遞給上一層的傳輸層模塊。在傳輸層模塊中,利用檢驗(yàn)和來判斷該數(shù)據(jù)是否損壞,并進(jìn)在傳輸層模塊中,利用檢驗(yàn)和來判斷該數(shù)據(jù)是否損壞,并進(jìn)行有無丟失包的檢查處理。行有無丟失包的檢查處理。如果一個(gè)包的到達(dá)順序發(fā)生變化,則需要進(jìn)行調(diào)整處理。如果一個(gè)包的到達(dá)順序發(fā)生變化,則需要進(jìn)行調(diào)整處理。另外,根據(jù)一個(gè)端口號(hào)可以確定正在進(jìn)行通信的一個(gè)應(yīng)用程另

34、外,根據(jù)一個(gè)端口號(hào)可以確定正在進(jìn)行通信的一個(gè)應(yīng)用程序,并將報(bào)文傳遞給該應(yīng)用程序。序,并將報(bào)文傳遞給該應(yīng)用程序。接收端應(yīng)用程序原封不動(dòng)地接收發(fā)送端應(yīng)用程序所發(fā)送的報(bào)接收端應(yīng)用程序原封不動(dòng)地接收發(fā)送端應(yīng)用程序所發(fā)送的報(bào)文,然后,按照接收端應(yīng)用程序的協(xié)議來進(jìn)行相應(yīng)的處理。文,然后,按照接收端應(yīng)用程序的協(xié)議來進(jìn)行相應(yīng)的處理。2.3.3 套接字套接字l在應(yīng)用程序和傳輸層模塊之間,存在著一個(gè)接口在應(yīng)用程序和傳輸層模塊之間,存在著一個(gè)接口模塊,具有代表性的接口模塊是模塊,具有代表性的接口模塊是BSD系統(tǒng)(美國(guó)系統(tǒng)(美國(guó)加州大學(xué)伯克利分校開發(fā)的一個(gè)加州大學(xué)伯克利分校開發(fā)的一個(gè)Unix版本)的一版本)的一個(gè)個(gè)套

35、接字套接字(socket)。)。 套接字套接字套接字套接字l在操作系統(tǒng)啟動(dòng)時(shí),這些程序常駐在一個(gè)存儲(chǔ)器中,通常在操作系統(tǒng)啟動(dòng)時(shí),這些程序常駐在一個(gè)存儲(chǔ)器中,通常人們將進(jìn)程管理和存儲(chǔ)器管理部分稱為人們將進(jìn)程管理和存儲(chǔ)器管理部分稱為核程序核程序(kernel)。)。l核程序在核方式或監(jiān)控方式下運(yùn)行,在該方式中,存儲(chǔ)器核程序在核方式或監(jiān)控方式下運(yùn)行,在該方式中,存儲(chǔ)器的保護(hù)功能不起作用,它可以訪問計(jì)算機(jī)的所有資源。的保護(hù)功能不起作用,它可以訪問計(jì)算機(jī)的所有資源。l如果應(yīng)用程序在存儲(chǔ)器保護(hù)方式下運(yùn)行,那么對(duì)計(jì)算機(jī)資如果應(yīng)用程序在存儲(chǔ)器保護(hù)方式下運(yùn)行,那么對(duì)計(jì)算機(jī)資源的訪問將受到一定的限制。源的訪問將受

36、到一定的限制。 l在訪問不允許訪問的存儲(chǔ)空間上的地址時(shí),則無法進(jìn)行程在訪問不允許訪問的存儲(chǔ)空間上的地址時(shí),則無法進(jìn)行程序的繼續(xù)運(yùn)行。序的繼續(xù)運(yùn)行。 套接字套接字l在存儲(chǔ)器保護(hù)方式下運(yùn)行一個(gè)應(yīng)用程序的理由如下:在存儲(chǔ)器保護(hù)方式下運(yùn)行一個(gè)應(yīng)用程序的理由如下:即使應(yīng)用程序進(jìn)行了一些非法處理,但對(duì)整個(gè)系統(tǒng)來講,即使應(yīng)用程序進(jìn)行了一些非法處理,但對(duì)整個(gè)系統(tǒng)來講,也不會(huì)具有什么影響。也不會(huì)具有什么影響。如果應(yīng)用程序進(jìn)行非法處理,則只是異常終止該應(yīng)用程序,如果應(yīng)用程序進(jìn)行非法處理,則只是異常終止該應(yīng)用程序,對(duì)于系統(tǒng)中其他的應(yīng)用程序或?qū)Σ僮飨到y(tǒng)的運(yùn)行并沒有什對(duì)于系統(tǒng)中其他的應(yīng)用程序或?qū)Σ僮飨到y(tǒng)的運(yùn)行并沒有什么

37、影響。么影響。 l如果操作系統(tǒng)本身進(jìn)行非法處理的話,則對(duì)整個(gè)系統(tǒng)有一如果操作系統(tǒng)本身進(jìn)行非法處理的話,則對(duì)整個(gè)系統(tǒng)有一定的影響,有時(shí)必須重新啟動(dòng)計(jì)算機(jī)。定的影響,有時(shí)必須重新啟動(dòng)計(jì)算機(jī)。套接字套接字l各個(gè)模塊具有存儲(chǔ)包或報(bào)文的一個(gè)緩沖區(qū),所謂各個(gè)模塊具有存儲(chǔ)包或報(bào)文的一個(gè)緩沖區(qū),所謂緩沖區(qū)緩沖區(qū),是指臨時(shí)保存數(shù)據(jù)的存儲(chǔ)器區(qū)域。是指臨時(shí)保存數(shù)據(jù)的存儲(chǔ)器區(qū)域。 l所謂所謂 隊(duì)列隊(duì)列(等待隊(duì)列),是指使用先進(jìn)先出(等待隊(duì)列),是指使用先進(jìn)先出(FIFO:First In First Out)方法來控制緩沖區(qū)的一種使用形式,)方法來控制緩沖區(qū)的一種使用形式,它是將保存在隊(duì)列中的數(shù)據(jù)按照保存的順序先后取

38、出來。它是將保存在隊(duì)列中的數(shù)據(jù)按照保存的順序先后取出來。l一個(gè)緩沖區(qū)的大小是有限的,所以,對(duì)保存的字節(jié)數(shù)或包一個(gè)緩沖區(qū)的大小是有限的,所以,對(duì)保存的字節(jié)數(shù)或包數(shù)是有一定的限制的。數(shù)是有一定的限制的。套接字套接字l當(dāng)一個(gè)緩沖區(qū)存儲(chǔ)不下數(shù)據(jù)的時(shí)候,可以使用下面的兩種當(dāng)一個(gè)緩沖區(qū)存儲(chǔ)不下數(shù)據(jù)的時(shí)候,可以使用下面的兩種方法進(jìn)行處理:方法進(jìn)行處理:一種方法是等待緩沖區(qū)變空之后再存儲(chǔ);一種方法是等待緩沖區(qū)變空之后再存儲(chǔ);另一種方法是將先前存儲(chǔ)的包刪除。另一種方法是將先前存儲(chǔ)的包刪除。l通常,都是等待緩沖區(qū)變空之后再存儲(chǔ),但是,當(dāng)所接收通常,都是等待緩沖區(qū)變空之后再存儲(chǔ),但是,當(dāng)所接收的來自于計(jì)算機(jī)網(wǎng)絡(luò)發(fā)送

39、的數(shù)據(jù)將的來自于計(jì)算機(jī)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)將NIC的接收隊(duì)列填滿的的接收隊(duì)列填滿的時(shí)候,則刪除先前存儲(chǔ)的包。時(shí)候,則刪除先前存儲(chǔ)的包。2.3.4 系統(tǒng)調(diào)用及內(nèi)部處理系統(tǒng)調(diào)用及內(nèi)部處理 系統(tǒng)調(diào)用及內(nèi)部處理系統(tǒng)調(diào)用及內(nèi)部處理 l所謂所謂系統(tǒng)調(diào)用系統(tǒng)調(diào)用,是指操作系統(tǒng)為應(yīng)用程序提供服務(wù)的接口,是指操作系統(tǒng)為應(yīng)用程序提供服務(wù)的接口,應(yīng)用程序以函數(shù)的形式來調(diào)用一個(gè)系統(tǒng)調(diào)用(在應(yīng)用程序以函數(shù)的形式來調(diào)用一個(gè)系統(tǒng)調(diào)用(在UNIX等中等中經(jīng)常使用經(jīng)常使用man命令表示用戶手冊(cè))。命令表示用戶手冊(cè))。l一個(gè)應(yīng)用程序在發(fā)送報(bào)文的時(shí)候,執(zhí)行發(fā)送(一個(gè)應(yīng)用程序在發(fā)送報(bào)文的時(shí)候,執(zhí)行發(fā)送(send)等系)等系統(tǒng)調(diào)用。統(tǒng)調(diào)用。

40、lsend是一個(gè)在發(fā)送報(bào)文時(shí)所使用的系統(tǒng)調(diào)用,然而,實(shí)際是一個(gè)在發(fā)送報(bào)文時(shí)所使用的系統(tǒng)調(diào)用,然而,實(shí)際上上send系統(tǒng)調(diào)用并不進(jìn)行發(fā)送處理。系統(tǒng)調(diào)用并不進(jìn)行發(fā)送處理。send系統(tǒng)調(diào)用僅依賴系統(tǒng)調(diào)用僅依賴操作系統(tǒng)的操作操作系統(tǒng)的操作“進(jìn)行發(fā)送處理進(jìn)行發(fā)送處理”,而實(shí)際的發(fā)送處理則,而實(shí)際的發(fā)送處理則是由操作系統(tǒng)內(nèi)部的各種模塊進(jìn)行處理。是由操作系統(tǒng)內(nèi)部的各種模塊進(jìn)行處理。 系統(tǒng)調(diào)用及內(nèi)部處理系統(tǒng)調(diào)用及內(nèi)部處理l如果一個(gè)應(yīng)用程序調(diào)用一個(gè)系統(tǒng)調(diào)用的話,操作系統(tǒng)將轉(zhuǎn)如果一個(gè)應(yīng)用程序調(diào)用一個(gè)系統(tǒng)調(diào)用的話,操作系統(tǒng)將轉(zhuǎn)移到核方式下運(yùn)行。移到核方式下運(yùn)行。 在執(zhí)行一個(gè)在執(zhí)行一個(gè)send系統(tǒng)調(diào)用的時(shí)候,則接受一

41、個(gè)套接字模系統(tǒng)調(diào)用的時(shí)候,則接受一個(gè)套接字模塊的處理。該套接字模塊首先將用戶存儲(chǔ)器中所存放的發(fā)塊的處理。該套接字模塊首先將用戶存儲(chǔ)器中所存放的發(fā)送報(bào)文拷貝到核的存儲(chǔ)器中,并且將其插入到一個(gè)套接字送報(bào)文拷貝到核的存儲(chǔ)器中,并且將其插入到一個(gè)套接字的緩沖區(qū)中。的緩沖區(qū)中。 在在TCP的緩沖區(qū)空閑的情況下,將保存在一個(gè)套接字的緩的緩沖區(qū)空閑的情況下,將保存在一個(gè)套接字的緩沖區(qū)的報(bào)文,按照順序存放到?jīng)_區(qū)的報(bào)文,按照順序存放到TCP模塊的緩沖區(qū)中,并且模塊的緩沖區(qū)中,并且任由任由TCP模塊來處理。模塊來處理。 系統(tǒng)調(diào)用及內(nèi)部處理系統(tǒng)調(diào)用及內(nèi)部處理l如果如果TCP的緩沖區(qū)也滿了,則一直等到的緩沖區(qū)也滿了,

42、則一直等到TCP的緩沖區(qū)有空的緩沖區(qū)有空閑為止。閑為止。 lTCP模塊在將該緩沖區(qū)中所存儲(chǔ)的報(bào)文傳遞給模塊在將該緩沖區(qū)中所存儲(chǔ)的報(bào)文傳遞給IP模塊的時(shí)模塊的時(shí)候,首先計(jì)算檢查和,在生成報(bào)頭、形成包的形式之后,候,首先計(jì)算檢查和,在生成報(bào)頭、形成包的形式之后,再傳輸?shù)皆賯鬏數(shù)絀P模塊的緩沖區(qū)中。模塊的緩沖區(qū)中。l在進(jìn)行路由尋址的處理之后,在進(jìn)行路由尋址的處理之后,IP模塊將該包插入到設(shè)備驅(qū)模塊將該包插入到設(shè)備驅(qū)動(dòng)程序的接口動(dòng)程序的接口IF:Interface)隊(duì)列中。)隊(duì)列中。l設(shè)備驅(qū)動(dòng)程序按照設(shè)備驅(qū)動(dòng)程序按照NIC中的發(fā)送命令,將該包發(fā)送到計(jì)算中的發(fā)送命令,將該包發(fā)送到計(jì)算機(jī)網(wǎng)絡(luò)上。機(jī)網(wǎng)絡(luò)上。

43、系統(tǒng)調(diào)用及內(nèi)部處理系統(tǒng)調(diào)用及內(nèi)部處理l在接收一個(gè)包的時(shí)候,應(yīng)用程序使用一個(gè)在接收一個(gè)包的時(shí)候,應(yīng)用程序使用一個(gè)recv系統(tǒng)調(diào)用。系統(tǒng)調(diào)用。l在執(zhí)行一個(gè)在執(zhí)行一個(gè)recv系統(tǒng)調(diào)用的時(shí)候,如果一個(gè)套接字的接收系統(tǒng)調(diào)用的時(shí)候,如果一個(gè)套接字的接收隊(duì)列中沒有接收的數(shù)據(jù),那么在接收到數(shù)據(jù)之前,則停止隊(duì)列中沒有接收的數(shù)據(jù),那么在接收到數(shù)據(jù)之前,則停止該程序的處理。該程序的處理。 l通常,人們將這種情況稱為通常,人們將這種情況稱為“阻塞阻塞(block)”。 l如果一個(gè)套接字的接收隊(duì)列中有要接收的數(shù)據(jù),則返回到如果一個(gè)套接字的接收隊(duì)列中有要接收的數(shù)據(jù),則返回到recv系統(tǒng)調(diào)用的處理中,由它進(jìn)行相應(yīng)的處理:系

44、統(tǒng)調(diào)用的處理中,由它進(jìn)行相應(yīng)的處理: 將數(shù)據(jù)從操作系統(tǒng)內(nèi)部的一個(gè)套接字隊(duì)列中,拷貝到一個(gè)將數(shù)據(jù)從操作系統(tǒng)內(nèi)部的一個(gè)套接字隊(duì)列中,拷貝到一個(gè)應(yīng)用程序的接收隊(duì)列中。應(yīng)用程序的接收隊(duì)列中。系統(tǒng)調(diào)用及內(nèi)部處理系統(tǒng)調(diào)用及內(nèi)部處理l一個(gè)應(yīng)用程序不僅僅在執(zhí)行一個(gè)應(yīng)用程序不僅僅在執(zhí)行recv系統(tǒng)調(diào)用之后才接收包,系統(tǒng)調(diào)用之后才接收包,該應(yīng)用程序在執(zhí)行一個(gè)該應(yīng)用程序在執(zhí)行一個(gè)recv系統(tǒng)調(diào)用的時(shí)候,無論操作系系統(tǒng)調(diào)用的時(shí)候,無論操作系統(tǒng)是否存在,都要進(jìn)行包的接收處理。統(tǒng)是否存在,都要進(jìn)行包的接收處理。如果有一個(gè)已經(jīng)到達(dá)的包,則將該包拷貝到應(yīng)用程序的緩如果有一個(gè)已經(jīng)到達(dá)的包,則將該包拷貝到應(yīng)用程序的緩沖區(qū)中。沖區(qū)

45、中。如果沒有到達(dá)的包,那么在接收到一個(gè)包之前,在調(diào)用如果沒有到達(dá)的包,那么在接收到一個(gè)包之前,在調(diào)用recv系統(tǒng)調(diào)用的地方,該應(yīng)用程序則停止相應(yīng)的處理。系統(tǒng)調(diào)用的地方,該應(yīng)用程序則停止相應(yīng)的處理。 系統(tǒng)調(diào)用及內(nèi)部處理系統(tǒng)調(diào)用及內(nèi)部處理l數(shù)據(jù)的接收處理數(shù)據(jù)的接收處理 :數(shù)據(jù)的接收處理由中斷來啟動(dòng),如果數(shù)據(jù)的接收處理由中斷來啟動(dòng),如果NIC接收到一個(gè)包,接收到一個(gè)包,則產(chǎn)生硬中斷,將一個(gè)包已經(jīng)到達(dá)的事實(shí)傳遞給操作系統(tǒng)。則產(chǎn)生硬中斷,將一個(gè)包已經(jīng)到達(dá)的事實(shí)傳遞給操作系統(tǒng)。在在IBM PC等兼容機(jī)中,我們將這種中斷稱為等兼容機(jī)中,我們將這種中斷稱為中斷請(qǐng)求中斷請(qǐng)求(IRQ: Interrupt Request)。)。如果發(fā)生一個(gè)中斷,則停止當(dāng)前所進(jìn)行的處理,轉(zhuǎn)去執(zhí)行如果發(fā)生一個(gè)中斷,則停止當(dāng)前所進(jìn)行的處理,轉(zhuǎn)去執(zhí)行由中斷所指

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論