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

正文內(nèi)容

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

2025-06-03 16:56 本頁面


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