什么層是實現(xiàn)進程到進程之間的通信
什么層是實現(xiàn)進程到進程之間的通信
進程間通信機制1 文件映射文件映射(Memory-Mapped Files)能使進程把文件內容當作進程地址區(qū)間一塊內存那樣來對待。因此,進程不必使用文件I/O操作,只需簡單的指針操作就可讀取和修改文件的內容。
Win32 API允許多個進程訪問同一文件映射對象,各個進程在它自己的地址空間里接收內存的指針。
通過使用這些指針,不同進程就可以讀或修改文件的內容,實現(xiàn)了對文件中數(shù)據(jù)的共享。應用程序有三種方法來使多個進程共享一個文件映射對象。(1)繼承:**個進程建立文件映射對象,它的子進程繼承該對象的句柄。(2)命名文件映射:**個進程在建立文件映射對象時可以給該對象指定一個名字(可與文件名不同)。
第二個進程可通過這個名字打開此文件映射對象。另外,**個進程也可以通過一些其它IPC機制(有名管道、郵件槽等)把名字傳給第二個進程。(3)句柄**:**個進程建立文件映射對象,然后通過其它IPC機制(有名管道、郵件槽等)把對象句柄傳遞給第二個進程。
第二個進程**該句柄就取得對該文件映射對象的訪問權限。文件映射是在多個進程間共享數(shù)據(jù)的非常有效方法,有較好的安全性。但文件映射只能用于本地機器的進程之間,不能用于**中,而開發(fā)者還必須控制進程間的同步。
2 共享內存Win32 API**享內存(Shared Memory)實際就是文件映射的一種特殊情況。進程在創(chuàng)建文件映射對象時用0xFFFFFFFF來代替文件句柄(HANDLE),就表示了對應的文件映射對象是從操作系統(tǒng)頁面文件訪問內存,其它進程打開該文件映射對象就可以訪問該內存塊。由于共享內存是用文件映射實現(xiàn)的,所以它也有較好的安全性,也只能運行于同一計算機上的進程之間。
注意點: 要控制同步,而且CString、list、arry、map等的collect class都不能安全的使用于共享內存中 不要把擁有虛函數(shù)之C++類放到共享內存中 不要把CObject派生類之MFC對象放到共享內存中 不要使用\”point within the shared memory\”的指針 不要使用\”point outside of the shared memory\”的指針 使用\”based\”指針是安全的,但要小心使用3 匿名管道管道(Pipe)是一種具有兩個端點的通信通道:有一端句柄的進程可以和有另一端句柄的進程通信。管道可以是單向-一端是只讀的,另一端點是只寫的;也可以是雙向的一管道的兩端點既可讀也可寫。匿名管道(Anonymous Pipe)是 在父進程和子進程之間,或同一父進程的兩個子進程之間傳輸數(shù)據(jù)的無名字的單向管道。通常由父進程創(chuàng)建管道,然后由要通信的子進程繼承通道的讀端點句柄或寫 端點句柄,然后實現(xiàn)通信。
父進程還可以建立兩個或更多個繼承匿名管道讀和寫句柄的子進程。這些子進程可以使用管道直接通信,不需要通過父進程。匿名管道是單機上實現(xiàn)子進程標準I/O重定向的有效方法,它不能在網(wǎng)上使用,也不能用于兩個不相關的進程之間。4 命名管道命名管道(Named Pipe)是服務器進程和一個或多個客戶進程之間通信的單向或雙向管道。
不同于匿名管道的是命名管道可以在不相關的進程之間和不同計算機之間使用,服務器建立命名管道時給它指定一個名字,任何進程都可以通過該名字打開管道的另一端,根據(jù)給定的權限和服務器進程通信。命名管道提供了相對簡單的編程接口,使通過**傳輸數(shù)據(jù)并不比同一計算機上兩進程之間通信更困難,不過如果要同時和多個進程通信它就力不從心了。5 郵件槽郵件槽(Mailslots)提 供進程間單向通信能力,任何進程都能建立郵件槽成為郵件槽服務器。其它進程,稱為郵件槽客戶,可以通過郵件槽的名字給郵件槽服務器進程發(fā)送消息。
進來的消 息一直放在郵件槽中,直到服務器進程讀取它為止。一個進程既可以是郵件槽服務器也可以是郵件槽客戶,因此可建立多個郵件槽實現(xiàn)進程間的雙向通信。通過郵件槽可以給本地計算機上的郵件槽、其它計算機上的郵件槽或指定**區(qū)域中所有計算機上有同樣名字的郵件槽發(fā)送消息。
廣播通信的消息長度不能超過400字節(jié),非廣播消息的長度則受郵件槽服務器指定的**消息長度的限制。郵件槽與命名管道相似,不過它傳輸數(shù)據(jù)是通過不可靠的數(shù)據(jù)報(如TCP/IP協(xié)議中的UDP包)完成的,一旦**發(fā)生錯誤則無法保證消息正確地接收,而命名管道傳輸數(shù)據(jù)則是建立在可靠連接基礎上的。不過郵件槽有簡化的編程接口和給指定**區(qū)域內的所有計算機廣播消息的能力,所以郵件槽不失為應用程序發(fā)送和接收消息的另一種選擇。
6 剪貼板剪貼板(Clipped Board)實質是Win32 API中一組用來傳輸數(shù)據(jù)的函數(shù)和消息,為Windows應用程序之間進行數(shù)據(jù)共享提供了一個中介,Windows已建立的剪切(**)-粘貼的機制為不同應用程序之間共享不同格式數(shù)據(jù)提供了一條捷徑。當用戶在應用程序中執(zhí)行剪切或**操作時,應用程序把選取的數(shù)據(jù)用一種或多種格式放在剪貼板上。然后任何其它應用程序都可以從剪貼板上拾取數(shù)據(jù),從給定格式中選擇適合自己的格式。剪貼板是一個非常松散的交換媒介,可以支持任何數(shù)據(jù)格式,每一格式由一無符號整數(shù)標識,對標準(預定義)剪貼板格式,該值是Win32 API定義的常量;對非標準格式可以使用Register Clipboard Format函數(shù)注冊為新的剪貼板格式。
利用剪貼板進行交換的數(shù)據(jù)只需在數(shù)據(jù)格式上一致或都可以轉化為某種格式就行。但剪貼板只能在基于Windows的程序中使用,不能在**上使用。7 動態(tài)數(shù)據(jù)交換動態(tài)數(shù)據(jù)交換(DDE)是使用共享內存在應用程序之間進行數(shù)據(jù)交換的一種進程間通信形式。
應用程序可以使用DDE進行一次性數(shù)據(jù)傳輸,也可以當出現(xiàn)新數(shù)據(jù)時,通過發(fā)送更新值在應用程序間動態(tài)交換數(shù)據(jù)。DDE和剪貼板一樣既支持標準數(shù)據(jù)格式(如文本、位圖等),又可以支持自己定義的數(shù)據(jù)格式。但它們的數(shù)據(jù)傳輸機制卻不同,一個明顯區(qū)別是剪貼板操作幾乎總是用作對用戶指定操作的一次性應答-如從菜單中選擇Paste命令。盡管DDE也可以由用戶啟動,但它繼續(xù)發(fā)揮作用一般不必用戶進一步干預。
DDE有三種數(shù)據(jù)交換方式:(1) 冷鏈:數(shù)據(jù)交換是一次性數(shù)據(jù)傳輸,與剪貼板相同。(2) 溫鏈:當數(shù)據(jù)交換時服務器通知客戶,然后客戶必須請求新的數(shù)據(jù)。(3) 熱鏈:當數(shù)據(jù)交換時服務器自動給客戶發(fā)送數(shù)據(jù)。
DDE交換可以發(fā)生在單機或**中不同計算機的應用程序之間。開發(fā)者還可以定義定制的DDE數(shù)據(jù)格式進行應用程序之間特別。
OSI參考模型有哪七層
1、物理層(Physical Layer):主要功能為定義**的物理結構,傳輸?shù)碾姶艠藴剩珺it流的編碼及**的時間原則,如分時復用及分頻復用。
決定了**連接類型(端到端或多端連接)及物理拓撲結構。
說得通俗一些,這一層主要負責實際的信號傳輸。
物理層的主要設備:中繼器、集線器。
2、數(shù)據(jù)鏈路層(Data Link Review):在兩個主機上建立數(shù)據(jù)鏈路連接,向物理層傳輸數(shù)據(jù)信號,并對信號進行處理使之無差錯并合理的傳輸。數(shù)據(jù)鏈路層主要設備:二層交換機、網(wǎng)橋。
3、**層(Network Layer):主要負責路由,選擇合適的路徑,進行阻塞控制等功能。
**層協(xié)議的代表包括:IP、IPX、OSPF等。**層主要設備:路由器。
4、傳輸層(Transfer Layer):最關鍵的一層,向擁護提供可靠的端到端(End-to-End)服務,它屏蔽了下層的數(shù)據(jù)通信細節(jié),讓用戶及應用程序不需要考慮實際的通信方法。
傳輸層協(xié)議的代表包括:TCP、UDP、SPX等。
5、會話層(Session Layer):主要負責兩個會話進程之間的通信,即兩個會話層實體之間的信息交換,管理數(shù)據(jù)的交換。
6、表示層(Presentation Layer):處理通信信號的表示方法,進行不同的格式之間的翻譯,并負責數(shù)據(jù)的加密解密,數(shù)據(jù)的壓縮與恢復。
7、應用層(Application Layer):保持應用程序之間建立連接所需要的數(shù)據(jù)記錄,為用戶服務。應用層協(xié)議的代表包括:Telnet、FTP、HTTP、SNMP等。
擴展資料:
OSI模型的作用
1、人們可以很容易的討論和學習協(xié)議的規(guī)范細節(jié)。
2、層間的標準接口方便了工程模塊化。
3、創(chuàng)建了一個更好的互連環(huán)境。
4、降低了復雜度,使程序更容易修改,產品開發(fā)的速度更快。
5、每層利用緊鄰的下層服務,更容易記住個層的功能。
6、OSI是一個定義良好的協(xié)議規(guī)范集,并有許多可選部分完成類似的任務。
7、它定義了開放系統(tǒng)的層次結構、層次之間的相互關系以及各層所包括的可能的任務。是作為一個框架來協(xié)調和組織各層所提供的服務。
OSI參考模型并沒有提供一個可以實現(xiàn)的方法,而是描述了一些概念,用來協(xié)調進程間通信標準的制定。
即OSI參考模型并不是一個標準,而是一個在制定標準時所使用的概念性框架。
簡述具有五層協(xié)議的**體系結構中各層的主要功能。
物理層:以太網(wǎng)?·?調制解調器?· 電力線通信(PLC) ·?SONET/SDH?· G.709 ·?光導纖維?· 同軸電纜 · 雙絞線等
物理層(或稱物理層,Physical Layer)是計算機**OSI模型中**的一層。物理層規(guī)定:為傳輸數(shù)據(jù)所需要的物理鏈路創(chuàng)建、維持、拆除,而提供具有機械的,電子的,功能的和規(guī)范的特性。
簡單的說,物理層確保原始的數(shù)據(jù)可在各種物理媒體上傳輸。
局域網(wǎng)與廣域網(wǎng)皆屬第1、2層。
物理層是OSI的**層,它雖然處于**層,卻是整個開放系統(tǒng)的基礎。物理層為設備之間的數(shù)據(jù)通信提供傳輸媒體及互連設備,為數(shù)據(jù)傳輸提供可靠的環(huán)境。如果您想要用盡量少的詞來記住這個**層,那就是“信號和介質”。
OSI采納了各種現(xiàn)成的協(xié)議,其中有RS-232、RS-449、X.21、V.35、ISDN、以及FDDI、IEEE802.3、IEEE802.4、和IEEE802.5的物理層協(xié)議。
數(shù)據(jù)鏈路層:Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM ·?令牌環(huán)?·?以太網(wǎng)?·FDDI ·?幀中繼?· GPRS · EVDO ·HSPA · HDLC ·?PPP?· L2TP ·PPTP · ISDN·STP 等
數(shù)據(jù)鏈路層是OSI參考模型中的第二層,介乎于物理層和**層之間。數(shù)據(jù)鏈路層在物理層提供的服務的基礎上向**層提供服務,其最基本的服務是將源自**層來的數(shù)據(jù)可靠地傳輸?shù)较噜徆?jié)點的目標機**層。
為達到這一目的,數(shù)據(jù)鏈路必須具備一系列相應的功能,主要有:如何將數(shù)據(jù)組合成數(shù)據(jù)塊,在數(shù)據(jù)鏈路層中稱這種數(shù)據(jù)塊為幀(frame),幀是數(shù)據(jù)鏈路層的傳送單位;如何控制幀在物理信道上的傳輸,包括如何處理傳輸差錯,如何調節(jié)發(fā)送速率以使與接收方相匹配;以及在兩個**實體之間提供數(shù)據(jù)鏈路通路的建立、維持和釋放的管理。
移動通信系統(tǒng)中Uu口協(xié)議的第二層,也叫層二或L2。
**層協(xié)議:IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · IPsec · ARP · RARP等
**層是OSI參考模型中的第三層,介于傳輸層和數(shù)據(jù)鏈路層之間,它在數(shù)據(jù)鏈路層提供的兩個相鄰端點之間的數(shù)據(jù)幀的傳送功能上,進一步管理**中的數(shù)據(jù)通信,將數(shù)據(jù)設法從源端經(jīng)過若干個中間節(jié)點傳送到目的端,從而向運輸層提供最基本的端到端的數(shù)據(jù)傳送服務。
主要內容有:虛電路分組交換和數(shù)據(jù)報分組交換、路由選擇算法、阻塞控制方法、X.25協(xié)議、綜合業(yè)務數(shù)據(jù)網(wǎng)(ISDN)、異步傳輸模式(ATM)及網(wǎng)際互連原理與實現(xiàn)。
傳輸層協(xié)議:TCP · UDP · TLS ·?DCCP?· SCTP · RSVP · OSPF 等
傳輸層(Transport Layer)是ISO OSI協(xié)議的第四層協(xié)議,實現(xiàn)端到端的數(shù)據(jù)傳輸。該層是兩臺計算機經(jīng)過**進行數(shù)據(jù)通信時,**個端到端的層次,具有緩沖作用。
當**層服務質量不能滿足要求時,它將服務加以提高,以滿足高層的要求;當**層服務質量較好時,它只用很少的工作。傳輸層還可進行復用,即在一個**連接上創(chuàng)建多個邏輯連接。
傳輸層在終端用戶之間提供透明的數(shù)據(jù)傳輸,向上層提供可靠的數(shù)據(jù)傳輸服務。傳輸層在給定的鏈路上通過流量控、分段/重組和差錯控制。
一些協(xié)議是面向鏈接的。這就意味著傳輸層能保持對分段的跟蹤,并且重傳那些失敗的分段。
應用層協(xié)議:DHCP ·DNS?· FTP · Gopher · HTTP· IMAP4 · IRC · NNTP · XMPP ·POP3 · SIP · SMTP ·SNMP · SSH ·TELNET · RPC · RTCP · RTP ·RTSP· SDP · SOAP · GTP · STUN · NTP· SSDP · BGP · RIP 等
應用層位于物聯(lián)網(wǎng)三層結構中的最頂層,其功能為“處理”,即通過云計算平臺進行信息處理。應用層與**端的感知層一起,是物聯(lián)網(wǎng)的顯著特征和核心所在,應用層可以對感知層采集數(shù)據(jù)進行計算、處理和知識挖掘,從而實現(xiàn)對物理世界的實時控制、**管理和科學決策。
物聯(lián)網(wǎng)應用層的核心功能圍繞兩個方面:
一是“數(shù)據(jù)”,應用層需要完成數(shù)據(jù)的管理和數(shù)據(jù)的處理;
二是“應用”,僅僅管理和處理數(shù)據(jù)還遠遠不夠,必須將這些數(shù)據(jù)與各行業(yè)應用相結合。例如在智能電網(wǎng)中的遠程電力抄表應用:安置于用戶家中的讀表器就是感知層中的傳感器,這些傳感器在收集到用戶用電的信息后,通過**發(fā)送并匯總到發(fā)電廠的處理器上。該處理器及其對應工作就屬于應用層,它將完成對用戶用電信息的分析,并自動采取相關措施。
擴展資料
TCP/IP協(xié)議毫無疑問是這三大協(xié)議中最重要的一個,作為互聯(lián)網(wǎng)的基礎協(xié)議,沒有它就根本不可能上網(wǎng),任何和互聯(lián)網(wǎng)有關的操作都離不開TCP/IP協(xié)議。
不過TCP/IP協(xié)議也是這三大協(xié)議中配置起來最麻煩的一個,單機上網(wǎng)還好,而通過局域網(wǎng)訪問互聯(lián)網(wǎng)的話,就要詳細設置IP地址,**,子網(wǎng)掩碼,DNS服務器等參數(shù)。
TCP/IP盡管是目前***的**協(xié)議,但TCP/IP協(xié)議在局域網(wǎng)中的通信效率并不高,使用它在瀏覽“網(wǎng)上鄰居”中的計算機時,經(jīng)常會出現(xiàn)不能正常瀏覽的現(xiàn)象。此時安裝NetBEUI協(xié)議就會解決這個問題。
NetBEUI即NetBios Enhanced User Interface ,或NetBios增強用戶接口。它是NetBIOS協(xié)議的增強版本,曾被許多操作系統(tǒng)采用,例如Windows for Workgroup、Win 9x系列、Windows NT等。NETBEUI協(xié)議在許多情形下很有用百科,是WINDOWS98之前的操作系統(tǒng)的缺省協(xié)議。
NetBEUI協(xié)議是一種短小精悍、通信效率高的廣播型協(xié)議,安裝后不需要進行設置,特別適合于在“**鄰居”傳送數(shù)據(jù)。所以建議除了TCP/IP協(xié)議之外,小型局域網(wǎng)的計算機也可以安上NetBEUI協(xié)議。另外還有一點要注意,如果一臺只裝了TCP/IP協(xié)議的WINDOWS98機器要想加入到WINNT域,也必須安裝NetBEUI協(xié)議。
IPX/SPX協(xié)議本來就是Novell開發(fā)的專用于NetWare**中的協(xié)議,但是也非常常用–大部分可以聯(lián)機的游戲都支持IPX/SPX協(xié)議,比如星際爭霸,反恐精英等等。
雖然這些游戲通過TCP/IP協(xié)議也能聯(lián)機,但顯然還是通過IPX/SPX協(xié)議更省事,因為根本不需要任何設置。除此之外,IPX/SPX協(xié)議在非局域**中的用途似乎并不是很大.如果確定不在局域網(wǎng)中聯(lián)機玩游戲,那么這個協(xié)議可有可無。