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

正文內(nèi)容

程序員復(fù)習(xí)資料全-資料下載頁

2025-04-17 07:45本頁面
  

【正文】 數(shù)據(jù)的物理媒體?! ≡谶@一層,數(shù)據(jù)的單位稱為比特(bit)。  屬于物理層定義的典型規(guī)范代表包括:eia/tia rs23eia/tia rs44rj45等?! ?shù)據(jù)鏈路層(data link layer)  數(shù)據(jù)鏈路層在不可靠的物理介質(zhì)上提供可靠的傳輸。該層的作用包括:物理地址尋址、數(shù)據(jù)的成幀、流量控制、數(shù)據(jù)的檢錯、重發(fā)等。  在這一層,數(shù)據(jù)的單位稱為幀(frame)?! ?shù)據(jù)鏈路層協(xié)議的代表包括:sdlc、hdlc、ppp、stp、幀中繼等?! 【W(wǎng)絡(luò)層(network layer)  網(wǎng)絡(luò)層負(fù)責(zé)對子網(wǎng)間的數(shù)據(jù)包進行路由選擇。此外,網(wǎng)絡(luò)層還可以實現(xiàn)擁塞控制、網(wǎng)際互連等功能。  在這一層,數(shù)據(jù)的單位稱為數(shù)據(jù)包(packet)?! 【W(wǎng)絡(luò)層協(xié)議的代表包括:ip、ipx、rip、ospf等?! 鬏攲?transport layer)  傳輸層是第一個端到端,即主機到主機的層次。傳輸層負(fù)責(zé)將上層數(shù)據(jù)分段并提供端到端的、可靠的或不可靠的傳輸。此外,傳輸層還要處理端到端的差錯控制和流量控制問題。   在這一層,數(shù)據(jù)的單位稱為數(shù)據(jù)段(segment)?! 鬏攲訁f(xié)議的代表包括:tcp、udp、spx等。  會話層(session layer)  會話層管理主機之間的會話進程,即負(fù)責(zé)建立、管理、終止進程之間的會話。會話層還利用在數(shù)據(jù)中插入校驗點來實現(xiàn)數(shù)據(jù)的同步。  會話層協(xié)議的代表包括:netbios、zip(appletalk區(qū)域信息協(xié)議)等?! ”硎緦?presentation layer)  表示層對上層數(shù)據(jù)或信息進行變換以保證一個主機應(yīng)用層信息可以被另一個主機的應(yīng)用程序理解。表示層的數(shù)據(jù)轉(zhuǎn)換包括數(shù)據(jù)的加密、壓縮、格式轉(zhuǎn)換等?! ”硎緦訁f(xié)議的代表包括:ascii、jpeg、mpeg等?! ?yīng)用層(application layer)  應(yīng)用層為操作系統(tǒng)或網(wǎng)絡(luò)應(yīng)用程序提供訪問網(wǎng)絡(luò)服務(wù)的接口?! ?yīng)用層協(xié)議的代表包括:telnet、ftp、snmp等。  集線器hub工作在OSI參考模型的(物理)層。  網(wǎng)卡工作在OSI參考模型的(物理)層。  路由器router工作在OSI參考模型的(網(wǎng)絡(luò))層?! 〗粨Q機Switch工作在OSI參考模型的(數(shù)據(jù)鏈路)層。附)tcp建立連接為什么要三次握手?  tcp是一個面向連接的協(xié)議,在傳送數(shù)據(jù)以前,必須要首先建立一條連接。連接的建立需要經(jīng)過三次握手。為什么要經(jīng)過三次握手呢,每次握手雙方都做了些什么?  1)什么是tcp報文?  tcp報文就是通過tcp協(xié)議發(fā)送的數(shù)據(jù)包,由tcp頭和數(shù)據(jù)段組成。  tcp頭是固定的20個字節(jié),它的格式為:  2)第一次握手做什么?  請求端(客戶端)會向服務(wù)端(被請求端)發(fā)送一個tcp報文,申請打開某一個端口。因為沒有數(shù)據(jù),所以這個報文僅包含一個tcp頭。其中:  SYN=1。當(dāng)建立一個新的連接時, SYN標(biāo)志變1?! ⌒蛱枴P蛱栍脕順?biāo)識從客戶端向服務(wù)端發(fā)送的數(shù)據(jù)字節(jié)流?! 〈藭r客戶端進入SYN_SENT狀態(tài)?! ?)第二次握手做什么?  服務(wù)端收到客戶端的SYN包,也會發(fā)一個只包含tcp頭的報文給客戶端?! CK=1。服務(wù)端確認(rèn)收到信息  確認(rèn)序號??蛻舳诵蛱?1,作為應(yīng)答  SYN=1。因為tcp的連接是雙向的,服務(wù)端作為應(yīng)答的同時請求建立連接?! 〈藭r服務(wù)端進入SYN_RECV狀態(tài)  4)第三次握手做什么?  ACK=1??蛻舳舜_認(rèn)收到信息  確認(rèn)序號。服務(wù)端序號+1,作為應(yīng)答  此時客戶端進入ESTABLISHED狀態(tài),服務(wù)端收到ACK后也會進入此狀態(tài)  可見,客戶端和服務(wù)端都保留了對方的序號,這三次握手缺少任何一步都無法實現(xiàn)這一目標(biāo)。在三次握手過程中,出現(xiàn)了一些中間狀態(tài)?! ?)什么是半連接隊列?  第一次握手完成后,服務(wù)端發(fā)送ACK+SYN包到客戶端,在收到客戶端返回前的狀態(tài)為SYN_RECV,服務(wù)端為此狀態(tài)維護一個半連接隊列。當(dāng)服務(wù)端收到客戶的確認(rèn)包時,刪除該條目,服務(wù)端進入ESTABLISHED狀態(tài)。Listen中的backlog參數(shù)表示這兩個狀態(tài)合的最大值。若客戶端完成第一次握手后不再發(fā)送ACK包,導(dǎo)致服務(wù)端未完成隊列溢出,達(dá)到Dos攻擊的目的?! ?)什么是SYNACK 重傳?  Dos攻擊可以達(dá)到目的的一個重要因素是服務(wù)端在發(fā)送完SYN+ACK包后會等待客戶端的確認(rèn)包,如果等待時間內(nèi)未收到,服務(wù)端會進行首次重傳,等待一段時間仍未收到客戶確認(rèn)包,會進行第二次重傳,直到重傳次數(shù)超過系統(tǒng)規(guī)定的最大值,系統(tǒng)將該連接信息從半連接隊列中刪除。如果系統(tǒng)刪除的頻率小于半連接狀態(tài)的增長頻率,服務(wù)端就無法正常提供服務(wù)。7)Tcp關(guān)閉連接需要四次握手,這又是為什么呢?  這是由tcp半關(guān)閉(harfclose)造成的。既然一個TCP連接是全雙工(即數(shù)據(jù)在兩個方向上能同時傳遞),因此每個方向必須單獨地進行關(guān)閉。即一方發(fā)送一個FIN,另一方收到后發(fā)送一個ACK,這就是所謂的四次握手了?! ?)第一次握手做什么?  客戶端發(fā)送一個FIN(這個客戶端是主動發(fā)起關(guān)閉的一端,與建立連接時的客戶端不一定是同一主機)  此時客戶端進入FIN_WAIT_1狀態(tài)。  9)第二次握手做什么?  服務(wù)端收到FIN,發(fā)回客戶端一個ACK,確認(rèn)序號為收到的序號加1(因為FIN和SYN一樣,會占用一個序號)??蛻舳耸盏紸CK之后會進入FIN_WAIT_2狀態(tài),服務(wù)端會進入CLOSE_WAIT狀態(tài)。  10)第三次握手做什么?  服務(wù)端發(fā)送給客戶端一個FIN。服務(wù)端進入LAST_ACK狀態(tài)?! ?1)第四次握手做什么?  客戶端收到FIN,發(fā)回服務(wù)端一個ACK,確認(rèn)序號為收到的序號加1??蛻舳藭M入TIME_WAIT狀態(tài),2MSL超時后進入CLOSE狀態(tài)。服務(wù)端收到ACK后也會進入CLOSE狀態(tài)?! ∑鋵嵨覀兺ㄋ椎恼f每次握手其實就是發(fā)一次數(shù)據(jù)包的過程。建立連接時雙方共發(fā)送了3個包,關(guān)閉連接時發(fā)送和確認(rèn)的兩次握手決定了一端數(shù)據(jù)流的關(guān)閉,四次握手可以保證兩方都關(guān)閉?! ?2)為什么建立連接是三次握手,而關(guān)閉連接是四次呢?  建立連接時,服務(wù)端可以把應(yīng)答ACK和同步SYN放在一個報文里進行發(fā)送。而關(guān)閉連接時,收到FIN通知僅僅表示對方?jīng)]有數(shù)據(jù)發(fā)送過來了,并不表示自己的數(shù)據(jù)全部發(fā)送給了對方。所以ACK和FIN是分了兩次進行發(fā)送。如果服務(wù)端收到FIN,恰恰自己也沒有數(shù)據(jù)要發(fā),是不是ACK和FIN可以一起發(fā)給客戶端呢,這樣就可以少一次數(shù)據(jù)流了。世界是美好的,經(jīng)典的TCP連接狀態(tài)圖中也考慮到了這種情況,tcp關(guān)閉連接確實是只有三次數(shù)據(jù)流動,服務(wù)端將ACK和FIN放在一個包里進行發(fā)送,但四次握手這個概念卻已經(jīng)根深蒂固無法更改了?! ?3)Tcp的各個狀態(tài)是怎樣的?  客戶端的正常tcp狀態(tài):  CLOSEDSYN_SENT(第1次)ESTABLISHED(第3次)FIN_WAIT_1(第1次)FIN_WAIT_2(第2次)TIME_WAIT(第4次)CLOSED  服務(wù)端的正常tcp狀態(tài):  CLOSEDLISTENSYN_RCVD(第2次)ESTABLISHED(第3次)CLOSE_WAIT(第2次)LAST_ACK(第3次)CLOSED(第4次)  tcp還有其他的非正常狀態(tài),在此不做討論。 1數(shù)組和鏈表的優(yōu)缺點  數(shù)組,在內(nèi)存上給出了連續(xù)的空間。鏈表,內(nèi)存地址上可以是不連續(xù)的,每個鏈表的節(jié)點包括原來的內(nèi)存和下一個節(jié)點的信息(單向的一個,雙向鏈表的話,會有兩個)?! ?shù)組優(yōu)于鏈表的:  A. 內(nèi)存空間占用的少,因為鏈表節(jié)點會附加上一塊或兩塊下一個節(jié)點的信息?! 〉菙?shù)組在建立時就固定了。所以也有可能會因為建立的數(shù)組過大或不足引起內(nèi)存上的問題?! . 數(shù)組內(nèi)的數(shù)據(jù)可隨機訪問,但鏈表不具備隨機訪問性。這個很容易理解,數(shù)組在內(nèi)存里是連續(xù)的空間,比如如果一個數(shù)組地址從100到200,且每個元素占用兩個字節(jié),那么100200之間的任何一個偶數(shù)都是數(shù)組元素的地址,可以直接訪問?! ℃湵碓趦?nèi)存地址可能是分散的。所以必須通過上一節(jié)點中的信息找能找到下一個節(jié)點。  C. 查找速度上。這個也是因為內(nèi)存地址的連續(xù)性的問題,不羅索了?! ℃湵韮?yōu)于數(shù)組的:  A. 插入與刪除的操作。如果數(shù)組的中間插入一個元素,那么這個元素后的所有元素的內(nèi)存地址都要往后移動。刪除的話同理。只有對數(shù)據(jù)的最后一個元素進行插入刪除操作時,才比較快。鏈表只需要更改有必要更改的節(jié)點內(nèi)的節(jié)點信息就夠了。并不需要更改節(jié)點的內(nèi)存地址。  B. 內(nèi)存地址的利用率方面。不管你內(nèi)存里還有多少空間,如果沒辦法一次性給出數(shù)組所需的要空間,那就會提示內(nèi)存不足,磁盤空間整理的原因之一在這里。而鏈表可以是分散的空間地址。  C. 鏈表的擴展性比數(shù)組好。因為一個數(shù)組建立后所占用的空間大小就是固定的,如果滿了就沒法擴展,只能新建一個更大空間的數(shù)組。而鏈表不是固定的,可以很方便的擴展。1C++操作符優(yōu)先級:  記憶方法:  去掉一個最高的,去掉一個最低的,剩下的是一、二、三、賦值。雙目運算符中,順序為算術(shù)、關(guān)系和邏輯,移位和邏輯位插入其中。摘自《C語言程序設(shè)計實用問答》  問題:如何記住運算符的15種優(yōu)先級和結(jié)合性?  解答:C語言中運算符種類比較繁多,優(yōu)先級有15種,結(jié)合性有兩種。  如何記憶兩種結(jié)合性和15種優(yōu)先級?下面講述一種記憶方法?! 〗Y(jié)合性有兩種,一種是自左至右,另一種是自右至左,大部分運算符的結(jié)合性是自左至右,只有單目運算符、三目運算符的賦值運算符的結(jié)合性自右至左?! ?yōu)先級有15種,記憶方法如下:  記住一個最高的:構(gòu)造類型的元素或成員以及小括號?! ∮涀∫粋€最低的:逗號運算符。  剩余的是一、二、三、賦值——意思是單目、雙目、三目和賦值運算符?! ≡谥T多運算符中,又分為:算術(shù)、關(guān)系、邏輯。  兩種位操作運算符中,移位運算符在算術(shù)運算符后邊,邏輯位運算符在邏輯運算符的前面?! ≡偌?xì)分如下:  算術(shù)運算符*,/,%高于+?! £P(guān)系運算符中:,=,和=高于==,!=?! ∵壿嬤\算符中,除了邏輯求反(!)是單目外,邏輯與(amp。amp。)高于邏輯或(||)?! ∵壿嬑贿\算符中,除了邏輯按位求反(~)外,按位與(amp。)高于按位半加(^),高于按位或(|)。Prece denceOperatorDescriptionExampleOver loadableAssociativity1::Scope resolution operatorClass::age = 2。noleft to right2()Function callprintf(“Hello world\n”)。yesleft to right()Member initalizationc_tor(int x, int y) : _x(x), _y(y * 10) {}yes[]Array accessarray[4] = 2。yesMember access from a pointerptrage = 34。yes.Member access from an object = 34。no++Postincrementfor (int i = 0。 i 10。 i++) cout i。yesPostdecrementfor (int i = 10。 i 0。 i) cout i。yesdynamic_castRuntimechecked type conversionYamp。 y = dynamic_castYamp。(x)。nostatic_castUnchecked type conversionYamp。 y = static_castYamp。(x)。noreinterpret_castReinterpreting type conversionint const* p = reinterpret_castint const*(0x1234)。noconst_castCast away/Add constnessint* q = const_castint*(p)。notypeidGet type informationstd::type_info constamp。 t = typeid(x)。no3!Logical negationif (!done) ...yesright to leftnotAlternate spelling for !~Bitwise plementflags = ~flags。yesplAlternate spelling for ~++Preincrementfor (i = 0。 i 10。 ++i) cout i。yesPredecrementfor (i = 10。 i 0。 i) cout i。yesUnary minusint i = 1。yes+Unary plusint i = +1。yes*Dereferenceint data = *intPtr。yesamp。Address ofint *intPtr = amp。data。yessizeofSize (of the type) of the operand in bytessize_t s = sizeof(int)。nonewDynamic memory allocationlong* pVar = new long。yesnew []Dynamic memory allocation of arraylong* array = new long[20]。yesdeleteDeallocating the memorydelete pVar。yesdelete []Deallocating the memory of arraydelete [] array。yes(type)Cast to a given typeint i = (int)floatNum。yes4*Member pointer selectorptr*var = 24。yesleft to right.*Member object selectorobj.*var = 24。no5*Multiplicationint i = 2 * 4。yesleft to right/Divisionfl
點擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1