




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、科大訊飛筆試題目C/C+線程與進(jìn)程多線程共存于應(yīng)用程序中是現(xiàn)代操作系統(tǒng)中的基本特征和重要標(biāo)志。在UNIX操作系統(tǒng)中,每個(gè)應(yīng)用程序的執(zhí)行都在操作系統(tǒng)內(nèi)核中登記一個(gè)進(jìn)程標(biāo)志,操作系統(tǒng)根據(jù)分配的標(biāo)志對(duì)應(yīng)用程序的執(zhí)行進(jìn)行調(diào)度和系統(tǒng)資源分配,但進(jìn)程和線程有什么區(qū)別呢?進(jìn)程和線程都是由操作系統(tǒng)所體會(huì)的程序運(yùn)行的基本單元,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對(duì)應(yīng)用的并發(fā)性。進(jìn)程和線程的區(qū)別在于:線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。另外,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。線程在執(zhí)行過程中與進(jìn)程還是有區(qū)別的。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序
2、列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。從邏輯角度來看,多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。但操作系統(tǒng)并沒有將多個(gè)線程看做多個(gè)獨(dú)立的應(yīng)用,來實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。進(jìn)程(Process)是最初定義在Unix等多用戶、多任務(wù)操作系統(tǒng)環(huán)境下用于表示應(yīng)用程序在內(nèi)存環(huán)境中基本執(zhí)行單元的概念。以Unix操作系統(tǒng)為例,進(jìn)程是Unix操作系統(tǒng)環(huán)境中的基本成分、是系統(tǒng)資源分配的基本單位。Unix操作系統(tǒng)中完成的幾乎所有用戶管理和資源分配等工作都是通過操作系統(tǒng)對(duì)應(yīng)用程序進(jìn)程的控制來實(shí)現(xiàn)的。C、C+
3、、Java等語言編寫的源程序經(jīng)相應(yīng)的編譯器編譯成可執(zhí)行文件后,提交給計(jì)算機(jī)處理器運(yùn)行。這時(shí),處在可執(zhí)行狀態(tài)中的應(yīng)用程序稱為進(jìn)程。從用戶角度來看,進(jìn)程是應(yīng)用程序的一個(gè)執(zhí)行過程。從操作系統(tǒng)核心角度來看,進(jìn)程代表的是操作系統(tǒng)分配的內(nèi)存、CPU時(shí)間片等資源的基本單位,是為正在運(yùn)行的程序提供的運(yùn)行環(huán)境。進(jìn)程與應(yīng)用程序的區(qū)別在于應(yīng)用程序作為一個(gè)靜態(tài)文件存儲(chǔ)在計(jì)算機(jī)系統(tǒng)的硬盤等存儲(chǔ)空間中,而進(jìn)程則是處于動(dòng)態(tài)條件下由操作系統(tǒng)維護(hù)的系統(tǒng)資源管理實(shí)體。多任務(wù)環(huán)境下應(yīng)用程序進(jìn)程的主要特點(diǎn)包括:進(jìn)程在執(zhí)行過程中有內(nèi)存單元的初始入口點(diǎn),并且進(jìn)程存活過程中始終擁有獨(dú)立的內(nèi)存地址空間;進(jìn)程的生存期狀態(tài)包括創(chuàng)建、就緒、運(yùn)行、
4、阻塞和死亡等類型;從應(yīng)用程序進(jìn)程在執(zhí)行過程中向CPU發(fā)出的運(yùn)行指令形式不同,可以將進(jìn)程的狀態(tài)分為用戶態(tài)和核心態(tài)。處于用戶態(tài)下的進(jìn)程執(zhí)行的是應(yīng)用程序指令、處于核心態(tài)下的應(yīng)用程序進(jìn)程執(zhí)行的是操作系統(tǒng)指令。在Unix操作系統(tǒng)啟動(dòng)過程中,系統(tǒng)自動(dòng)創(chuàng)建swapper、init等系統(tǒng)進(jìn)程,用于管理內(nèi)存資源以及對(duì)用戶進(jìn)程進(jìn)行調(diào)度等。在Unix環(huán)境下無論是由操作系統(tǒng)創(chuàng)建的進(jìn)程還要由應(yīng)用程序執(zhí)行創(chuàng)建的進(jìn)程,均擁有唯一的進(jìn)程標(biāo)識(shí)(PID)。MFC中UpdateData()S數(shù)的使用當(dāng)你使用了ClassWizard建立了控件和變量之間的聯(lián)系后:當(dāng)你修改了變量的值,而希望對(duì)話框控件更新顯示,就應(yīng)該在修改變量后調(diào)用Up
5、dateData(FALSE);如果你希望知道用戶在對(duì)話框中到底輸入了什么,就應(yīng)該在訪問變量前調(diào)用UpdateData(TRUE)。用處:主要控制ddx_data把控件中的值和變量應(yīng)行交換比如你有個(gè)編輯框,輸入了一些值,你的程序怎么得到呢;必須先調(diào)用這個(gè)(當(dāng)然是在用了ddx的情況)反之控件的成員變量中的值也可以通過該函數(shù)自動(dòng)顯示到控件里面,根據(jù)傳進(jìn)來的是true或者false當(dāng)你使用了ClassWizard建立了控件和變量之間的聯(lián)系后:當(dāng)你修改了變量的值,而希望對(duì)話框控件更新顯示,就應(yīng)該在修改變量后調(diào)用UpdateData(FALSE);如果你希望知道用戶在對(duì)話框中到底輸入了什么,就應(yīng)該在訪問
6、變量前調(diào)用UpdateData(TRUE)。1、UpdateData(true);用窗體上控件中的內(nèi)容來更新和控件相關(guān)連的變量的值(只能更新value類型的變量)例如:你在你的窗體中有一個(gè)Edit控件,為這個(gè)控件關(guān)聯(lián)了CString類型的變量m_strName;你在控件中添入內(nèi)容之后,必須調(diào)用UpdateData(true);才能把你添入的內(nèi)容傳給m_strName這個(gè)變量UpdateData(false);和上面的正好相反,還是以上面的Edit為例,當(dāng)你在程序中改變了m_strName變量的內(nèi)容的時(shí)候,如果你想讓那個(gè)Edit也顯示更新后的m_strName,就必須調(diào)用UpdateData(f
7、alse);這樣在你的Edit中才能顯示更新完的變量的值!2、UpdateData(TRUE)是將控件的狀態(tài)傳給其關(guān)聯(lián)的變量,當(dāng)然你要為控件關(guān)聯(lián)上變量才行。UpdateData(FALSE)是將控件的關(guān)聯(lián)變量的值傳給控件并改變控件狀態(tài)。UpdateData刷新的是當(dāng)前對(duì)話框。UpdateData(true);/用于將屏幕上控件中的數(shù)據(jù)交換到變量中。UpdateData(false);/用于將數(shù)據(jù)在屏幕中對(duì)應(yīng)控件中顯示出來3、edit控件,與控件關(guān)聯(lián)的變量m_edit,當(dāng)程序執(zhí)行,你在控件中輸入數(shù)21,要把21傳至Im_edit,UpdateData(true).如果把m_edit修改,要傳到控
8、件UpdateData(false);另外注意一點(diǎn):使用UpdateData()函數(shù)時(shí),當(dāng)前界面上所有綁定了的變量(即通過MFCClassWizard給控件添加了對(duì)應(yīng)的變量)都會(huì)被UpdateData(TRUE)更新成對(duì)應(yīng)控件中的內(nèi)容;同樣所有綁定了變量的控件中的內(nèi)容也會(huì)UpdateData(FALSE)更新成對(duì)應(yīng)變量中的內(nèi)容。要接受用戶的輸入就true,要輸入結(jié)果給用戶就flase數(shù)據(jù)量不多的話,最好用SetDlgItemText()和GetDlgItemText()重要補(bǔ)充:GetWindowText()是獲取控件當(dāng)前內(nèi)容(Caption或者thetextwithinthecontrol-
9、forthecontrol,具體可以查看MSDhNJI,是對(duì)單個(gè)控件而言;而UpdateData()是作用于整個(gè)CWnd勺DD煙據(jù)交換機(jī)制之中的,是控件和數(shù)據(jù)的雙向通道。Socket套接字編程一、基于TCP(面向連接)的的Socket1、服務(wù)器端 創(chuàng)建套接字SOCKETsocket(intaf,inttype,intprotocol); 綁定套接字到本地地址和端口上intbind(_inSOCKETs,_inconststructsockaddr*name,_inintnamelen); 將套接字設(shè)為監(jiān)聽模式,準(zhǔn)備接受請(qǐng)求intlisten(_inSOCKET5, _inintbacklog)
10、;等待客戶端請(qǐng)求,當(dāng)接受連接請(qǐng)求后,返回一個(gè)新的對(duì)應(yīng)于此次連接的套接字-SOCKETaccept(_inSOCKETs,_outstructsockaddr*addr,_in_outint*addrlen);利用accept函數(shù)返回的套接字(里面有客戶端的IP地址和端口號(hào))進(jìn)行通信-發(fā)送信息intsend(SOCKETs,constcharFAR*buf,intlen,intflags);接受信息intrecv(SOCKETs,charFAR*buf,intlen,intflags); 等待另一客戶端請(qǐng)求 關(guān)閉套接字客戶端 創(chuàng)建套接字socket 向服務(wù)器發(fā)出連接請(qǐng)求intconnect(SO
11、CKETs,conststructsockaddrFAR*name,intnamelen); 進(jìn)行通信-send和recv 關(guān)閉套接字基于UPD(面向無連接)的socket服務(wù)器端 創(chuàng)建套接字socket 綁定地址和端口bind 數(shù)據(jù)處理接收數(shù)據(jù)intrecvfrom(_inSOCKETs,_outchar*buf,_inintlen,_inintflags,_outstructsockaddr*from,_in_outint*fromlen);發(fā)送數(shù)據(jù)intsendto(_inSOCKETs,_inconstchar*buf,_inintlen,_inintflags,_inconststr
12、uctsockaddr*to,_ininttolen); 關(guān)閉套接字客戶端 創(chuàng)建套接字socket 向服務(wù)器發(fā)送數(shù)據(jù)和接收數(shù)據(jù)recvfrom/sendto 關(guān)閉套接字不要忘記在開始的時(shí)候?qū)雜ocket庫(kù)intWSAStartup(_inWORDwVersionRequested,_outLPWSADATAlpWSAData);和引入頭文件#include<WinSock2.h>二.Socket套接字運(yùn)用(理論)對(duì)于SOCKE在這里我不想究其歷史,我只想說其時(shí)它是一種進(jìn)程通訊的方式,簡(jiǎn)言之就是調(diào)用這個(gè)網(wǎng)絡(luò)庫(kù)的一些API函數(shù)就能實(shí)現(xiàn)分布在不同主機(jī)的相關(guān)進(jìn)程之間的數(shù)據(jù)交控.SOCKE
13、T中首先我們要理解如下幾個(gè)定義概念:一是IP地址:IPAddress我想很容易理解,就是依照TCP/IP協(xié)議分配給本地主機(jī)的網(wǎng)絡(luò)地址,就向兩個(gè)進(jìn)程要通訊,任一進(jìn)程要知道通訊對(duì)方的位置,位置如何來確定,就用對(duì)方的IP二是端口號(hào):用來標(biāo)識(shí)本地通訊進(jìn)程,方便OS提交數(shù)據(jù).就是說進(jìn)程指定了對(duì)方進(jìn)程的網(wǎng)絡(luò)IP,但這個(gè)IP只是用來標(biāo)識(shí)進(jìn)程所在的主機(jī),如何來找到運(yùn)行在這個(gè)主機(jī)的這個(gè)進(jìn)程呢,就用端口號(hào).三是連接:指兩個(gè)進(jìn)程間的通訊鏈路.四是半相關(guān):網(wǎng)絡(luò)中用一個(gè)三元組可以在全局唯一標(biāo)志一個(gè)進(jìn)程:(協(xié)議,本地地址,本地端口號(hào))這樣一個(gè)三元組,叫做一個(gè)半相關(guān),它指定連接的每半部分。五是全相關(guān)一個(gè)完整的網(wǎng)間進(jìn)程通信需
14、要由兩個(gè)進(jìn)程組成,并且只能使用同一種高層貨選。也就是說,不可能通信的一端用TCP協(xié)議,而另一端用UDPB議。因此一個(gè)完整的網(wǎng)間通信需要一個(gè)五元組來標(biāo)識(shí):(協(xié)議,本地地址,本地端口號(hào),遠(yuǎn)地地址,遠(yuǎn)地端口號(hào))這樣一個(gè)五元組,叫做一個(gè)相關(guān)(association),即兩個(gè)協(xié)議相同的半相關(guān)才能組合成一個(gè)合適的相關(guān),或完全指定組成一連接。客戶/服務(wù)器模式在TCP/IP網(wǎng)絡(luò)應(yīng)用中,通信的兩個(gè)進(jìn)程間相互作用的主要模式是客戶/服務(wù)能模式(Client/Servermodel),即客戶向服務(wù)器發(fā)出服務(wù)請(qǐng)求,服務(wù)器接收到請(qǐng)求后,提供相應(yīng)的服務(wù)。客戶/服務(wù)器模式的建立基于以下兩點(diǎn):首先,建立網(wǎng)絡(luò)的起因是網(wǎng)絡(luò)中軟硬件
15、資源、運(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ù)交換提供同步,這就是基涌紀(jì)紀(jì)戶/服務(wù)器模式的TCP/IPo客戶/服務(wù)器模式鑰紀(jì)紀(jì)作過程中采取的是主動(dòng)請(qǐng)求方式:首先服務(wù)器方要先啟動(dòng),并根據(jù)請(qǐng)求提供相應(yīng)服務(wù):1. 打開一通信通道并告知本地主機(jī),它愿意在某一公認(rèn)地址上(周知口,如FTP為21)接收客戶請(qǐng)求;2. 等待客戶請(qǐng)求到達(dá)該端口;3. 接收到重復(fù)服務(wù)請(qǐng)求,處理該請(qǐng)求并發(fā)送應(yīng)答信號(hào)。接收到并發(fā)
16、服務(wù)請(qǐng)求,要激活一新進(jìn)程來處理這個(gè)客戶請(qǐng)求(如UNIX系統(tǒng)中用fork、exec)。新進(jìn)程處理此客戶請(qǐng)求,并不需要對(duì)其它請(qǐng)求作出應(yīng)答。服務(wù)完成后,關(guān)閉此新進(jìn)程與客戶的通信鏈路,并終止。4. 返回第二步,等待另一客戶請(qǐng)求。5. 關(guān)閉服務(wù)器客戶方:1. 打開一通信通道,并連接到服務(wù)器所在主機(jī)的特定端口;2. 向服務(wù)器發(fā)服務(wù)請(qǐng)求報(bào)文,等待并接收應(yīng)答;繼續(xù)提出請(qǐng)求3. 請(qǐng)求結(jié)束后關(guān)閉通信通道并終止。從上面所描述過程可知:1. 客戶與服務(wù)器進(jìn)程的作用是非對(duì)稱的,因此編碼不同。2. 服務(wù)進(jìn)程一般是先涌紀(jì)紀(jì)戶請(qǐng)求而啟動(dòng)的。只要系統(tǒng)運(yùn)行,該服務(wù)進(jìn)程一直存在,直到正常或強(qiáng)迫終止。介紹完基礎(chǔ)知識(shí),下面就介紹一些A
17、PI函數(shù):創(chuàng)建套接字socket()應(yīng)用程序在使用套接字前,首先必須擁有一個(gè)套接字,系統(tǒng)調(diào)用socket()向應(yīng)用程序提供創(chuàng)建套接字的手段,其調(diào)用格式如下:SOCKETPASCALFARsocket(intaf,inttype,intprotocol);該調(diào)用要接收三個(gè)參數(shù):af、type、protocol0參數(shù)af指定通信發(fā)生的區(qū)域,:AF_UNIXAF_INETAF_N跖而DOSWINDOWS僅支持AF_INET它是網(wǎng)際網(wǎng)友域。因此,地址族與廟議族相同。參數(shù)type描述要建立的去接字的類型。這里分三種:一是TC騎式套接字(SOCK_STREAM洪了一個(gè)面向連接、可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)無差
18、錯(cuò)、無重復(fù)地發(fā)送,且按發(fā)送順序接收。內(nèi)設(shè)流量控制,避免數(shù)據(jù)流超限;數(shù)據(jù)被看作是字節(jié)流,無長(zhǎng)度限制。文件傳送協(xié)議(FTP)即使用流式套接字。二是數(shù)據(jù)報(bào)式套接字(SOCK_DGRAM洪了一個(gè)無連接服務(wù)。數(shù)據(jù)包以獨(dú)立包形式被發(fā)送,不提供無錯(cuò)保證,藪據(jù)可能丟失或重復(fù),并且接收順序混亂。網(wǎng)絡(luò)文件系統(tǒng)(NFS使用數(shù)據(jù)報(bào)式套接字。三是原始式套接字(SOCK_RAW)接口允許對(duì)較低層協(xié)議,如IP、ICMP直接訪問。常用于檢驗(yàn)新的協(xié)議實(shí)現(xiàn)金訪問現(xiàn)有服務(wù)中配置的新設(shè)備.參數(shù)protocol說明該套接字使用的特定協(xié)議,如果調(diào)用者不希望特別指定使用的協(xié)議,則置為0,使用默認(rèn)的連接模式。根據(jù)這三個(gè)參數(shù)建立一個(gè)套接字,并
19、將相應(yīng)的資源分配給它,同時(shí)返回一個(gè)整型套接字號(hào)。因此,socket()系統(tǒng)調(diào)用實(shí)際上指定了相關(guān)五元組中的“協(xié)議”這一元。指定本地地址bind()當(dāng)一個(gè)套接字用socket()創(chuàng)建后,存在一個(gè)名字空間(地址族),但它沒有被命名。bind()將套接字地址(包括本地主機(jī)地址和本地端口地址)與所創(chuàng)建的套接字號(hào)聯(lián)系起來,即將名字賦予套接字,以指定本地半相關(guān)。其調(diào)用格式如下:intPASCALFARbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);參數(shù)s是由socket()調(diào)用返回的并且未作連接的套接字描述符(套接字號(hào))。參數(shù)name是賦給套接字s的
20、本地地址(名字),其長(zhǎng)度可變,結(jié)構(gòu)隨通信域而不同而不同。namelen表明了name的長(zhǎng)度.如果沒有錯(cuò)誤發(fā)生,bind()返回0。否貝U返回SOCKET_ERROR建立套接字連接connect()與accept()這兩個(gè)系統(tǒng)調(diào)用用于完成一個(gè)完整相關(guān)的建立,其中connect()用于建立連接。無連接的套接字進(jìn)程也可以調(diào)用connect。,但這時(shí)在進(jìn)程之間沒有實(shí)際的報(bào)文交換,調(diào)用將從本地操作系統(tǒng)直接返回。這樣做的優(yōu)點(diǎn)是程序員不必為每一數(shù)據(jù)指定目的地址,而且如果收到的一個(gè)數(shù)據(jù)報(bào),其目的端口未與任何套接字建立“連接”,便能判斷該端靠紀(jì)紀(jì)可操作。而accept()用于使服務(wù)器等待來自某客戶進(jìn)程的實(shí)際連接
21、。connect()的調(diào)用格式如下:intPASCALFARconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);參數(shù)s是欲建立連接的本地套接字描述符。參數(shù)name指出說明對(duì)方套接字地址結(jié)構(gòu)的指針。對(duì)方套接字地址長(zhǎng)度由namelen說明。如果沒有錯(cuò)誤發(fā)生,connect()返回0。否則返回值SOCKET_ERROR面向連接的協(xié)議中,該調(diào)用導(dǎo)致本地系統(tǒng)和外部系統(tǒng)之間連接實(shí)際建立。由于地址族總被包含在套接字地址結(jié)構(gòu)的前兩個(gè)字節(jié)中,并通過socket()調(diào)用與某個(gè)協(xié)議族相關(guān)。因此bind()和connect()無須協(xié)議作為參數(shù)。accept(
22、)的調(diào)用格式如下:SOCKETPASCAFARaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen);參數(shù)s為本地套接字描述符,在用做accept()調(diào)用的參數(shù)前應(yīng)該先調(diào)用過listen()oaddr指向客戶方套接字地址結(jié)構(gòu)的指針,用來接收連接實(shí)體的地址。addr的確切格式由套接字創(chuàng)建時(shí)建立的地址族決定。addrlen為客戶方套接字地址的長(zhǎng)度(字節(jié)數(shù))。如果沒有錯(cuò)誤發(fā)生,accept()返回一個(gè)SOCKE費(fèi)型的值,表示接收到的套接字的描述符。否則返回值INVALID_SOCKETaccept()用于面向連接服務(wù)器。參數(shù)addr和addrlen
23、存放客戶方的地址信息。調(diào)用前,參數(shù)addr指向一個(gè)初始值為空的地址結(jié)構(gòu),而addrlen的初始值為0;調(diào)用accept()后,服務(wù)器等待從編號(hào)為s的套接字上接受客戶連接請(qǐng)求,而連接請(qǐng)求是由客戶方的connect()調(diào)用發(fā)出的。當(dāng)有連接請(qǐng)求到達(dá)時(shí),accept()調(diào)用將請(qǐng)求連接隊(duì)列上的第一個(gè)客戶方套接字地址及長(zhǎng)度放入addr和addrlen,并創(chuàng)建一個(gè)與s有相同特性的新套接字號(hào)。新的套接字可用于處理服務(wù)器并發(fā)請(qǐng)求。四個(gè)套接字系統(tǒng)調(diào)用,socket()、bind()、connect()、accept(),可以完成一個(gè)完全五元相關(guān)的建立。socket()指定五元組中的協(xié)議元,它的用法與是否為客戶或服
24、務(wù)器、是否面向連接無關(guān)。bind()指定五元組中的本地二元,即本地主機(jī)地址和端口號(hào),其用法與是否面向連接有關(guān):在服務(wù)器方,無論是否面向連接,均要調(diào)用bind(),若采用面向連接,則可以不調(diào)用bind(),而通過connect()自動(dòng)完成。若采用無連接,客戶方必須使用bind()以獲得一個(gè)唯一的地址。監(jiān)聽連接listen()此調(diào)用用于面向連接服務(wù)器,表明它愿意接收連接。listen()需在accept()之前調(diào)用,具調(diào)用格式如下:intPASCALFARlisten(SOCKETs,intbacklog);參數(shù)s標(biāo)識(shí)一個(gè)本地已建立、尚未連接的套接字號(hào),服務(wù)器愿意從它上面接收請(qǐng)求。backlog表
25、示請(qǐng)求連接隊(duì)列的最大長(zhǎng)度,用于限制排隊(duì)請(qǐng)求的個(gè)數(shù),目前允許的最大值為5。如果沒有錯(cuò)誤發(fā)生,listen()返回00否則它返回SOCKET_ERRORlisten()在執(zhí)行調(diào)用過程中可為沒有調(diào)用過bind()的套接字s完成所必須的連接,并建立長(zhǎng)度為backlog的請(qǐng)求連接隊(duì)列。調(diào)用listen()是服務(wù)器接收一個(gè)連接請(qǐng)求的四個(gè)步驟中的第三步。它在調(diào)用socket()分配一個(gè)流套接字,且調(diào)用bind()給s賦于一個(gè)名字之后調(diào)用,而且一定要在accept()之前調(diào)用。數(shù)據(jù)傳卒&send()與recv()當(dāng)一個(gè)連接建立以后,就可以傳輸數(shù)據(jù)了。常用的系統(tǒng)調(diào)用有send()和recv()。send
26、()調(diào)用用于鑰紀(jì)紀(jì)數(shù)s指定的已連接的數(shù)據(jù)報(bào)或流套接字上發(fā)送輸出數(shù)據(jù),格式如下:intPASCAFARsend(SOCKET,constcharFAR*buf,intlen,intflags);參數(shù)s為已連接的本地套接字描述符。buf指向存有發(fā)送數(shù)據(jù)的緩沖區(qū)的指針,其長(zhǎng)度由len指定。flags指定傳輸控制方式,如是否發(fā)送帶外數(shù)據(jù)等。如果沒有錯(cuò)誤發(fā)生,send()返回總共發(fā)送的字節(jié)數(shù)。否則它返回SOCKET_ERRORrecv()調(diào)用用于s指定的已連接的數(shù)據(jù)報(bào)或流套接字上接收輸入數(shù)據(jù),格式如下:intPASCALFARrecv(SOCKETs,charFAR*buf,intlen,intflag
27、s);參數(shù)s為已連接的套接字描述符。buf指向接收輸入數(shù)據(jù)緩沖區(qū)的指針,其長(zhǎng)度由len指定。flags指定傳輸控制方式,如是否接收帶外數(shù)據(jù)等。如果沒有錯(cuò)誤發(fā)生,recv()返回總共接收的字節(jié)數(shù)。如果連接被關(guān)閉,返回00否則它返回SOCKET_ERROR輸入/輸出多路復(fù)用select()select()調(diào)用用來檢測(cè)一個(gè)或多個(gè)套接字的狀態(tài)。對(duì)每一個(gè)套接字來說,這個(gè)調(diào)用可以請(qǐng)求讀、寫或錯(cuò)誤狀態(tài)方面的信息。請(qǐng)求給定狀態(tài)的套接字集合由一個(gè)fd_set結(jié)構(gòu)指示。在返回時(shí),此結(jié)構(gòu)被更新,以反映那些滿足特定條件的套接字向子集,同時(shí),select()調(diào)用返回滿足條件的套接字的數(shù)目,其調(diào)用格式如下:intPASC
28、ALFARselect(intnfds,fd_setFAR*readfds,fd_setFAR*writefds,fd_setFAR*exceptfds,conststructtimevalFAR*timeout);參數(shù)nfds指明被檢查的套接字描述符的值域,此變量一般被忽略。參數(shù)readfds指向要做讀檢測(cè)的套接字描述符集合的指針,調(diào)用者希望從中讀取數(shù)據(jù)。參數(shù)writefds指向要做寫檢測(cè)的套接字描述符集合的指針。exceptfds指向要檢測(cè)是否出錯(cuò)的套接字描述符集合的指針。timeout指向select()函數(shù)等待的最大時(shí)間,如果設(shè)為NULL則為阻塞操作。select()返回包含在fd_s
29、et結(jié)構(gòu)中已準(zhǔn)備好的套接字描述符的總數(shù)目,或者是發(fā)生錯(cuò)誤則返回SOCKET_ERROR關(guān)閉套接字closesocket()closesocket()關(guān)閉套接字s,并釋放分配給該套接字的資源;如果s涉及一個(gè)打開的TCP連接,則該連接被釋放。closesocket()的調(diào)用格式如下:BOOLPASCALFARclosesocket(SOCKETs);參數(shù)s待關(guān)閉的套接字描述符。如果沒有錯(cuò)誤發(fā)生,closesocket()返回0。否貝U返回值SOCKET_ERROR以上就是SOCKEAPI一些常用的API函數(shù),下面我在介紹C/S模式就是客戶機(jī)/服務(wù)器通訊模式,服務(wù)器啟動(dòng)服務(wù)并在相應(yīng)端口內(nèi)偵聽,客戶機(jī)
30、打開連接,完成通訊鏈路的建立后,雙方進(jìn)行數(shù)據(jù)交互,完畢后關(guān)閉套接字.TCP/IP協(xié)議TCP/IP(TransmissionControlProtocol/InternetProtocol)的簡(jiǎn)寫,中文譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又叫網(wǎng)絡(luò)通訊協(xié)議,這個(gè)協(xié)議是Internet最基本的協(xié)議、Internet國(guó)際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),簡(jiǎn)單地說,就是由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層白TTCP協(xié)議組成的。什么是TCP/IP?TCP/IP是供已連接因特網(wǎng)的計(jì)算機(jī)進(jìn)行通信的通信協(xié)議。TCP/IP指?jìng)鬏斂刂茀f(xié)議/網(wǎng)際協(xié)、議(TransmissionControlProtocol/InternetProtocol)。
31、TCP/IP定義了電子設(shè)備(比如計(jì)算機(jī))如何連入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉?biāo)準(zhǔn)。TCP/IP(傳輸控制協(xié)議/網(wǎng)際協(xié)議)是互聯(lián)網(wǎng)中的基本通信語言或協(xié)議。在私網(wǎng)中,它也被用作通信協(xié)議。當(dāng)你直接網(wǎng)絡(luò)連接時(shí),你的計(jì)算機(jī)應(yīng)提供一個(gè)TCP/IP程序的副本,此時(shí)接收你所發(fā)送的信息的計(jì)算機(jī)也應(yīng)有一個(gè)TCP/IP程序的副本TCP/IP(傳輸控制協(xié)議/網(wǎng)際協(xié)議)是互聯(lián)網(wǎng)中的基本通信語言或協(xié)議。在私網(wǎng)中,它也被用作通信協(xié)議。當(dāng)你直接網(wǎng)絡(luò)連接時(shí),你的計(jì)算機(jī)應(yīng)提供一個(gè)TCP/巴程序的副本,此時(shí)接收你所發(fā)送的信息的計(jì)算機(jī)也應(yīng)有一個(gè)TCP/IP程序的副本。TCP/IP是一個(gè)兩層的程序。高層為傳輸控制協(xié)議,它負(fù)責(zé)聚
32、集信息或把文件拆分稱更小的包。這些包通過網(wǎng)絡(luò)傳送到接收端的TCP層,接收端的TCP層把包還原為原始文件。低層是網(wǎng)際協(xié)議,它處理每個(gè)包的地址部分,使這些包正確的到達(dá)目的地。網(wǎng)絡(luò)上的網(wǎng)關(guān)計(jì)算機(jī)根據(jù)信息的地址來進(jìn)行路由選擇。即使來自同一文件的分包路由也有可能不同,但最后會(huì)在目的地匯合。TCP/IP使用客戶端/服務(wù)器模式進(jìn)行通信。TCP/IP通信是點(diǎn)對(duì)點(diǎn)的,意思是通信是網(wǎng)絡(luò)中的一臺(tái)主機(jī)與另一臺(tái)主機(jī)之間的。TCP/IP與上層應(yīng)用程序之間可以說是沒有國(guó)籍的”,因?yàn)槊總€(gè)客戶請(qǐng)求都被看做是與上一個(gè)請(qǐng)求無關(guān)的。正是它們之間的無國(guó)籍的”釋放了網(wǎng)絡(luò)路徑,才是每個(gè)人都可以連續(xù)不斷的使用網(wǎng)絡(luò)。許多用戶熟悉使用TCP/I
33、P協(xié)議的高層應(yīng)用協(xié)議。包括萬維網(wǎng)的超文本傳輸協(xié)議(HTTP),文件傳輸協(xié)議(FTP),Telnet和簡(jiǎn)單郵件傳輸協(xié)議(SMTP)。這些協(xié)議通常和TCP/IP協(xié)議打包在一起。使用模擬電話調(diào)制解調(diào)器連接網(wǎng)絡(luò)的個(gè)人電腦通常是使用串行線路接口協(xié)議(SLIP)和點(diǎn)對(duì)點(diǎn)協(xié)議(PPP)。這些協(xié)議壓縮IP包后通過撥號(hào)電話線發(fā)送到對(duì)方的調(diào)制解調(diào)器中。有TCP/IP-"協(xié)議相關(guān)的協(xié)議還包括用戶數(shù)據(jù)報(bào)協(xié)議(UDP),它代替TCP/IP協(xié)議來達(dá)到特殊的目的。其他協(xié)議是網(wǎng)絡(luò)主機(jī)用來交換路由信息的,包括Internet控制信息協(xié)議(ICMP),內(nèi)部網(wǎng)關(guān)協(xié)議(IGP),外部網(wǎng)關(guān)協(xié)議(EGP),邊界網(wǎng)關(guān)協(xié)議(BGP
34、)。TCP/IP的通訊協(xié)議這部分簡(jiǎn)要介紹一下TCP/IP的內(nèi)部結(jié)構(gòu),為討論與互聯(lián)網(wǎng)有關(guān)的安全問題打下基礎(chǔ)。TCP/IP協(xié)議組之所以流行,部分原因是因?yàn)樗梢杂迷诟鞣N各樣的信道和底層協(xié)議(例如T1和X.25、以太網(wǎng)以及RS-232串行接口)之上。確切地說,TCP/IP協(xié)議是一組包括TCP協(xié)議和IP協(xié)議,UDP(UserDatagramProtocol)協(xié)議、ICMP(InternetControlMessageProtocol)協(xié)議和其他一些協(xié)議的協(xié)議組。TCP/IP整體構(gòu)架概述TCP/IP協(xié)議并不完全符合OSI的七層參考模型。傳統(tǒng)的開放式系統(tǒng)互連參考模型,是一種通信協(xié)議的7層抽象的參考模型,其
35、中每一層執(zhí)行某一特定任務(wù)。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。而TCP/IP通訊協(xié)議采用了4層的層級(jí)結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。這4層分別為:應(yīng)用層:應(yīng)用程序間溝通的層,如簡(jiǎn)單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等。傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送,應(yīng)用程序之間的通信服務(wù),主要功能是數(shù)據(jù)格式化、數(shù)據(jù)確認(rèn)和丟失重傳等。如傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)等,TCP和UDP給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又校@一
36、層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收。互連網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī)(但不檢查是否被正確接收),如網(wǎng)際協(xié)議(IP)。網(wǎng)絡(luò)接口層(主機(jī)-網(wǎng)絡(luò)層):接收IP數(shù)據(jù)報(bào)并進(jìn)行傳輸,從網(wǎng)絡(luò)上接收物理幀,抽取IP數(shù)據(jù)報(bào)轉(zhuǎn)交給下一層,對(duì)實(shí)際的網(wǎng)絡(luò)媒體的管理,定義如何使用實(shí)際網(wǎng)絡(luò)(如Ethernet、SerialLine等)來傳送數(shù)據(jù)。TCP/IP中的協(xié)議以下簡(jiǎn)單介紹TCP/IP中的協(xié)議都具備什么樣的功能,都是如何工作的:1.IP網(wǎng)際協(xié)議IP是TCP/IP的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。IP層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動(dòng)程序)發(fā)來的數(shù)據(jù)包,并把
37、該數(shù)據(jù)包發(fā)送到更高層-TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數(shù)據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因?yàn)镮P并沒有做任何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地址)。高層的TCP和UDP服務(wù)在接收數(shù)據(jù)包時(shí),通常假設(shè)包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務(wù)的認(rèn)證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個(gè)有效的主機(jī)發(fā)送來的。IP確認(rèn)包含一個(gè)選項(xiàng),叫作IPsourcerouting,可以用來指定一條源地址和目的地址之間的直接路徑。對(duì)于一些TCP和UDP的服務(wù)來說,使用了該選項(xiàng)的IP包好像是從
38、路徑上的最后一個(gè)系統(tǒng)傳遞過來的,而不是來自于它的真實(shí)地點(diǎn)。這個(gè)選項(xiàng)是為了測(cè)試而存在的,說明了它可以被用來欺騙系統(tǒng)來進(jìn)行平常是被禁止的連接。那么,許多依靠IP源地址做確認(rèn)的服務(wù)將產(chǎn)生問題并且會(huì)被非法入侵。2 .TCP如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向,上?專送到TCP層。TCP將包排序并進(jìn)行錯(cuò)誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包括序號(hào)和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。TCP將它的信息送到更高層的應(yīng)用程序,例如Telnet的服務(wù)程序和客戶程序。應(yīng)用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設(shè)備驅(qū)動(dòng)程序和物理介質(zhì)
39、,最后到接收方。面向連接的服務(wù)(例如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發(fā)送和接收域名數(shù)據(jù)庫(kù)),但使用UDP傳送有關(guān)單個(gè)主機(jī)的信息。3 .UDPUDP與TCP位于同一層,但它不管數(shù)據(jù)包的順序、錯(cuò)誤或重發(fā)。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),UDP主要用于那些面向查詢-應(yīng)答的服務(wù),例如NFS。相對(duì)于FTP或Telnet,這些服務(wù)需要交換的信息量較小。使用UDP的服務(wù)包括NTP(網(wǎng)絡(luò)時(shí)間協(xié)議)和DNS(DNS也使用TCP)。欺騙UDP包比欺騙TCP包更容易,因?yàn)閁DP沒有建立初始化連
40、接(也可以稱為握手)(因?yàn)樵趦蓚€(gè)系統(tǒng)間沒有虛電路),也就是說,與UDP相關(guān)的服務(wù)面臨著更大的危險(xiǎn)。4.ICMPICMP與IP位于同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關(guān)通向目的地址的路徑信息。ICMP的,Redirect?信息通知主機(jī)通向其他系統(tǒng)的更準(zhǔn)確的路徑,而,Unreachable?信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連接,體面地煞止。PING是最常用的基于ICMP的服務(wù)。5. TCP和UDP的端口結(jié)構(gòu)TCP和UDP服務(wù)通常有一個(gè)客戶/服務(wù)器的關(guān)系,例如,一個(gè)Telnet服務(wù)進(jìn)程開始在系統(tǒng)上處于空閑狀態(tài),等待著連接。用戶使用Telnet客戶
41、程序與服務(wù)進(jìn)程建立一個(gè)連接。客戶程序向服務(wù)進(jìn)程寫入信息,服務(wù)進(jìn)程讀出信息并發(fā)出響應(yīng),客戶程序讀出響應(yīng)并向用戶報(bào)告。因而,這個(gè)連接是雙工的,可以用來進(jìn)行讀寫。兩個(gè)系統(tǒng)間的多重Telnet連接是如何相互確認(rèn)并協(xié)調(diào)一致呢?TCP或UDP連接唯一地使用每個(gè)信息中的如下四項(xiàng)進(jìn)行確認(rèn):源IP地址發(fā)送包的IP地址。目的IP地址接收包的IP地址。源端口源系統(tǒng)上的連接的端口。目的端口目的系統(tǒng)上的連接的端口。端口是一個(gè)軟件結(jié)構(gòu),被客戶程序或服務(wù)進(jìn)程用來發(fā)送和接收信息。一個(gè)端口對(duì)應(yīng)一個(gè)16比特的數(shù)。服務(wù)進(jìn)程通常使用一個(gè)固定的端口,例如,SMTP使用25、Xwindows使用6000。這些端口號(hào)是,廣為人知相,因?yàn)樵?/p>
42、建立與特定的主機(jī)或服務(wù)的連接時(shí),需要這些地址和目的地址進(jìn)行通訊。TCP/IP協(xié)議的主要特點(diǎn):(1)開放的協(xié)議標(biāo)準(zhǔn),可以免費(fèi)使用,并且獨(dú)立于特定的計(jì)算機(jī)硬件與操作系統(tǒng);(2)獨(dú)立于特定的網(wǎng)絡(luò)硬件,可以運(yùn)行在局域網(wǎng)、廣域網(wǎng),更適用于互聯(lián)網(wǎng)中;(3)統(tǒng)一的網(wǎng)絡(luò)地址分配方案,使得整個(gè)TCP/IP設(shè)備在網(wǎng)中都具有惟一的地址;(4)標(biāo)準(zhǔn)化的高層協(xié)議,可以提供多種可靠的用戶服務(wù)。TCP/IP模型的主要缺點(diǎn)有:首先,該模型沒有清楚地區(qū)分哪些是規(guī)范、哪些是實(shí)現(xiàn);其次,TCP/IP模型的主機(jī)一網(wǎng)絡(luò)層定義了網(wǎng)絡(luò)層與數(shù)據(jù)鏈路層的接口,并不是常規(guī)意義上的一層,接口和層的區(qū)別是非常重要的,TCP/IP模型沒有將它們區(qū)分開
43、來。在XP系統(tǒng)下重置TCP/IP協(xié)議的方法在WindowsXP的網(wǎng)絡(luò)組件列表里,Internet協(xié)議(TCP/IP)的"卸載"按鈕是灰色不可選狀態(tài)。這是因?yàn)閭鬏斂刂茀f(xié)議/Internet協(xié)議(TCP/IP)堆棧是MicrosoftXP/2003的核心組件(TCP/IP協(xié)議是WindowsXP的默認(rèn)協(xié)議),不能刪除。所以WindowsXP不允許卸載TCP/IP協(xié)議。如果在特殊情況下需要重新安裝TCP/IP協(xié)議,如何操作?解決方法在這種情況下,如果需要重新安裝TCP/IP以使TCP/1IP堆棧恢復(fù)為原始狀態(tài)。可以使用NetShell實(shí)用程序重置TCP/IP堆棧,使其恢復(fù)到初次安
44、裝操作系統(tǒng)時(shí)的狀態(tài)。具體操作如下:1、單擊開始->運(yùn)行,車入"CMD"后單擊"確定"2、在命令行模式輸入命令netshintipresetC:resetlog.txt(其中,Resetlog.txt記錄命令結(jié)果的日志文件,一定要指定,這里指定了Resetlog.txt日志文件及完整路徑。)運(yùn)行結(jié)果可以查看C:resetlog.txt(咨詢中可根據(jù)用戶實(shí)際操作情況提供)運(yùn)行此命令的結(jié)果與刪除并重新安裝TCP/IP協(xié)議的效果相同。注思本操作具有一定的風(fēng)險(xiǎn)性,請(qǐng)?jiān)诓僮髑皞浞葜匾獢?shù)據(jù),并根據(jù)操作熟練度酌情使用。IP協(xié)議IP(InternetProtocol
45、)協(xié)議的英文名直譯就是:因特網(wǎng)協(xié)議。從這個(gè)名稱我們就可以知道IP協(xié)議的重要性。在現(xiàn)實(shí)生活中,我們進(jìn)行貨物運(yùn)輸時(shí)都是把貨物包裝成一個(gè)個(gè)的紙箱或者是集裝箱之后才進(jìn)行運(yùn)輸,在網(wǎng)絡(luò)世界中各種信息也是通過類似的方式進(jìn)行傳輸?shù)摹P協(xié)議規(guī)定了數(shù)據(jù)傳輸時(shí)的基本單元和格式。如果比作貨物運(yùn)輸,IP協(xié)議規(guī)定了貨物打包時(shí)的包裝箱尺寸和包裝的程序。除了這些以外,IP協(xié)議還定義了數(shù)據(jù)包的遞交辦法和路由選擇。同樣用貨物運(yùn)輸做比喻,IP協(xié)議規(guī)定了貨物的運(yùn)輸方法和運(yùn)輸路線。TCP協(xié)議我們已經(jīng)知道了IP協(xié)議很重要,IP協(xié)議已經(jīng)規(guī)定了數(shù)據(jù)傳輸?shù)闹饕獌?nèi)容,那TCP(TransmissionControlProtocol)協(xié)議是做什
46、么的呢?不知大家發(fā)現(xiàn)沒有,在IP協(xié)議中定義的傳輸是單向的,也就是說發(fā)出去的貨物對(duì)方有沒有收到我們是不知道的。就好像8毛錢一份的平信一樣。那對(duì)于重要的信件我們要寄掛號(hào)信怎么辦呢?TCP協(xié)議就是幫我們寄掛號(hào)信”的。TCP協(xié)議提供了可靠的面向?qū)ο蟮臄?shù)據(jù)流傳輸服務(wù)的規(guī)則和約定。簡(jiǎn)單的說在TCP模式中,對(duì)方發(fā)一個(gè)數(shù)據(jù)包給你,你要發(fā)一個(gè)確認(rèn)數(shù)據(jù)包給對(duì)方。通過這種確認(rèn)來提供可靠性。1.1TCP/IP參考模型TCP/IP協(xié)議并不完全符合OSI的七層參考模型。傳統(tǒng)的開放式系統(tǒng)互連參考模型,是一種通信協(xié)議的7層抽象的參考模型,其中每一層執(zhí)行某一特定任務(wù)。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物
47、理層、數(shù)據(jù)鏈路層、網(wǎng)路層、傳輸層、話路層、表示層和應(yīng)用層。而TCP/IP通訊協(xié)議采用了4層的層級(jí)結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。這4層分別為:應(yīng)用層:應(yīng)用程序間溝通的層,如簡(jiǎn)單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等。傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)等,TCP和UDP給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又校@一層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收。互連網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī)(但不檢查是否被正確接收),如
48、網(wǎng)際協(xié)議(IP)。網(wǎng)絡(luò)接口層:對(duì)實(shí)際的網(wǎng)絡(luò)媒體的管理,定義如何使用實(shí)際網(wǎng)絡(luò)(如Ethernet、SerialLine等)來傳送數(shù)據(jù)。1. 2網(wǎng)間協(xié)議IPInternet上使用的一個(gè)關(guān)鍵的底層協(xié)議是網(wǎng)際協(xié)議,通常稱IP協(xié)議。我們利用一個(gè)共同遵守的通信協(xié)議,從而使Internet成為一個(gè)允許連接不同類型的計(jì)算機(jī)和不同操作系統(tǒng)的網(wǎng)絡(luò)。要使兩臺(tái)計(jì)算機(jī)彼此之間進(jìn)行通信,必須使兩臺(tái)計(jì)算機(jī)使用同一種“語言"。通信協(xié)議正像兩臺(tái)計(jì)算機(jī)交換信息所使用的共同語言,它規(guī)定了通信雙方在通信中所應(yīng)共同遵守的約定。計(jì)算機(jī)的通信協(xié)議精確地定義了計(jì)算機(jī)在彼此通信過程的所有細(xì)節(jié)。例如,每臺(tái)計(jì)算機(jī)發(fā)送的信息格式和含義,在
49、什么情況下應(yīng)發(fā)送規(guī)定的特殊信息,以及接收方的計(jì)算機(jī)應(yīng)做出哪些應(yīng)答等等。網(wǎng)際協(xié)議IP協(xié)議提供了能適應(yīng)各種各樣網(wǎng)絡(luò)硬件的靈活性,對(duì)底層網(wǎng)絡(luò)硬件幾乎沒有任何要求,任何一個(gè)網(wǎng)絡(luò)只要可以從一個(gè)地點(diǎn)向另一個(gè)地點(diǎn)傳送二進(jìn)制數(shù)據(jù),就可以使用IP協(xié)議加入Internet了。如果希望能在Internet上進(jìn)行交流和通信,則每臺(tái)連上Internet的計(jì)算機(jī)都必須遵守IP協(xié)議。為此使用Internet的每臺(tái)計(jì)算機(jī)都必須運(yùn)行IP軟件,以便時(shí)刻準(zhǔn)備發(fā)送或接收信息。IP協(xié)議對(duì)于網(wǎng)絡(luò)通信有著重要的意義:網(wǎng)絡(luò)中的計(jì)算機(jī)通過安裝IP軟件,使許許多多的局域網(wǎng)絡(luò)構(gòu)成了一個(gè)龐大而又嚴(yán)密的通信系統(tǒng)。從而使Internet看起來好像是真實(shí)
50、存在的,但實(shí)際上它是一種并不存在的虛擬網(wǎng)絡(luò),只不過是利用IP協(xié)議把全世界上所有愿意接入Internet的計(jì)算機(jī)局域網(wǎng)絡(luò)連接起來,使得它們彼此之間都能夠通信。1.3 傳輸控制協(xié)議TCP盡管計(jì)算機(jī)通過安裝IP軟件,從而保證了計(jì)算機(jī)之間可以發(fā)送和接收資料,但P協(xié)議還不能解決資料分組在傳輸過程中可能出現(xiàn)的問題。因此,若要解決可能出現(xiàn)的問題,連上Internet的計(jì)算機(jī)還需要安裝TCP協(xié)議來提供可靠的并且無差錯(cuò)的通信服務(wù)。TCP協(xié)議被稱作一種端對(duì)端協(xié)議。這是因?yàn)樗鼮閮膳_(tái)計(jì)算機(jī)之間的連接起了重要作用:當(dāng)一臺(tái)計(jì)算機(jī)需要與另一臺(tái)遠(yuǎn)程計(jì)算機(jī)連接時(shí),TCP協(xié)議會(huì)讓它們建立一個(gè)連接、發(fā)送和接收資料以及終止連接。傳輸
51、控制協(xié)議TCP協(xié)議利用重發(fā)技術(shù)和擁塞控制機(jī)制,向應(yīng)用程序提供可靠的通信連接,使它能夠自動(dòng)適應(yīng)網(wǎng)上的各種變化。即使在Internet暫時(shí)出現(xiàn)堵塞的情況下,TCP也能夠保證通信的可靠。眾所周知,Internet是一個(gè)龐大的國(guó)際性網(wǎng)絡(luò),網(wǎng)絡(luò)上的擁擠和空閑時(shí)間總是交替不定的,加上傳送的距離也遠(yuǎn)近不同,所以傳輸資料所用時(shí)間也會(huì)變化不定。TCP協(xié)議具有自動(dòng)調(diào)整"超時(shí)值"的功能,能很好地適應(yīng)Internet上各種各樣的變化,確保傳輸數(shù)值的正確。因此,從上面我們可以了解到:IP協(xié)議只保證計(jì)算機(jī)能發(fā)送和接收分組資料,而TCP協(xié)議則可提供一個(gè)可靠的、可流控的、全雙工的信息流傳輸服務(wù)。綜上所述,
52、雖然IP和TCP這兩個(gè)協(xié)議的功能不盡相同,也可以分開單獨(dú)使用,但它們是在同一時(shí)期作為一個(gè)協(xié)議來設(shè)計(jì)的,并且在功能上也是互補(bǔ)的。只有兩者的結(jié)合,才能保證Internet在復(fù)雜的環(huán)境下正常運(yùn)行。凡是要連接到Internet的計(jì)算機(jī),都必須同時(shí)安裝和使用這兩個(gè)協(xié)議,因此在實(shí)際中常把這兩個(gè)協(xié)議統(tǒng)稱作TCP/IP協(xié)議。1.4 IP地址及其分類在Internet上連接的所有計(jì)算機(jī),從大型機(jī)到微型計(jì)算機(jī)都是以獨(dú)立的身份出現(xiàn),我們稱它為主機(jī)。為了實(shí)現(xiàn)各主機(jī)間的通信,每臺(tái)主機(jī)都必須有一個(gè)唯一的網(wǎng)絡(luò)地址。就好像每一個(gè)住宅都有唯一的門牌一樣,才不至于在傳輸資料時(shí)出現(xiàn)混亂。Internet的網(wǎng)絡(luò)地址是指連入Inter
53、net網(wǎng)絡(luò)的計(jì)算機(jī)的地址編號(hào)。所以,在Internet網(wǎng)絡(luò)中,網(wǎng)絡(luò)地址唯一地標(biāo)識(shí)一臺(tái)計(jì)算機(jī)。我們都已經(jīng)知道,Internet是由幾千萬臺(tái)計(jì)算機(jī)互相連接而成的。而我們要確認(rèn)網(wǎng)絡(luò)上的每一臺(tái)計(jì)算機(jī),靠的就是能唯一標(biāo)識(shí)該計(jì)算機(jī)的網(wǎng)絡(luò)地址,這個(gè)地址就叫做IP(InternetProtocol的簡(jiǎn)寫)地址,即用Internet協(xié)議語言表示的地址。目前,在Internet里,IP地址是一個(gè)32位的二進(jìn)制地址,為了便于記憶,將它們分為4組,每組8位,由小數(shù)點(diǎn)分開,用四個(gè)字節(jié)來表示,而且,用點(diǎn)分開的每個(gè)字節(jié)的數(shù)值范圍是0255,如,這種書寫方法叫做點(diǎn)數(shù)表示法。IP地址可確認(rèn)網(wǎng)絡(luò)中的任何一個(gè)
54、網(wǎng)絡(luò)和計(jì)算機(jī),而要識(shí)別其它網(wǎng)絡(luò)或其中的計(jì)算機(jī),則是根據(jù)這些IP地址的分類來確定的。一般將IP地址按節(jié)點(diǎn)計(jì)算機(jī)所在網(wǎng)絡(luò)規(guī)模的大小分為A,B,C三類,默認(rèn)的網(wǎng)絡(luò)屏蔽是根據(jù)IP地址中的第一個(gè)字段確定的。1.A類地址A類地址的表示范圍為:55,默認(rèn)網(wǎng)絡(luò)屏蔽為:;A類地址分配給規(guī)模特別大的網(wǎng)絡(luò)使用。A類網(wǎng)絡(luò)用第一組數(shù)字表示網(wǎng)絡(luò)本身的地址,后面三組數(shù)字作為連接于網(wǎng)絡(luò)上的主機(jī)的地址。分配給具有大量主機(jī)(直接個(gè)人用戶)而局域網(wǎng)絡(luò)個(gè)數(shù)較少的大型網(wǎng)絡(luò)。例如舊M公司的網(wǎng)絡(luò)。2. B類地址B類地址的表示范圍為:55,
55、默認(rèn)網(wǎng)絡(luò)屏蔽為:;B類地址分配給一般的中型網(wǎng)絡(luò)。B類網(wǎng)絡(luò)用第一、二組數(shù)字表示網(wǎng)絡(luò)的地址,后面兩組數(shù)字代表網(wǎng)絡(luò)上的主機(jī)地址。3. C類地址C類地址的表示范圍為:55,默認(rèn)網(wǎng)絡(luò)屏蔽為:;C類地址分配給小型網(wǎng)絡(luò),如一般的局域網(wǎng),它可連接的主機(jī)數(shù)量是最少的,采用把所屬的用戶分為若干的網(wǎng)段進(jìn)行管理。C類網(wǎng)絡(luò)用前三組數(shù)字表示網(wǎng)絡(luò)的地址,最后一組數(shù)字作為網(wǎng)絡(luò)上的主機(jī)地址。RFC1918留出了3塊IP地址空間(1個(gè)A類地址段,16個(gè)B類地址段,256個(gè)C類地址段)作為私有的內(nèi)部使用的地址。在這個(gè)范圍內(nèi)的IP地址不能被路
56、由到Internet骨干網(wǎng)上;Internet路由器將丟棄該私有地址。IP地址類別RFC1918內(nèi)部地址范圍A類至U55B類至U55C類至U55使用私有地址將網(wǎng)絡(luò)連至Internet,需要將私有地址轉(zhuǎn)換為公有地址。這個(gè)轉(zhuǎn)換過程稱為網(wǎng)絡(luò)地址轉(zhuǎn)換(NetworkAddressTranslation,NAT),通常使用路由器來執(zhí)行NAT轉(zhuǎn)換。實(shí)際上,還存在著D類地址和E類地址。但這兩類地址用途比較特殊,在這里只是簡(jiǎn)單介紹一下:D類地址稱為廣播地址,供特殊協(xié)議向選定的節(jié)點(diǎn)發(fā)送信息時(shí)用。E類地址保留給將來使用。連接到Internet上的每臺(tái)計(jì)算機(jī),不論其IP地址屬于哪類都與網(wǎng)絡(luò)中的其它計(jì)算機(jī)處于平等地位,因?yàn)橹挥蠭P地址才是區(qū)別計(jì)算機(jī)的唯一標(biāo)識(shí)。所以,以上IP對(duì)址的分類只適用于網(wǎng)絡(luò)分類。在Internet中,一臺(tái)計(jì)算機(jī)可以有一個(gè)或多個(gè)IP地址,就像一個(gè)人可以有多個(gè)通信地址一樣,但兩臺(tái)或多臺(tái)計(jì)算機(jī)卻不能共享一個(gè)IP地址。如果有兩臺(tái)計(jì)算機(jī)的P地址相同,則會(huì)引起異常現(xiàn)象,無論哪臺(tái)計(jì)算機(jī)都將無法正常工作。順便提一下幾類特殊的IP地址:.廣播地址目的端為給定網(wǎng)絡(luò)上的所有主機(jī),一般主機(jī)段為全1.單播地址目的端為指定網(wǎng)絡(luò)上的單個(gè)主機(jī)地址.組播地址目
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)可重復(fù)使用防護(hù)面罩行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 四川省廣安市2025年中考英語真題附答案
- 看誰算得巧(教學(xué)設(shè)計(jì))-2024-2025學(xué)年四年級(jí)下冊(cè)數(shù)學(xué)滬教版
- 2025年中國(guó)可降解PLA吸管行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 中國(guó)防護(hù)文胸行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告(2024-2030)
- 展柜設(shè)計(jì)培訓(xùn)課件
- 2025年中國(guó)鉤螺栓行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 中國(guó)深紅硫銻銀礦行業(yè)調(diào)查建議報(bào)告
- 2025年 浙江省考行測(cè)考試試題附答案
- 中國(guó)數(shù)模轉(zhuǎn)換器行業(yè)市場(chǎng)全景監(jiān)測(cè)及投資前景展望報(bào)告
- 固定動(dòng)火區(qū)管理規(guī)定、通知及審批表
- 《課件鐵路發(fā)展史》課件
- 2025年貴州茅臺(tái)酒廠集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 消渴中醫(yī)護(hù)理查房
- 兒童護(hù)照辦理委托書
- 《中藥調(diào)劑技術(shù)》課件-中藥調(diào)劑的概念、起源與發(fā)展
- 《數(shù)據(jù)中心節(jié)能方法》課件
- 2024年變電設(shè)備檢修工(高級(jí))技能鑒定理論考試題庫(kù)-上(選擇題)
- 循環(huán)系統(tǒng)疾病智慧樹知到答案2024年哈爾濱醫(yī)科大學(xué)附屬第一醫(yī)院
- 2024-2030年中國(guó)激光水平儀行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 部編本小學(xué)語文六年級(jí)下冊(cè)畢業(yè)總復(fù)習(xí)教案
評(píng)論
0/150
提交評(píng)論