freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

木馬的原理分析與處理方案畢業(yè)設(shè)計(jì)-資料下載頁(yè)

2025-05-01 23:38本頁(yè)面
  

【正文】 層次的分工和協(xié)作集中體現(xiàn)在相鄰層之間的界面上?!胺?wù)是描述相鄰層之間關(guān)系的抽象概念,即網(wǎng)絡(luò)中各層向緊鄰上層提供的一組操作。下層是服務(wù)提供者,上層是請(qǐng)求服務(wù)的用戶。服務(wù)的表現(xiàn)形式是原語(yǔ),如系統(tǒng)調(diào)用或庫(kù)函數(shù)等。系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核向網(wǎng)絡(luò)應(yīng)用程序或高層協(xié)議提供的服務(wù)原語(yǔ)。在國(guó)際標(biāo)準(zhǔn)化組織(ISO)的開放系統(tǒng)互連(OSI)的術(shù)語(yǔ)中,網(wǎng)絡(luò)層及其以下各層又稱通信子網(wǎng),只提供點(diǎn)到點(diǎn)通信,沒(méi)有程序或進(jìn)程的概念。而傳輸層實(shí)現(xiàn)的是“端到端”通信,引進(jìn)網(wǎng)間進(jìn)程通信概念,同時(shí)也要解決差錯(cuò)控制,流量控制,數(shù)據(jù)排序(報(bào)文排序),連接管理等問(wèn)題,為此提供不同的服務(wù)方式:面向連接(虛電路)的服務(wù)和無(wú)連接的服務(wù)。面向連接服務(wù)是電話系統(tǒng)服務(wù)模式的抽象,即每一次完整的數(shù)據(jù)傳輸都要經(jīng)過(guò)建立連接、使用連接、終止連接的過(guò)程。在數(shù)據(jù)傳輸過(guò)程中,各數(shù)據(jù)分組不攜帶目的地址,而使用連接號(hào)(Connect ID)。本質(zhì)上,連接是一個(gè)管道,收發(fā)數(shù)據(jù)不但順序一致,而且內(nèi)容一致。如TCP協(xié)議。無(wú)連接服務(wù)是郵政系統(tǒng)的抽象,每個(gè)分組都攜帶完整的目的地址,各分組在系統(tǒng)中獨(dú)立傳送。無(wú)連接服務(wù)不能保證分組的先后順序,不進(jìn)行分組出錯(cuò)的恢復(fù)與重傳,不保證傳輸?shù)目煽啃?。如UDP協(xié)議。(3).客戶/服務(wù)器模式在TCP/IP網(wǎng)絡(luò)應(yīng)用中,通信的兩個(gè)進(jìn)程相互作用的主要模式是客戶/服務(wù)器模式,即客戶向服務(wù)器發(fā)出服務(wù)請(qǐng)求,服務(wù)器接收到請(qǐng)求后,提供相應(yīng)的服務(wù)??蛻?服務(wù)器模式的建立基于以下兩點(diǎn):首先,建立網(wǎng)絡(luò)的起因是網(wǎng)絡(luò)中軟硬件資源、運(yùn)算能力和信息不均等,需要共享,從而造就擁有眾多資源的豐機(jī)提供服務(wù),資源較少的客戶請(qǐng)求服務(wù)這一非對(duì)等作用。其次,網(wǎng)間進(jìn)程通信完全是異步的,相互通信的進(jìn)程間既不存在父子關(guān)系,又不共享內(nèi)存緩沖區(qū),因此需要一種機(jī)制為希望通信的進(jìn)程間建立聯(lián)系,為兩者的數(shù)據(jù)交換提供同步,這就是基于客戶/服務(wù)器模式的TCP/IP協(xié)議。 Socket的類型(1).流式套接字(SOCK_STREAM)流式套接字提供了一種可靠的面向連接的數(shù)據(jù)傳輸方法,數(shù)據(jù)無(wú)差錯(cuò),無(wú)重復(fù)地發(fā)送,且按發(fā)送的順序進(jìn)行接收。(2).數(shù)據(jù)報(bào)套接字(SOCK_DGRM)數(shù)據(jù)報(bào)套接字提供了一種不可靠的、非連接的數(shù)據(jù)包(Packet)通信方式。這里的“不可靠”是指發(fā)送一個(gè)數(shù)據(jù)包不能獲得擔(dān)保,也不能保證數(shù)據(jù)包按照發(fā)送的順序到達(dá)目的地。(3).原始套接字該接口允許對(duì)較低層協(xié)議,如IP、ICMP直接訪問(wèn),常用于檢驗(yàn)新的協(xié)議實(shí)現(xiàn)或訪問(wèn)現(xiàn)有服務(wù)中配置的新設(shè)備。 Windows Socket程序設(shè)計(jì)Winsock是一種標(biāo)準(zhǔn)API(Application Programming Interface,應(yīng)用程序編程接口),主要用于網(wǎng)絡(luò)中的數(shù)據(jù)通信,它允許兩個(gè)或者多個(gè)應(yīng)用程序(或者進(jìn)程)在同一機(jī)器或者通過(guò)網(wǎng)絡(luò)相瓦通信。Winsock是一種網(wǎng)絡(luò)編程接口,不是協(xié)議。使用Winsock編程接口,應(yīng)用程序可通過(guò)普通網(wǎng)絡(luò)協(xié)議和TCP/IP(Transmission Control Protocol/Internet,傳輸控制協(xié)議/網(wǎng)際協(xié)議)或IPX(Internet Pocket Exchange,Internet數(shù)據(jù)包交換)協(xié)議建立通信。Winsock接口從在Unix平臺(tái)上實(shí)現(xiàn)的BSD Socket(套接字)中繼承了大量的特性。在Windows環(huán)境中,這種接口演變成一種真正獨(dú)立于協(xié)議的接口,特別是在WinSock2版本中表現(xiàn)得更突出。在Windows Sockets功能都是通過(guò)動(dòng)態(tài)鏈接庫(kù)DLL實(shí)現(xiàn)的。應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接收的信息實(shí)際都通過(guò)這個(gè)Socket接口來(lái)實(shí)現(xiàn)。應(yīng)用程序應(yīng)用程序Windows操作系統(tǒng)Windows SocketTCP/IP核心協(xié)議物理介質(zhì) Windows Socket的協(xié)議層次(1).啟動(dòng)與終止在所有Windows Socket函數(shù)中,只有啟動(dòng)函數(shù)WSAStartup()和終止函數(shù)WSACleanup()是必須使用的。啟動(dòng)函數(shù)必須是第一個(gè)使用的函數(shù),因?yàn)槊總€(gè)WinSock應(yīng)用都必須加載合適的WinSock DLL版本。如果調(diào)用一個(gè)WinSock函數(shù)之前沒(méi)有加載Winsock函數(shù)庫(kù),這個(gè)函數(shù)將返回SOCKE—ERROR,錯(cuò)誤信息是WSANOTINITIALISED。加載WinSock庫(kù)是通過(guò)WSAStartup函數(shù)實(shí)現(xiàn)的,這個(gè)函數(shù)定義如下:Int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData,)。其中,wVersionRequested保證SOCKETS可運(yùn)行的DLL版本,高位字節(jié)指定所需要Winsock庫(kù)的次版本,而低位字節(jié)則是主版本??赡苡煤闙AKEWORD(X,Y)來(lái)方便地得到wVersionRequested的正確值。如果不支持剛返回錯(cuò)誤信息。一般WSAStartup()的調(diào)用如下:初始化套結(jié)字動(dòng)態(tài)庫(kù)if(WSAStartup(MAKEWORD(2,2),amp。wsd)!=0){printf(WSAStartup failed!\n)。return l。}創(chuàng)建套接字sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)。if(INVALID_SOCKET==sServer){printf(socket failed!\n)。WSACleanup()。//釋放套接字資源。Return 1。}在使用Winsock接口編寫好應(yīng)用程序之后,應(yīng)該調(diào)用WSACleanup函數(shù),這個(gè)函數(shù)能夠使WinSock釋放所有由WinSock分配的資源。但是任何打開并已連接的SOCK.STREAM套接字不受影響,未發(fā)送的數(shù)據(jù)仍將被發(fā)送。程序運(yùn)行時(shí)可能會(huì)多次調(diào)用WSAStartup()函數(shù),但必須保證每次調(diào)用時(shí)的wVersionRequested的值是相同的。(2).建立SocketSocket相當(dāng)于進(jìn)行網(wǎng)絡(luò)通信兩端的插座,只要對(duì)方的Socket和自己的Socket有通信連接,雙方就可以發(fā)送和接收數(shù)據(jù)了。其定義類似于文件句柄的定義,在初始化WinSock的動(dòng)態(tài)鏈接庫(kù)后,需要在服務(wù)器端建立一個(gè)監(jiān)聽的Socket,為此可能調(diào)用Socket()函數(shù)來(lái)建立這個(gè)監(jiān)聽Socket,并定義此Socket所使用的通信協(xié)議,此函數(shù)調(diào)用成功則返回Socket對(duì)象,失敗則返回INVALID—SOCKET,調(diào)用WSAGetlastError()可得知失敗原因,所有WimSocck的API函數(shù)都可以使用這個(gè)函數(shù)來(lái)獲取失敗的原因。創(chuàng)建TCP/IP協(xié)議下的套接字如下:sServer=socket(AF_INET,sock STREAM,IPPROTO_TCP)。if(INVALID_SOCKET==sServer){ printf(socket failed!\n)。 WSACleanup()。//釋放套接字資源; Return 1。}在成功創(chuàng)建了套接之后,就可以開始在套接字上建立通信,并為收發(fā)數(shù)據(jù)做好準(zhǔn)備。在Winsock中有兩種基本的通信技術(shù):面向連接的通信和無(wú)連接的通信。 錯(cuò)誤檢查和處理要想成功編寫Winsock應(yīng)用程序,檢查和處理出錯(cuò)是非常重要的,在談到實(shí)際的編程之前,有必要先對(duì)此進(jìn)行介紹。對(duì)于WinSock函數(shù)來(lái)說(shuō),返回錯(cuò)誤是很常見的,但是在有些情況下,這些錯(cuò)誤是無(wú)關(guān)緊要的,通信仍可在那個(gè)套接字上進(jìn)行。Winsock調(diào)用失敗時(shí)最常見的返回值是SOCKETERROR,在SDK的定義中SOCDET ERROR常量值是1,如果調(diào)用Wonsock函數(shù)時(shí)出現(xiàn)錯(cuò)誤,Windows提供了一個(gè)函數(shù)來(lái)獲取最近的錯(cuò)誤碼WSAGetLastError(),一般編寫方式如下:Len=send(s,lpBuffer,len())If((1en==SOCKET_ERROR)amp。amp。(WSAGetLastError()==WSAWOULDBLOCK))對(duì)Stream Socket而言,可以接收到input buffer內(nèi)有效的資料,但其數(shù)量不超過(guò)Ien的大小。 Winsock異步傳輸Windows Sockets由兩部分組成,開發(fā)組件和運(yùn)行組件。開發(fā)組件:Windows Sockets實(shí)現(xiàn)文檔,應(yīng)用程序接口(API)引入庫(kù)和一些頭文件。 運(yùn)行組件:Windows Sockets應(yīng)用程序接口的動(dòng)態(tài)鏈接庫(kù)(WINSOCK.DLL)。(1).異步選擇機(jī)制Windows Sockets的異步選擇函數(shù)提供了消息機(jī)制的網(wǎng)絡(luò)事件選擇,當(dāng)使用它登記網(wǎng)絡(luò)事件發(fā)生時(shí),應(yīng)用程序相應(yīng)窗口函數(shù)將收到一個(gè)消息,消息中指示了發(fā)生的網(wǎng)絡(luò)事件,以及與事件相關(guān)的一些信息。異步選擇函數(shù)為WSAAsyncSelect(),用它來(lái)注冊(cè)應(yīng)用程序感興趣的網(wǎng)絡(luò)事件,當(dāng)這些事件發(fā)生時(shí),應(yīng)用程序相應(yīng)的窗口函數(shù)將收到一個(gè)消息。(2).異步請(qǐng)求函數(shù)在Berkeley Sockets中請(qǐng)求服務(wù)是阻塞的,Windows Sockets除了支持這一類函數(shù)外,還增加了相應(yīng)的異步請(qǐng)求函數(shù)(WSAAsyncGetXByYO;).(3).阻塞處理方法Windows Sockets為了實(shí)現(xiàn)當(dāng)一個(gè)應(yīng)用程序的套接字調(diào)用處于阻塞時(shí),能夠放棄CPU讓其他應(yīng)用程序運(yùn)行,它在調(diào)用處于阻塞時(shí)便進(jìn)入一個(gè)叫“HOOK的例程,此例程負(fù)責(zé)接收和分配Windows消息,使得其他應(yīng)用程序仍然能夠接收到自己的消息并取得控制權(quán)。Windows是非搶先的多任務(wù)環(huán)境,即若一個(gè)程序不主動(dòng)放棄其控制權(quán),別的程序就不能執(zhí)行。因此在設(shè)計(jì)Windows Sockets程序時(shí),盡管系統(tǒng)支持阻塞操作但還是反對(duì)程序員使用該操作。但由于SUN公司下的Berkeley Sockets的套接字默認(rèn)操作是阻塞的,Windows作為移植的Sockets也不可避免對(duì)這個(gè)操作支持。在Windows Sockets實(shí)現(xiàn)中,對(duì)于不能立即完成的阻塞操作做如下處理:DLL初始化再循環(huán)操作。在循環(huán)中,它發(fā)送任何Windows消息,并檢查這個(gè)WindowsSockets調(diào)用是否完成,在必要時(shí),它可以放棄CPU讓其他應(yīng)用程序執(zhí)行??梢哉{(diào)用WSACancelBlockingCall()函數(shù)取消此阻塞操作。在Windows Sockets中,有一個(gè)默認(rèn)的阻塞處理例程BlockingHook()簡(jiǎn)單地獲取并發(fā)送Windows消息。如果要對(duì)復(fù)雜程序進(jìn)行Windows Sockets中還有WSASetBlockingHook()提供用戶安裝自己的阻塞處理例程能力:與該函數(shù)相對(duì)應(yīng)的則是SWAUnhppkBockingHook(),它用于刪除先前安裝的任何阻塞處理例程,并重新安裝默認(rèn)的處理例程。設(shè)計(jì)自己的阻塞處理例程時(shí),除了函數(shù)WSACancelBlocl(ingHook()之外,它不能使用其他的Windows SocketsAPI函數(shù)。在處理例程中調(diào)用WSACancelBlockingHook()函數(shù)將取消處于阻塞的操作它將結(jié)束阻塞循環(huán)。 1).異步請(qǐng)求服務(wù)Windows Sockets除Berkeley Sockets中的同步請(qǐng)求外,還增加了一類異步請(qǐng)求服務(wù)函數(shù)WSAAsyncGerXByY()。該函數(shù)是阻塞請(qǐng)求函數(shù)的異步版本。應(yīng)用程序調(diào)用它時(shí),由Windows Socket DLL初始化這一操作并返回調(diào)用者,此函數(shù)返回一個(gè)異步句柄,用來(lái)標(biāo)識(shí)這個(gè)操作。把結(jié)果存儲(chǔ)在調(diào)用者提供的緩沖區(qū),并且發(fā)送一個(gè)消息到應(yīng)用程序相應(yīng)窗口。 2).異步數(shù)據(jù)傳輸使用Send()或sendto()函數(shù)來(lái)發(fā)送數(shù)據(jù),recv()或recvfrom()來(lái)接收數(shù)據(jù)。Windows Sockets不鼓勵(lì)用戶使用阻塞方式傳輸數(shù)據(jù),因?yàn)槟菢涌赡軙?huì)阻塞Windows環(huán)境。 面向連接的通信木馬程序所涉及的客戶機(jī)/服務(wù)器模式,表現(xiàn)出來(lái)的形式其實(shí)在計(jì)算機(jī)中就是一個(gè)進(jìn)程,服務(wù)器需要等待任意數(shù)量的客戶機(jī)與之際建立連接,以便為它們的請(qǐng)求提供服務(wù)。服務(wù)器必須在一個(gè)已知的名稱上進(jìn)行監(jiān)聽,在TCP/IP中,這個(gè)名稱就是本地接口的IP地址,再加上一個(gè)端口編號(hào)。每種協(xié)議都有一套不同的尋址方案所以各自的命名方法也不同,這個(gè)過(guò)程是通過(guò)bind函數(shù)調(diào)用來(lái)完成的。最后,若一臺(tái)客戶機(jī)試圖建立連接,服務(wù)器必須通過(guò)accept或WSAAccpet調(diào)用來(lái)接受連接,下面將分別討論各個(gè)函數(shù)的使用。(1).綁定端口為服務(wù)器端定義的這個(gè)監(jiān)聽的Socket指定一個(gè)地址及端口(Port),這樣客戶端才知道待會(huì)要連接哪一個(gè)地址的哪個(gè)端口,為此要調(diào)用bind()函數(shù),該函數(shù)調(diào)用成功返回0,否則返回SOCKETERROR。函數(shù)原形如下:Int pascal FAR bind(SOCKETS,CONST struct sockaddr FAR*name,int namelen)實(shí)際程序如下: SOCKET sServer。 //服務(wù)器套接字 SOCKET sClient。 //信戶端套接字 SOCKADDR_IN addrServ。 //服務(wù)器地址 char buff[BUFF_SIZE]//接收數(shù)據(jù)緩沖區(qū) int retVal。 //返回值........................................//務(wù)器套接字地址=AF_INET。=htons(4999)。=INADDR_ANY。//綁定套接字retVal=bind(sServer,(LPSOCKADDR)amp。addrServ,sizeof(SOCKADDR_IN))。if(SOCKET_ERROR==retVal){printf(bind failed!/n)。closesocket(sServer)。//關(guān)閉套接字WSACleanup0。 //解放套接字資源;Return 1。}(2).監(jiān)聽當(dāng)服務(wù)器端的Socket對(duì)象綁定完成之后,服務(wù)器端必須建立一個(gè)監(jiān)聽的隊(duì)列來(lái)接收客戶端的連接請(qǐng)求。Listen()函數(shù)使服務(wù)器端的Socket進(jìn)入監(jiān)聽狀態(tài),并設(shè)定可以建立的最大
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1