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

下載本文檔

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

文檔簡(jiǎn)介

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

TCP/IP原理及實(shí)現(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è)計(jì)側(cè)重以下方面:1.確定協(xié)議實(shí)體的形式(過(guò)程/進(jìn)程)2.協(xié)議功能的實(shí)現(xiàn)流程3.協(xié)議實(shí)體之間的交互(調(diào)用、進(jìn)程間通信)2.1概述操作系統(tǒng)的基本功能包括存儲(chǔ)管理、文件管理、進(jìn)程管理和通信、中斷管理等。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ǔ)當(dāng)發(fā)生外部事件或者程序運(yùn)行異常時(shí),CPU暫時(shí)停止當(dāng)前程序的執(zhí)行轉(zhuǎn)而執(zhí)行處理新情況的程序和執(zhí)行過(guò)程。軟件中斷VS硬件中斷硬件中斷:中斷控制器軟件中斷:軟中斷指令中斷是什么?2.2相關(guān)基礎(chǔ)進(jìn)程是正在執(zhí)行的程序。進(jìn)程VS程序操作系統(tǒng)通過(guò)一個(gè)特定的數(shù)據(jù)結(jié)構(gòu)(PCB)來(lái)管理進(jìn)程相關(guān)的信息,包括:進(jìn)程狀態(tài),程序計(jì)數(shù)器,堆棧區(qū),數(shù)據(jù)段,寄存器組,所有打開(kāi)的文件句柄等。進(jìn)程是什么?2.2相關(guān)基礎(chǔ)intglobal=0;intmain(intarg){floatlocal;char*ptr;ptr=malloc(100);local=0;local+=10*5;…..….foo();…./*returnaddr*/….return0;}DynamicallyallocatedGlobalvariablesProgramcodeLocalvariablesReturnaddress進(jìn)程的內(nèi)存映像2.2相關(guān)基礎(chǔ)進(jìn)程最主要的特性是獨(dú)立性、并發(fā)性。進(jìn)程的并發(fā)性要求解決

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

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

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

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

信號(hà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ǔ)二進(jìn)制信號(hào)量的實(shí)現(xiàn)2.2相關(guān)基礎(chǔ)

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

wait(semid); CS;

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

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

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

信號(hào)量使用實(shí)例一:偽代碼P1:

repeatwait(s1);

揀白子

signal(s2);untilfalse;

P2:

repeatwait(s2);

揀白子

signal(s1);untilfalse;

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

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

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

信號(hào)量使用實(shí)例二:偽代碼father:

repeat

wait(s);

放蘋(píng)果

signal(s1);untilfalse;

mother:

repeat

wait(s);

放桔子

signal(s2);untilfalse;

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

信號(hào)量使用實(shí)例二:偽代碼(續(xù))daughter:

repeatwait(s1);

取蘋(píng)果

signal(s);untilfalse;

son:

repeatwait(s2);

取桔子

signal(s);untilfalse;

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

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

利用計(jì)數(shù)信號(hào)量解決生產(chǎn)-消費(fèi)者問(wèn)題2.2相關(guān)基礎(chǔ)Producer:wait(s1); …//向隊(duì)列添加數(shù)據(jù)signal(s2);Consumer:wait(s2); …//從隊(duì)列提取數(shù)據(jù)signal(s1);利用計(jì)數(shù)信號(hào)量解決生產(chǎn)-消費(fèi)者問(wèn)題(續(xù))2.2相關(guān)基礎(chǔ)端口實(shí)際封裝了利用計(jì)數(shù)信號(hào)量實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者進(jìn)程對(duì)隊(duì)列的同步訪問(wèn)的過(guò)程。Xinu系統(tǒng)定義的端口相關(guān)系統(tǒng)調(diào)用包括:1.portid=pcreate(psize);//創(chuàng)建端口,指定隊(duì)列大小2.psend(portid,message);//發(fā)送數(shù)據(jù)到指定端口3.message=preceive(portid);//從端口接收數(shù)據(jù)4.n=pcount(portid);//返回隊(duì)列中的數(shù)據(jù)數(shù)目端口機(jī)制2.2相關(guān)基礎(chǔ)消息傳遞允許進(jìn)程之間直接傳送消息,實(shí)現(xiàn)進(jìn)程之間的通信。Xinu系統(tǒng)定義的消息傳遞相關(guān)系統(tǒng)調(diào)用包括:1.send(msg,pid);//發(fā)送消息2.message=receive();//等待消息到來(lái)3.message=recvclr();//清除隊(duì)列并接收4.message=recvtim(50);//等待消息到來(lái),并制定最大的等待時(shí)間消息傳遞機(jī)制內(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當(dāng)數(shù)據(jù)(幀)到達(dá)網(wǎng)絡(luò)接口設(shè)備(NIC)時(shí),系統(tǒng)內(nèi)部形成硬中斷,CPU根據(jù)中斷控制器提供的中斷類型號(hào)找到相應(yīng)的中斷處理程序(網(wǎng)卡驅(qū)動(dòng)),啟動(dòng)網(wǎng)絡(luò)接口層的協(xié)議處理過(guò)程。Xinu系統(tǒng)的網(wǎng)絡(luò)接口層軟件設(shè)計(jì)(以太網(wǎng))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論