TCPIP原理及實現(xiàn)第二章_第1頁
TCPIP原理及實現(xiàn)第二章_第2頁
TCPIP原理及實現(xiàn)第二章_第3頁
TCPIP原理及實現(xiàn)第二章_第4頁
TCPIP原理及實現(xiàn)第二章_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

TCP/IP原理及實現(xiàn)

TCP/IP原理及實現(xiàn)

第二講TCP/IP軟件結(jié)構(gòu)內(nèi)容綱要

概述相關(guān)基礎(chǔ)

TCP/IP軟件結(jié)構(gòu)-Xinu

TCP/IP軟件結(jié)構(gòu)-Unix總結(jié)內(nèi)容綱要

概述相關(guān)基礎(chǔ)

TCP/IP軟件結(jié)構(gòu)-Xinu

TCP/IP軟件結(jié)構(gòu)-Unix總結(jié)TCP/IP協(xié)議軟件的設(shè)計側(cè)重以下方面:1.確定協(xié)議實體的形式(過程/進程)2.協(xié)議功能的實現(xiàn)流程3.協(xié)議實體之間的交互(調(diào)用、進程間通信)2.1概述操作系統(tǒng)的基本功能包括存儲管理、文件管理、進程管理和通信、中斷管理等。TCP/IP軟件作為系統(tǒng)軟件或組件嵌入在操作系統(tǒng)內(nèi)部,為用戶提供聯(lián)網(wǎng)的增值服務(wù)。TCP/IP軟件與操作系統(tǒng)2.1概述內(nèi)容綱要

概述

相關(guān)基礎(chǔ)

TCP/IP軟件結(jié)構(gòu)-Xinu

TCP/IP軟件結(jié)構(gòu)-Unix總結(jié)2.2相關(guān)基礎(chǔ)當發(fā)生外部事件或者程序運行異常時,CPU暫時停止當前程序的執(zhí)行轉(zhuǎn)而執(zhí)行處理新情況的程序和執(zhí)行過程。軟件中斷VS硬件中斷硬件中斷:中斷控制器軟件中斷:軟中斷指令中斷是什么?2.2相關(guān)基礎(chǔ)進程是正在執(zhí)行的程序。進程VS程序操作系統(tǒng)通過一個特定的數(shù)據(jù)結(jié)構(gòu)(PCB)來管理進程相關(guān)的信息,包括:進程狀態(tài),程序計數(shù)器,堆棧區(qū),數(shù)據(jù)段,寄存器組,所有打開的文件句柄等。進程是什么?2.2相關(guān)基礎(chǔ)intglobal=0;intmain(intarg){floatlocal;char*ptr;ptr=malloc(100);local=0;local+=10*5;…..….foo();…./*returnaddr*/….return0;}DynamicallyallocatedGlobalvariablesProgramcodeLocalvariablesReturnaddress進程的內(nèi)存映像2.2相關(guān)基礎(chǔ)進程最主要的特性是獨立性、并發(fā)性。進程的并發(fā)性要求解決

進程間互斥和通信的問題。進程特性2.2相關(guān)基礎(chǔ)進程的同步:基于系統(tǒng)功能的需要,兩個或多個進程之間需要相互合作、協(xié)同工作。進程的互斥:多個進程因爭用臨界資源而互斥執(zhí)行。臨界資源指的是一段時間內(nèi)只允許一個進程訪問的資源。進程間的同步和互斥2.2相關(guān)基礎(chǔ)共享存儲器數(shù)據(jù)結(jié)構(gòu)/存儲區(qū)消息傳遞直接VS間接管道通信共享文件常見的進程間同步和互斥的方法2.2相關(guān)基礎(chǔ)Xinu系統(tǒng)提供了三種進程間通信的機制:信號量 (semaphore)端口 (port)消息傳遞 (messagepasssing)2.2相關(guān)基礎(chǔ)信號量用于實現(xiàn)進程之間的合作和互斥。分為兩種類型:binary(二進制)和counting(計數(shù))相關(guān)系統(tǒng)調(diào)用

semid=screate(initcount);//創(chuàng)建信號量

wait(semid)//進入臨界區(qū)(CS)前調(diào)用

signal(semid)//離開臨界區(qū)(CS)前調(diào)用

信號量typedef

struct{ unsignedintcount;

list_of_processesqueue;

}semaphore;wait(s):

if(s.count≥1)then

s.count--elseblock(s)whereblock(s)placestheprocessons.queueandinvokestheprocessscheduler.signal(s):ifs.queueisnon-emptythen

wakeup(s);else

s.count++;wherewakeup(s)removesaprocessfroms.queueandplacesitintothereadylist.2.2相關(guān)基礎(chǔ)二進制信號量的實現(xiàn)2.2相關(guān)基礎(chǔ)

信號量使用的基本方法semid=screate(1); while(1){

wait(semid); CS;

signal(semid);}2.2相關(guān)基礎(chǔ)

信號量使用實例一:在一個盒子里,混裝了數(shù)量相等的黑白圍棋子。設(shè)計自動分揀系統(tǒng)把黑子、白子分開。設(shè)分揀系統(tǒng)有二個進程P1和P2,其中P1揀白子;P2揀黑子。規(guī)定每個進程每次揀一子;當一個進程在揀時,不允許另一個進程去揀;當一個進程揀了一子時,必須讓另一個進程去揀。。

2.2相關(guān)基礎(chǔ)

信號量使用實例一:偽代碼P1:

repeatwait(s1);

揀白子

signal(s2);untilfalse;

P2:

repeatwait(s2);

揀白子

signal(s1);untilfalse;

s1=screate(1);s2=screate(0);2.2相關(guān)基礎(chǔ)

信號量使用實例二:桌上有一只盤子,最多可以容納兩個水果,每次僅能放入或取出一個水果。爸爸向盤子中放蘋果(apple),媽媽向盤子中放桔子(orange),兩個兒子專等吃盤子中的桔子,兩個女兒專等吃盤子中的蘋果。

2.2相關(guān)基礎(chǔ)

信號量使用實例二:偽代碼father:

repeat

wait(s);

放蘋果

signal(s1);untilfalse;

mother:

repeat

wait(s);

放桔子

signal(s2);untilfalse;

s=screate(2);s1=screate(0);s2=screate(0);2.2相關(guān)基礎(chǔ)

信號量使用實例二:偽代碼(續(xù))daughter:

repeatwait(s1);

取蘋果

signal(s);untilfalse;

son:

repeatwait(s2);

取桔子

signal(s);untilfalse;

2.2相關(guān)基礎(chǔ)計數(shù)信號量用于實現(xiàn)多進程對隊列訪問的同步,可以解決經(jīng)典的生產(chǎn)-消費者問題。生產(chǎn)者進程向隊列中加入數(shù)據(jù);消費者進程從隊列中提取數(shù)據(jù);

在有限隊列長度的情況下,如何協(xié)調(diào)多進程的生產(chǎn)和消費過程。 計數(shù)信號量2.2相關(guān)基礎(chǔ)假設(shè)B是能夠容納N個數(shù)據(jù)的隊列;s1是跟蹤隊列還剩多少空閑位置的信號量;s2是記錄隊列B中已存在多少數(shù)據(jù)項的信號量。s1和s2的定義如下:s1=screate(N);s2=screate(0);

利用計數(shù)信號量解決生產(chǎn)-消費者問題2.2相關(guān)基礎(chǔ)Producer:wait(s1); …//向隊列添加數(shù)據(jù)signal(s2);Consumer:wait(s2); …//從隊列提取數(shù)據(jù)signal(s1);利用計數(shù)信號量解決生產(chǎn)-消費者問題(續(xù))2.2相關(guān)基礎(chǔ)端口實際封裝了利用計數(shù)信號量實現(xiàn)生產(chǎn)者和消費者進程對隊列的同步訪問的過程。Xinu系統(tǒng)定義的端口相關(guān)系統(tǒng)調(diào)用包括:1.portid=pcreate(psize);//創(chuàng)建端口,指定隊列大小2.psend(portid,message);//發(fā)送數(shù)據(jù)到指定端口3.message=preceive(portid);//從端口接收數(shù)據(jù)4.n=pcount(portid);//返回隊列中的數(shù)據(jù)數(shù)目端口機制2.2相關(guān)基礎(chǔ)消息傳遞允許進程之間直接傳送消息,實現(xiàn)進程之間的通信。Xinu系統(tǒng)定義的消息傳遞相關(guān)系統(tǒng)調(diào)用包括:1.send(msg,pid);//發(fā)送消息2.message=receive();//等待消息到來3.message=recvclr();//清除隊列并接收4.message=recvtim(50);//等待消息到來,并制定最大的等待時間消息傳遞機制內(nèi)容綱要

概述相關(guān)基礎(chǔ)

TCP/IP軟件結(jié)構(gòu)-Xinu

TCP/IP軟件結(jié)構(gòu)-Unix總結(jié)2.3TCP/IP軟件結(jié)構(gòu)-Xinu當數(shù)據(jù)(幀)到達網(wǎng)絡(luò)接口設(shè)備(NIC)時,系統(tǒng)內(nèi)部形成硬中斷,CPU根據(jù)中斷控制器提供的中斷類型號找到相應(yīng)的中斷處理程序(網(wǎng)卡驅(qū)動),啟動網(wǎng)絡(luò)接口層的協(xié)議處理過程。Xinu系統(tǒng)的網(wǎng)絡(luò)接口層軟件設(shè)計(以太網(wǎng))

1.以太數(shù)據(jù)幀的解析處理

2.與上層協(xié)議軟件的交互接收數(shù)據(jù)時的協(xié)議處理流程2.3TCP/IP軟件結(jié)構(gòu)-Xinu差錯檢測(硬件處理)殘幀檢測(硬件處理)協(xié)議解析(分用處理)

ARPRARPIP數(shù)據(jù)幀的處理2.3TCP/IP軟件結(jié)構(gòu)-XinuCPU調(diào)用網(wǎng)卡驅(qū)動將解析獲得的IP數(shù)據(jù)包置入接口隊列,并通過消息來通知IP協(xié)議軟件實體。接口隊列的設(shè)計:兩種思想

單接口隊列為每個網(wǎng)絡(luò)接口設(shè)置單獨的隊列,存放到達對應(yīng)接口的所有數(shù)據(jù)包;

多接口隊列設(shè)置一個全局隊列,存放到達所有接口的數(shù)據(jù)包,實現(xiàn)多個接口之間的共享使用。

Xinu系統(tǒng)采用單接口隊列。接口層與IP協(xié)議的交互2.3TCP/IP軟件結(jié)構(gòu)-XinuIP協(xié)議實現(xiàn)為一個獨立的進程,不斷從多個接口隊列中提取IP數(shù)據(jù)包并進行處理。IP協(xié)議軟件設(shè)計內(nèi)容:從接口隊列提取數(shù)據(jù)包的策略

空隊列情況下的處理協(xié)議解析的實現(xiàn)

與其他協(xié)議之間的交互(TCP、UDP、ICMP等)路由表的設(shè)計、路由操作接收數(shù)據(jù)時的協(xié)議處理流程-續(xù)2.3TCP/IP軟件結(jié)構(gòu)-XinuIP進程與相鄰層協(xié)議的交互IP-接口共享隊列+消息IP-UDP

過程調(diào)用IP-TCP

進程間通信(端口)2.3TCP/IP軟件結(jié)構(gòu)-XinuIP進程與相鄰層協(xié)議的交互IP-接口共享隊列+消息IP-UDP

過程調(diào)用IP-TCP

進程間通信(端口)2.3TCP/IP軟件結(jié)構(gòu)-XinuIP進程與相鄰層協(xié)議的交互IP-接口共享隊列+消息IP-UDP

過程調(diào)用IP-TCP

進程間通信(端口)2.3TCP/IP軟件結(jié)構(gòu)-Xinu由于UDP協(xié)議很簡單,僅僅提供端口復(fù)用和差錯檢測的功能,所以,UDP協(xié)議實現(xiàn)為過程直接被IP進程調(diào)用來處理到達的UDP數(shù)據(jù)包。UDP協(xié)議軟件設(shè)計內(nèi)容:協(xié)議的解析功能

與應(yīng)用層協(xié)議實體之間的交互

接收數(shù)據(jù)時的協(xié)議處理流程-續(xù)2.3TCP/IP軟件結(jié)構(gòu)-XinuTCP協(xié)議很復(fù)雜,包含許多控制功能,如差錯控制、流量控制、擁塞控制、連接管理等。Xinu系統(tǒng)中TCP協(xié)議軟件實現(xiàn)為三個獨立的進程,分別是TCP輸入進程、TCP輸出進程和定時管理進程。三個進程協(xié)同工作,完成TCP協(xié)議的功能。其中,TCP輸入進程負責TCP報文段的輸入處理過程。

接收數(shù)據(jù)時的協(xié)議處理流程-續(xù)2.3TCP/IP軟件結(jié)構(gòu)-Xinu從指定端口中提取來自IP進程的輸入TCP數(shù)據(jù)分段執(zhí)行輸入分段的報文解析任務(wù)。若接收窗口允許,接收無差錯的報文,存放到對應(yīng)的TCP輸入緩沖,等待應(yīng)用進程提取。如必要,向TCP輸出進程指示確認消息。

TCP輸入進程2.3TCP/IP軟件結(jié)構(gòu)-Xinu應(yīng)用進程通過系統(tǒng)調(diào)用訪問UDP的輸出過程,根據(jù)用戶提供數(shù)據(jù)和尋址信息封裝成UDP數(shù)據(jù)包,并通過端口交付給IP進程。應(yīng)用進程通過系統(tǒng)調(diào)用將等待發(fā)送的數(shù)據(jù)存放到對應(yīng)TCP連接的輸出緩沖中,后續(xù)的數(shù)據(jù)發(fā)送過程由TCP輸出進程來執(zhí)行。發(fā)送數(shù)據(jù)時的協(xié)議處理流程2.3TCP/IP軟件結(jié)構(gòu)-XinuTCP的數(shù)據(jù)發(fā)送由TCP輸出進程和定時管理進程協(xié)同完成。TCP輸出進程從相應(yīng)輸出緩沖中提取數(shù)據(jù),結(jié)合連接的信息封裝TCP報文分段,交付給IP進程,并創(chuàng)建定時事件。TCP定時管理進程負責對所有的定時事件進行管理,及時發(fā)現(xiàn)超時,并通知TCP輸出進程執(zhí)行重傳。TCP數(shù)據(jù)發(fā)送過程2.3TCP/IP軟件結(jié)構(gòu)-Xinu端口的作用?2.3TCP/IP軟件結(jié)構(gòu)-XinuIP軟件接收到來自上層的數(shù)據(jù)后,執(zhí)行:封裝IP分組選擇路由

交付網(wǎng)絡(luò)接口發(fā)送數(shù)據(jù)時的協(xié)議處理流程(續(xù))2.3TCP/IP軟件結(jié)構(gòu)-Xinu單接口輸出隊列每個網(wǎng)絡(luò)接口設(shè)置一個獨立輸出隊列,存放來自IP進程的等待從對應(yīng)接口輸出的數(shù)據(jù)包。接口輸出隊列滿怎么辦?2.3TCP/IP軟件結(jié)構(gòu)-Xinu網(wǎng)絡(luò)接口層執(zhí)行輸出通過以下兩種途徑:當接口硬件空閑時,IP協(xié)議軟件直接調(diào)用接口程序,執(zhí)行輸出處理;一旦本次輸出完成,接口硬件觸發(fā)輸出中斷,CPU執(zhí)行中斷處理,調(diào)用接口輸出程序,從接口輸出隊列中提取數(shù)據(jù)并發(fā)送。發(fā)送數(shù)據(jù)時的協(xié)議處理流程(續(xù))2.3TCP/IP軟件結(jié)構(gòu)-Xinu協(xié)議實體形式:

進程+過程(包括中斷服務(wù)例程)協(xié)議間的交互:

進程間通信(消息傳遞+端口+信號量)過程調(diào)用Xinu系統(tǒng)TCP/IP軟件設(shè)計思想總結(jié)內(nèi)容綱要

概述相關(guān)基礎(chǔ)

TCP/IP軟件結(jié)構(gòu)-Xinu

TCP/IP軟件結(jié)構(gòu)-Unix總結(jié)2.4TCP/IP軟件結(jié)

溫馨提示

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

評論

0/150

提交評論