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

正文內(nèi)容

基于socket的網(wǎng)絡編程技術(shù)及其實現(xiàn)學士學位論文-文庫吧

2025-06-03 16:56 本頁面


【正文】 、HTTP(超文本傳輸協(xié)議)、Telent(遠程終端協(xié)議)、SMTP(簡單郵件傳送協(xié)議)、IRC(因特網(wǎng)中繼會話)、NNTP(網(wǎng)絡新聞傳輸協(xié)議)等。 TCP/IP四層模型 Socket編程基本原理套接字介紹套接字(Socket)起初來源于UNIX,是加利福尼亞大學Berkeley 分校開發(fā)的UNIX 操作系統(tǒng)下的網(wǎng)絡通信接口。當TCP/IP協(xié)議被集成到UNIX內(nèi)核中時,相當于在UNIX系統(tǒng)引入了一種新型的I/O操作,UNIX用戶進程與網(wǎng)絡協(xié)議的交互作用比用戶進程與傳統(tǒng)的I/O設備相互作用復雜得多,因此引入了套接字作為通信端口,隨著UNIX 操作系統(tǒng)的廣泛使用,Socket 亦當之無愧的成為了最流行的網(wǎng)絡通信程序接口之一。套接字存在于其特定的通信域(即地址族)中,通信域是為了處理一般的線程通過套接字通信而引進的一種抽象概念,只有隸屬于同一地址族的套接字才能建立對話(數(shù)據(jù)交換也可能穿越域的界限,但這時一定要執(zhí)行某種解釋程序),Windows Sockets 目前只支持網(wǎng)際域(AF_INET),所有使用網(wǎng)際協(xié)議簇的進程均適用于該域。一般情況下除非通信協(xié)議支持,只有相同類型的套接字方能相互傳遞數(shù)據(jù),Windows Sockets 版主要支持兩種類型的套接字:流式套接字和數(shù)據(jù)報套接字,還有一種是原始套接字,但為保證網(wǎng)絡應用程序的兼容性,一般不鼓勵使用原始套接字。流式套接字(SOCK_STREAM):該類套接字提供了面向連接的、可靠的、數(shù)據(jù)無錯并且無重復的數(shù)據(jù)發(fā)送服務。而且發(fā)送的數(shù)據(jù)是按順序接收的。所有利用該套接字進行傳遞的數(shù)據(jù)均被視為連續(xù)的字節(jié)流的并且無長度限制。這對數(shù)據(jù)的穩(wěn)定性、正確性和發(fā)送/接收順序要求嚴格的應用十分適用,TCP協(xié)議使用該類接口。但其對線路的占用率相對提高。流式套接字的實現(xiàn)屢見不鮮,如遠程登錄(TELNET)、文件傳輸協(xié)議(FTP)等均使用了流式套接字。數(shù)據(jù)報式套接字(SOCK_DGRAM):數(shù)據(jù)報式套接字提供了面向無連接的服務 , 它獨立的數(shù)據(jù)包形式發(fā)送數(shù)據(jù)( 數(shù)據(jù)包長度不能大于32KB),不提供正確性檢查,也不保證各數(shù)據(jù)包的發(fā)送順序,因此,可能出現(xiàn)數(shù)據(jù)的重發(fā)、丟失等現(xiàn)象,并且接收順序由具體路由決定。然而,數(shù)據(jù)報的實現(xiàn)對網(wǎng)絡線路占用率較低。NFS(網(wǎng)絡文件系統(tǒng))即是采用此類套接字、在TCP/IP 協(xié)議族中,UDP使用該類接口。原始套接字(SOCK_RAW):該套接字一般不會出現(xiàn)在高級網(wǎng)絡接口的實現(xiàn)中,因為它是直接針對協(xié)議的較低層( 如IP、TCP、UDP 等)直接訪問的。常用于檢驗新的協(xié)議實現(xiàn)或訪問現(xiàn)有服務中配置的新設備,如前所述,一般不提倡他的直接應用。套接字編程基本概念進程通信的概念最初來源于單機系統(tǒng)。由于每個進程都在自己的地址范圍內(nèi)運行,為保證兩個相互通信的進程之間既互不干擾又協(xié)調(diào)一致工作,操作系統(tǒng)為進程通信提供了相應設施,如UNIX BSD中的管道(pipe)、命名管道(named pipe)和軟中斷信號(signal),UNIX system V的消息(message)、共享存儲區(qū)(shared memory)和信號量(semaphore)等,但都僅限于用在本機進程之間通信。網(wǎng)間進程通信要解決的是不同主機進程間的相互通信問題(可把同機進程通信看作是其中的特例)。為此,首先要解決的是網(wǎng)間進程標識問題。同一主機上,不同進程可用進程號(process ID)唯一標識。但在網(wǎng)絡環(huán)境下,各主機獨立分配的進程號不能唯一標識該進程。例如,主機A賦于某進程號5,在B機中也可以存在5號進程,因此,“5號進程”這句話就沒有意義了。其次,操作系統(tǒng)支持的網(wǎng)絡協(xié)議眾多,不同協(xié)議的工作方式不同,地址格式也不同。因此,網(wǎng)間進程通信還要解決多重協(xié)議的識別問題。為了解決上述問題,TCP/IP協(xié)議引出了幾個概念。(1)端口網(wǎng)絡中可以被命名和尋址的通信端口,是操作系統(tǒng)可分配的一種資源。 按照OSI七層協(xié)議的描述,傳輸層與網(wǎng)絡層在功能上的最大區(qū)別是傳輸層提供進程通信能力。從這個意義上講,網(wǎng)絡通信的最終地址就不僅僅是主機地址了,還包括可以描述進程的某種標識符。為此,TCP/IP協(xié)議提出了協(xié)議端口(protocol port,簡稱端口)的概念,用于標識通信的進程。端口是一種抽象的軟件結(jié)構(gòu)(包括一些數(shù)據(jù)結(jié)構(gòu)和I/O緩沖區(qū))。應用程序(即進程)通過系統(tǒng)調(diào)用與某端口建立連接(binding)后,傳輸層傳給該端口的數(shù)據(jù)都被相應進程所接收,相應進程發(fā)給傳輸層的數(shù)據(jù)都通過該端口輸出。在TCP/IP協(xié)議的實現(xiàn)中,端口的操作類似于一般的I/O操作,進程獲取一個端口,相當于獲取本地唯一的I/O文件,可以用一般的讀寫原語訪問。 類似于文件描述符,每個端口都擁有一個叫端口號(port number)的整數(shù)型標識符,用于區(qū)別不同端口。由于TCP/IP傳輸層的兩個協(xié)議TCP和UDP是完全獨立的兩個軟件模塊,因此各自的端口號也相互獨立,如TCP有一個255號端口,UDP也可以有一個255號端口,二者并不沖突。 端口號的分配是一個重要問題。有兩種基本分配方式:第一種叫全局分配,這是一種集中控制方式,由一個公認的中央機構(gòu)根據(jù)用戶需要進行統(tǒng)一分配,并將結(jié)果公布于眾。第二種是本地分配,又稱動態(tài)連接,即進程需要訪問傳輸層服務時,向本地操作系統(tǒng)提出申請,操作系統(tǒng)返回一個本地唯一的端口號,進程再通過合適的系統(tǒng)調(diào)用將自己與該端口號聯(lián)系起來(綁扎)。TCP/IP端口號的分配中綜合了上述兩種方式。TCP/IP將端口號分為兩部分,少量的作為保留端口,以全局方式分配給服務進程。因此,每一個標準服務器都擁有一個全局公認的端口(即周知口,wellknown port),即使在不同的機器上,其端口號也相同。剩余的為自由端口,以本地方式進行分配。TCP和UDP均規(guī)定,小于256的端口號才能作保留端口。(2)地址網(wǎng)絡通信中通信的兩個進程分別運行在不同的機器上。在互連網(wǎng)絡中,兩臺機器可能位于不同的網(wǎng)絡,這些網(wǎng)絡通過網(wǎng)絡互連設備(網(wǎng)關(guān),網(wǎng)橋,路由器等)連接。因此需要三級尋址:a. 某一主機可與多個網(wǎng)絡相連,必須指定一特定網(wǎng)絡地址; b. 網(wǎng)絡上每一臺主機應有其唯一的地址; c. 每一主機上的每一進程應有在該主機上的唯一標識符。 通常主機地址由網(wǎng)絡ID和主機ID組成,在TCP/IP協(xié)議中用32位整數(shù)值表示;TCP和UDP均使用16位端口號標識用戶進程。(3)網(wǎng)絡字節(jié)順序不同的計算機存放多字節(jié)值的順序不同,有的機器在起始地址存放低位字節(jié)(低價先存),有的存高位字節(jié)(高價先存)。為保證數(shù)據(jù)的正確性,在網(wǎng)絡協(xié)議中須指定網(wǎng)絡字節(jié)順序。TCP/IP協(xié)議使用16位整數(shù)和32位整數(shù)的高價先存格式,它們均含在協(xié)議頭文件中。(4)連接兩個進程間的通信鏈路稱為連接。連接在網(wǎng)絡中表現(xiàn)為一些緩沖區(qū)和一組協(xié)議機制,在外部表現(xiàn)出比無連接高的可靠性。(5)半相關(guān)綜上所述,網(wǎng)絡中用一個三元組可以在全局唯一標志一個進程:(協(xié)議,本地地址,本地端口號) 這樣一個三元組,叫做一個半相關(guān)(halfassociation),它指定連接的每半部分。(6)全相關(guān)一個完整的網(wǎng)間進程通信需要由兩個進程組成,并且只能使用同一種高層協(xié)議。也就是說,不可能通信的一端用TCP協(xié)議,而另一端用UDP協(xié)議。因此一個完整的網(wǎng)間通信需要一個五元組來標識:(協(xié)議,本地地址,本地端口號,遠地地址,遠地端口號)這樣一個五元組,叫做一個相關(guān)(association),即兩個協(xié)議相同的半相關(guān)才能組合成一個合適的相關(guān),或完全指定組成一連接。(7)順序在網(wǎng)絡傳輸中,兩個連續(xù)報文在端-端通信中可能經(jīng)過不同路徑,這樣到達目的地時的順序可能會與發(fā)送時不同?!绊樞颉笔侵附邮諗?shù)據(jù)順序與發(fā)送數(shù)據(jù)順序相同。TCP協(xié)議提供這項服務。(8)流控制在數(shù)據(jù)傳輸過程中控制數(shù)據(jù)傳輸速率的一種機制,以保證數(shù)據(jù)不被丟失。TCP協(xié)議提供這項服務。服務方式在網(wǎng)絡分層結(jié)構(gòu)中,各層之間是嚴格單向依賴的,各層次的分工和協(xié)作集中體現(xiàn)在相鄰層之間的界面上?!胺铡笔敲枋鱿嗔肯噜弻又g關(guān)系的抽象概念,即網(wǎng)絡中各層向緊鄰上層提供的一組操作。下層是服務提供者,上層是請求服務的用戶。服務的表現(xiàn)形式是原語(primitive),如系統(tǒng)調(diào)用或庫函數(shù)。系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核向網(wǎng)絡應用程序或高層協(xié)議提供的服務原語。網(wǎng)絡中的n層總要向n+1層提供比n1層更完備的服務,否則n層就沒有存在的價值。在OSI的術(shù)語中,網(wǎng)絡層及其以下各層又稱為通信子網(wǎng),只提供點到點通信,沒有程序或進程的概念。而傳輸層實現(xiàn)的是“端到端”通信,引進網(wǎng)間進程通信概念,同時也要解決差錯控制,流量控制,數(shù)據(jù)排序(報文排序),連接管理等問題,為此提供不同的服務方式: 面向連接(虛電路)或無連接 面向連接服務是電話系統(tǒng)服務模式的抽象,即每一次完整的數(shù)據(jù)傳輸都要經(jīng)過建立連接,使用連接,終止連接的過程。在數(shù)據(jù)傳輸過程中,各數(shù)據(jù)分組不攜帶目的地址,而使用連接號(connect ID)。本質(zhì)上,連接是一個管道,收發(fā)數(shù)據(jù)不但順序一致,而且內(nèi)容相同。TCP協(xié)議提供面向連接的虛電路。 無連接服務是郵政系統(tǒng)服務的抽象,每個分組都攜帶完整的目的地址,各分組在系統(tǒng)中獨立傳送。無連接服務不能保證分組的先后順序,不進行分組出錯的恢復與重傳,不保證傳輸?shù)目煽啃?。UDP協(xié)議提供無連接的數(shù)據(jù)報服務。 Windows Socket網(wǎng)絡編程技術(shù) Winsock簡介為了方便網(wǎng)絡編程,Microsoft聯(lián)合了其他幾家公司共同制定了一套Windows下的網(wǎng)絡編程接口,即Windows Sockets規(guī)范,它不是一種網(wǎng)絡協(xié)議,而是一套開放的、支持多種協(xié)議的Windows下的網(wǎng)絡編程接口。現(xiàn)在的Winsock已經(jīng)基本上實現(xiàn)了與協(xié)議無關(guān),你可以使用Winsock來調(diào)用多種協(xié)議的功能,但較常使用的是TCP/IP協(xié)議。Socket實際在計算機中提供了一個通信端口,可以通過這個端口與任何一個具有Socket接口的計算機通信。應用程序在網(wǎng)絡上傳輸和接收的信息都通過這個Socket接口來實現(xiàn)。Winsock規(guī)范定義了一套可使網(wǎng)絡程序開發(fā)人員在Windows下開發(fā)標準的TCP/IP網(wǎng)絡程序接口,它不僅包含人們所熟悉的Berkeley Socket風格的庫函數(shù),還包含了一組針對Windows的擴展庫函數(shù),以使程序員能充分地利用Windows消息驅(qū)動機制、異步網(wǎng)絡事件選擇方式進行編程。Winsock規(guī)范定義并記錄了任何使用API與Internet通訊協(xié)議(ISP通常指TCP/IP)連接。應用程序使用Windows Sockets的API,而Windows Sockets又利用下層的網(wǎng)絡通信協(xié)議與操作系統(tǒng)以產(chǎn)生實際的通信。 Winsock通信機制應用程序的網(wǎng)絡通信歸根結(jié)底是利用相同的通信協(xié)議來完成信息的傳輸,應用程序和Winsock都工作在Windows的用戶模式下,操作系統(tǒng)僅僅通過Winsock是不能完成網(wǎng)絡間的通信,還需要底層的支持,而套接字仿真器(套接字核心模式驅(qū)動程序)和傳輸驅(qū)動程序接口(Transport Driver Interface,TDI)是負責操作系統(tǒng)核心態(tài)環(huán)境下的網(wǎng)絡通信,起到了Winsock和傳輸協(xié)議之間的通信橋梁作用。,Winsock是網(wǎng)絡通信應用程序于套接字仿真器間的接口,TDI是套接字仿真器和傳輸協(xié)議間的接口套接字核心模式,驅(qū)動程序復雜連接和緩沖區(qū)管理,以便向應用程序提供套接字仿真(在AFDSYS文件中實現(xiàn)),同時負責與底層傳輸驅(qū)動程序?qū)υ拏鬏旘?qū)動程序接口(TDI)負責核心模式驅(qū)動程序與傳輸協(xié)議間的通信。當應用程序利用Winsock發(fā)送和接收數(shù)據(jù)時,并不是由Winsock從網(wǎng)絡上發(fā)送和接收數(shù)據(jù)的,而是由核心模式驅(qū)動程序AFDSYS負責管理發(fā)送和接收緩沖區(qū)來發(fā)送和接收數(shù)據(jù)。也就是說,當應用程序調(diào)用send或WSASend函數(shù)來發(fā)送數(shù)據(jù)時,AFDSYS將把數(shù)據(jù)復制進他自己的發(fā)送緩沖區(qū),然后send后WSASend函數(shù)立即返回AFDSYS在后臺負責把數(shù)據(jù)發(fā)送出去,遠程客戶端接收數(shù)據(jù)的情況也類似,由接收方的AFDSYS在后臺負責把數(shù)據(jù)復制到自己的接收緩沖區(qū),然后當應用程序調(diào)用recv后WSARecv函數(shù)來接收數(shù)據(jù)時,把數(shù)據(jù)由AFDSYS管理的接收緩沖區(qū)復制到應用程序提供的緩沖區(qū)中。 AFDSYS管理的發(fā)送緩沖區(qū)SOSNDBUF和接收緩沖區(qū)SORCVBUF在缺省時兩個緩沖區(qū)的大小都為8192個字節(jié),但可以根據(jù)實際要求由應用程序設定,由于我們傳輸?shù)膶ο罂赡苁谴髷?shù)據(jù)量文件,因此需要對系統(tǒng)的發(fā)送緩沖區(qū)和接收緩沖區(qū)作相應的設定,以保障大數(shù)據(jù)量的文件數(shù)據(jù)的發(fā)送和接收。Sockets的實質(zhì)是通信端點的一種抽象,它提供一種發(fā)送和接受數(shù)據(jù)的機制。根據(jù)通信性質(zhì)不同可分為:Stream Sockets(流式套接字)和Datagram Sockets(數(shù)據(jù)報套接字),其中Stream Sockets提供無差錯的、面向連接的、無長度限制的雙向字節(jié)流傳輸,適應于處理大量數(shù)據(jù),尤其適合于FTP服務。應用程序套接字套接字仿真器傳輸驅(qū)動程序接口傳輸協(xié)議 套接字通信機制 Winsock編程模型建立一個SocketWinsock函數(shù)含有三個參數(shù),“協(xié)議簇”參數(shù)指明像TCP/IP協(xié)議組這樣的一組相關(guān)協(xié)議,“Socket類型”參數(shù)指明參數(shù)指明程序是進行數(shù)據(jù)報傳輸還是字節(jié)流傳輸,“協(xié)議”參數(shù)定義了協(xié)議簇內(nèi)程序欲使用的具體協(xié)議(如TCP或UDP)。由于編程時必須指定程序使用的協(xié)議簇,因而能夠為使用不同協(xié)議組和地址格式的網(wǎng)絡建立相同的接口。也就是說,本函數(shù)的正確調(diào)用可使Winsock接口運行在多個網(wǎng)絡上。下面語句顯示了一個典型的具體Winsock函數(shù)調(diào)用:Socket_handle=Socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);這個Winsock使用Internet協(xié)議簇(PF_INET)的TCP協(xié)議(IPPROTO_TCP)進行字節(jié)流(SOCK_STREAM)通信。當程序調(diào)用Winsock函數(shù)建立一個新Socket時,Winsock將為一個內(nèi)部數(shù)據(jù)結(jié)構(gòu)分配內(nèi)存,此結(jié)構(gòu)中保存有關(guān)此Socket的信息。配置一個Socket程序可使用Winsock
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1