Tcp 通過下列方式提供可靠性:
tcp 是面向連接,可靠的字節(jié)流服務(wù)。
字節(jié)流服務(wù):兩個應(yīng)用程序通過tcp 連接,tcp 不在字節(jié)中插入記錄標識符,我們將這種為字節(jié)流服務(wù)。
1)將應(yīng)用數(shù)據(jù)分割為tcp 認為最合適發(fā)送的數(shù)據(jù)塊;
2)超時重傳:當tcp 發(fā)出一個段后,他啟動一個定時器,等待目的端確認收到這個報文段。若不能及時收到一個確認,將重發(fā)這個報文段。
3)當tcp 收到發(fā)自tcp 鏈接另一端的數(shù)據(jù)時,它將發(fā)送一個確認(對于收到的請求,給
出確認響應(yīng))。這個確認不是立即發(fā)送,通常將推遲幾分之一秒(之所以推遲,可能是要對包做完校驗);
4)若tcp 收到包,校驗出包有錯,丟棄報文段,不給出響應(yīng),tcp 發(fā)送端會超時重傳;
5)對于失序數(shù)據(jù)進行重新排序,然后交給應(yīng)用層(tcp 報文段作為ip 數(shù)據(jù)報進行傳輸,而ip 數(shù)據(jù)報的到達會失序,因此tcp 報文段的到達也可能失序。若必要,tcp 將對收到的數(shù)據(jù)進行重新排列,以正確的順序交給應(yīng)用層)。
6)對于重復(fù)數(shù)據(jù),直接丟棄。
7)tcp 可以進行流量控制,防止較快主機致使較慢主機的緩沖區(qū)溢出。
Tcp?對字節(jié)流的內(nèi)容不做任何解釋,tcp?不知道傳輸?shù)淖止?jié)流數(shù)據(jù)是二進制數(shù)據(jù)還是?ascii字符或其他類型數(shù)據(jù),對字節(jié)流的解釋由tcp 連接雙方的應(yīng)用層。
https 其實是由兩部分組成:http+ssl/tls,也就是在http 上又加了一層處理加密信息的模塊,服務(wù)端和客戶端的信息傳輸都會通過tls 加密,傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。
加解密過程:
1)客戶端發(fā)起https 請求(就是用戶在瀏覽器里輸入一個https 網(wǎng)址,然后連接到server的443 端口)
2)服務(wù)端的配置(采用https?協(xié)議的服務(wù)器必須要有一塔數(shù)字證書,可以自己制作,也可以向組織申請,這套證書就是一對公鑰和私鑰)。
3)傳輸證書(這個證書就是公鑰,只是包含了很多信息)
4)客戶端解析證書(由客戶端tls 完成,首先驗證公鑰是否有效,若發(fā)現(xiàn)異常,則彈出一個警示框,提示證書存在問題,若無問題,則生成一個隨機值,然后用證書對隨機值進行加密)
5)傳輸加密信息(這里傳輸?shù)氖羌用芎蟮碾S機值,目的是讓服務(wù)端得到這個隨機值,以后客戶端和服務(wù)端的通信就可以通過這個隨機值來進行加密了)
6)服務(wù)端解密信息(服務(wù)端用私鑰解密后得到了客戶端傳來的隨機值,then 把內(nèi)容通過該值進行對稱加密。所謂對稱加密就是,將信息和私鑰通過某種算法混在一起,這樣除非知道私鑰,不然無法獲取內(nèi)容,而正好客戶端和服務(wù)端都知道這個私鑰,所以只要加密算法夠彪悍,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全)
7)傳輸加密的信息
8)客戶端解密信息,用隨機數(shù)來解。
問:在客戶端抓包抓到的是加密的還是沒加密的?不知道是哪個面試官問的,我就亂說是加密的,然后面試官說錯了,是沒有加密的
tcp 與udp 的差別在適用性上,并非在與速度上,泛泛地說誰比誰快都是不恰當?shù)摹?/p>
tcp:http、ftp、pop3、telnet、smtp udp:dns、rip、tftp
使用端口號來區(qū)分應(yīng)用進程。
Tcp 保活功能,主要為服務(wù)器應(yīng)用程序提供,服務(wù)器應(yīng)用程序需要知道客戶主機是否崩潰,從而可以代表客戶使用資源.tcp 保護功能是探測長連接存活狀況。
如果一個給定的連接,在兩個小時內(nèi)沒有任何的動作,則服務(wù)器就向客戶發(fā)送一個探測報文段,客戶主機必須處于以下四個狀態(tài)之一:1)客戶主機依然正常運行,并從服務(wù)器可達,客戶的tcp 響應(yīng)正常,而服務(wù)器也知道對方是正常的,服務(wù)器在兩個小時后將保活定時器復(fù)位。2)客戶主機已經(jīng)崩潰,并且關(guān)閉或正在重新啟動。在任何一種情況下,客戶的tcp 都沒有響應(yīng),服務(wù)器不能收到對探測的響應(yīng),并在75s 后超時,服務(wù)器總共發(fā)送10 個這樣的探測,每個間隔75s。若服務(wù)器沒有收到一個響應(yīng),他就認為客戶主機已經(jīng)關(guān)閉,并終止連接。3)客戶主機崩潰并已重新啟動,服務(wù)器將收到一個對其?;钐綔y的響應(yīng),這個效應(yīng)是一個復(fù)位,使得服務(wù)器終止這個鏈接。4)客戶機正常運行,但服務(wù)器不可達,和2)類似。
Tcp?的keep-alive?是檢查當前tcp?是否還活著;http?的keep-alive?是讓一個tcp?連接活多久,他們是不同層次的概念。
Tcp:1)流量控制:防止較快主機使較慢主機緩沖區(qū)溢出,是點對點;2)擁塞控制:全局性,防止過多的數(shù)據(jù)注入網(wǎng)絡(luò)。
tcp 采用滑動窗口進行流量控制,滑動窗口大小可變,窗口大小的單位是字節(jié)。
發(fā)送窗口在連接建立時由雙方確定,但在通信過程中,接收端可以根據(jù)自己的資源情況,隨時動態(tài)的調(diào)整對方的發(fā)送窗口上限制。
接收端窗口:這是接收端根據(jù)其目前的接收緩存大小所許諾的最新窗口值,是來自接收端的流量控制。接收端將此窗口值放在tcp 報文的首部中的窗口字段,傳送給發(fā)送端,是來自接收端的流量控制。
擁塞控制:慢開始、擁塞避免、快重傳、快恢復(fù)。
慢開始:由小到大逐漸增大發(fā)送端的擁塞窗口數(shù)值。
擁塞窗口:這是發(fā)送端根據(jù)自己估計的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來自發(fā)送端的流量控制。
當網(wǎng)絡(luò)發(fā)生擁塞時,路由器就會丟掉分組,因此,只要發(fā)送端沒有按時收到應(yīng)當?shù)竭_的確認報文ack,就可認為網(wǎng)絡(luò)出現(xiàn)了擁塞。
發(fā)送窗口上限=min{接收窗口,擁塞窗口}。
為了防止擁塞,窗口cwnd 的增長引起網(wǎng)絡(luò)擁塞,還需要慢開始門限ssthresh。
當cwndssthresh, 使用擁塞避免算法;當cwnd=ssthresh,既可用慢開始算法也可用擁塞避免算法。
無論是慢開始還是擁塞避免,只要發(fā)送端發(fā)現(xiàn)網(wǎng)絡(luò)阻塞,就將慢開始門限設(shè)為出現(xiàn)擁塞時的發(fā)送窗口值的一半,然后擁塞窗口為一,并執(zhí)行慢開始算法。這樣做的目的是迅速減少主機發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時間把隊列中積壓的分組處理完畢。
快重傳算法規(guī)定:發(fā)送端只要一連收到三個重復(fù)ack,即可斷定有分組丟失,就應(yīng)該立即重傳丟失的報文,而不需要等待為該報文設(shè)置的重傳計時器超時。
與慢開始不同,擁塞窗口不設(shè)為1,,而設(shè)為慢開始門限+3*mss(mss:最大報文段)。
TCP 和UDP——tcp:面向連接,提供可靠的服務(wù),無重復(fù)、無丟失、無差錯,面向字節(jié)流,只能是點對點,首部20 字節(jié),全雙工。
UDP:無連接,盡最大努力交付,面向報文,支持一對一、一對多、多對多,首部8 字節(jié).
怎么用udp?實現(xiàn)tcp:由于在傳輸層udp?已經(jīng)是不可靠的,那就要在應(yīng)用層自己實現(xiàn)一些保證可靠傳輸?shù)臋C制,簡單來說,要使用udp?來構(gòu)建可靠的面向連接的數(shù)據(jù)傳輸,就要實現(xiàn)類似于tcp?的超時重傳(定時器),擁塞控制(滑動窗口),有序接收(添加包序號),應(yīng)答確認(ack?和seq)。目前已經(jīng)有了實現(xiàn)udp?可靠運輸?shù)臋C制——udt:主要目的高速廣域網(wǎng)海量數(shù)據(jù)傳輸,他是應(yīng)用層協(xié)議。
正向代理:我是一個用戶,我訪問不了某網(wǎng)站,但是我能訪問一個代理服務(wù)器,這個代理服務(wù)器呢,他能訪問那個我不能訪問的網(wǎng)站,于是我先連上代理服務(wù)器,告訴他我需要哪個無法訪問的網(wǎng)站的內(nèi)容,代理服務(wù)器取回來給我。server 不知道client。
反向代理:client?不知道server,并不是URL?中請求的那個資源,而是不知道從什么地方來的。以代理服務(wù)器來接收internet?上的請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet?上請求的客戶,此時代理服務(wù)器對外就表現(xiàn)為一個服務(wù)器。1)保證內(nèi)網(wǎng)安全、2)負載均衡,nginx?通過proxy-pass-http?配置代理站點,upstream 實現(xiàn)負載均衡。
正向代理作用:1)訪問原來無法訪問的資源。2)可以做緩存,加速訪問資源。3)但代理可以記錄用戶訪問記錄(上網(wǎng)行為管理),對外隱藏用戶信息。4)客戶端訪問權(quán)限,上網(wǎng)進行驗證。
域名解析過程:1)在瀏覽器中輸入?www.baidu.com,操作系統(tǒng)會先檢查自己本地的?hosts文件是否有這個網(wǎng)址映射關(guān)系,若有就調(diào)用這個ip?地址映射,完成解析。2)若hosts?沒有,則找本地dns?緩存。3)若hosts?與本地dns?緩存都沒有,則找tcp/ip?參數(shù)中設(shè)置的首選dns 服務(wù)器,在此我們叫它本地dns?服務(wù)器,此服務(wù)器收到查詢時,若要查詢的域包含在本地配置資源中,則返回。4)若要查詢的域名不是本地dns?解析,但該服務(wù)器已經(jīng)緩存了此網(wǎng)址映射關(guān)系,則調(diào)用這個ip?地址映射。5)若本地資源和緩存里都沒有,則根據(jù)本地dns?服務(wù)器的設(shè)置(是否設(shè)置轉(zhuǎn)發(fā)器)進行查詢--1)未用轉(zhuǎn)發(fā)模式,本地dns?把請求發(fā)給根dns?服務(wù)器, 根dns?收到請求后會判斷這個域名是誰來授權(quán)管理,則會返回一個負責的頂級域名服務(wù)器的ip,本地dns?服務(wù)器收到ip?后,將到聯(lián)系負責.com?的這個服務(wù)器,若這臺負責.com?的服務(wù)器無法解析,則找下一級dns?服務(wù)器的ip?給主機,依次下去。2)若用轉(zhuǎn)發(fā)方式,dns?服務(wù)器就把請求轉(zhuǎn)發(fā)給上一級dns?服務(wù)器,由上一級服務(wù)器進行解析,上一級服務(wù)器若不能解析,
再上一級,以此循環(huán)。不管轉(zhuǎn)發(fā)還是不轉(zhuǎn)發(fā),都把結(jié)果給本地dns 服務(wù)器,再由本地dns
服務(wù)器給客戶機。
主機向本地域名服務(wù)器查詢一般是遞歸查詢,遞歸查詢,就是若主機所詢問的本地域名服務(wù)器不知道查詢域名的ip?地址,則本地域名服務(wù)器就以客戶的身份向其他根域名服務(wù)器發(fā)出查詢請求,而不是讓主機自己進行下一步查詢,所以遞歸查詢返回的結(jié)果,要么是ip 地址,要么報錯。
本地域名服務(wù)器向根dns 服務(wù)器的查詢是迭代查詢,當根域名服務(wù)器收到本地dns 服務(wù)器的請求時,要么返回一個ip,要么告訴本地dns 服務(wù)器,你下一步需要向哪一個dns 服務(wù)器查詢,然后讓本地服務(wù)器自己查詢。
http?請求過程——當我們在瀏覽器輸入 www.baidu.com,然后回車之后的詳解。1)域名解析(域名www.baidu.com?變?yōu)閕p?地址)。2)發(fā)起tcp?的三次握手,建立tcp?連接。瀏覽器會以一個隨機端口(1024-65535)向服務(wù)端的web?程序80?端口發(fā)起tcp?的連接.這個請求(原始的http?請求,經(jīng)過原始的tcp/ip?四層模型層層封裝),到達服務(wù)器端后,進入網(wǎng)卡,然后進入內(nèi)核的協(xié)議棧(一層一層撥開),然后到達web?應(yīng)用程序,最終建立了tcp/ip 鏈接。3)建立tcp?連接后發(fā)起http?請求。4)服務(wù)器響應(yīng)http 請求,客戶端得到html?代碼。服務(wù)器web?應(yīng)用程序收到http?請求后,就開始處理請求,處理之后就返回給瀏覽器html 文件。5)瀏覽器解析html?代碼,并請求html?中的資源。6)瀏覽器對頁面進行渲染,并呈現(xiàn)給用戶。
https 若在瀏覽器端抓包,是可以看到數(shù)據(jù)的,并沒有加密,抓到的是加密之前的。
DNS 即使用tcp,又使用udp。
a 發(fā)送給b 一個信息,但是a 不承認他發(fā)送了,防止這個可用數(shù)字簽名。
http:一個http 的請求包含三個方面,請求方法-uri-協(xié)議/版本,請求頭,實體;http
響應(yīng)也包含三個方面,協(xié)議-狀態(tài)碼-描述,響應(yīng)頭,響應(yīng)實體。
用memoryanalyzer 看OOM。
http 請求報文由請求行請求頭部空行和請求數(shù)據(jù)四部分。請求行:請求方法-url-http 協(xié)議版本。請求頭:通知服務(wù)器有關(guān)客戶端請求的信息,每行一個鍵值,鍵值用“;”分開。?
DNS?劫持:通過某些手段獲得某域名的解析控制權(quán),修改此域名的解析結(jié)果,導致對該域名的訪問由原ip?地址轉(zhuǎn)入到修改后的指定ip。其結(jié)果是對特定的網(wǎng)址不能訪問或訪問的是假網(wǎng)址。
當對網(wǎng)絡(luò)通訊質(zhì)量有要求的時候,tcp,QQ 文件;當對網(wǎng)絡(luò)通訊質(zhì)量要求不高,udp,
qq 消息。
驗證證書是否有效。1)驗證證書是否在有效期內(nèi):證書中會包含證書的有效期的起始時間和結(jié)束時間。2)驗證證書是否被吊銷。被吊銷的證書是無效的,驗證吊銷有兩種:CRL 和OCSP。CRL:吊銷證書列表,證書被吊銷后會被記錄在CRL?中,CA 定期發(fā)布CRL,應(yīng)用程序可以依靠CRL?來驗證證書是否被吊銷。有兩個缺點:1)可能會很大,下載很麻煩。2)有滯后性,就算證書被吊銷了,應(yīng)用也只能等到發(fā)布最新的CRL??才能知道。OCSP:在線證書狀態(tài)檢查協(xié)議,應(yīng)用按照標準發(fā)送一個請求,對某張證書進行查詢,之后服務(wù)器返回證書狀態(tài)。OCSP?可認為是即時的(實際實現(xiàn)中可能有延遲)。3)驗證證書上是否有上級CA?簽名:每一級證書都是由上一級CA?證書簽發(fā)的,上級CA?證書還可能有上級,最后會找到根證書,根證書即自簽證書,自己簽自己。以上三點只要有一個沒通過,這張證書就是無效的,不該信任。
數(shù)據(jù)鏈路層協(xié)議:ppp、cdma/cd。
短鏈接一般只會在client/server 間傳遞一次讀寫操作。
可以把channel 看作io 流,但它和io 流相比還有一些不同:1)channel 是雙向的,既可以讀又可以寫,io 流是單向的;2)channel 可以進行異步讀寫;3)對channel 的讀寫必須經(jīng)過Buffer 對象。
Filechannel :從文件讀取數(shù)據(jù)的。Datagramchannel:讀寫udp 的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)。
Socketchannel:讀寫tcp 網(wǎng)絡(luò)協(xié)議數(shù)據(jù)。Serversocketchannel:可以監(jiān)聽tcp 連接。
從文件讀取數(shù)據(jù)分三步:1)從FileInputStream 中獲取channel;2)創(chuàng)建Buffer;3)從
channel 中讀數(shù)據(jù)到Buffer。通過nio 進行文件復(fù)制的代碼:
網(wǎng)絡(luò)編程nio(異步io)異步io 是一種沒有阻塞的讀寫數(shù)據(jù)的方法。selector 是一個對象,可以注冊到很多channel,監(jiān)聽各個channel 上發(fā)生的事情,并且能夠根據(jù)事件情況決定channel 讀寫,這樣通過一個線程管理多個channel,就可以處理大量網(wǎng)絡(luò)連接。
有了selector,可以用一個線程處理所有channel。線程之間的切換對操作系統(tǒng)來說,代價是很高的,并且每個線程也會占用一定的系統(tǒng)資源,所以對系統(tǒng)來說,線程越少越好(但若CPU 有多個內(nèi)核,不使用多任務(wù)是在浪費CPU 能力)。
1)Selector selector=Selector.open();
2)注冊Channel 到selector 上
channle.configureBlocking(false)
SelectionKey key=channel.register(selector, SelectionKey.OP_READ);
注:注冊到server 上的channel 必須設(shè)置為異步模式,否則異步io 無法工作,這就意味著我們不可以把一個Filechannel 注冊到selector 上。因為Filechannel 沒有異步模式,但
socketchannel 有異步模式。
register?方法的第二個參數(shù),它是一個“interst?set”,意思是注冊的?selector?對?channel中的哪些事件感興趣。事件類型有四種:read、write、connect、accept。通道觸發(fā)一個事件指該事件已經(jīng)Ready,所有某個channel?成功連接到另一個服務(wù)器稱為connect??ready。一個
Serversocketchannel?準備好接收新連接稱為connect?ready。一個數(shù)據(jù)可讀的通道可以說read
ready。等待寫數(shù)據(jù)的通道write ready。
Write: SelectionKey.OP_WRITE Read: SelectionKey.OP_READ Accept: SelectionKey.OP_ACCEPT Connect: SelectionKey.OP_CONNECT
若對多個事件感興趣,可寫為(用or):
Int interest=SelectionKey.OP_READ|SelectionKey.OP_ACCEPT
SelectionKey 表示通道在selector 上的這個注冊,通過SelectionKey 可以得到selector 和注冊的channel.selector 感興趣的事情。
一旦向selector 上注冊了一個或多個通道,就可以調(diào)用重載的select 方法返回你所感興趣的事件(比如連接、接受、讀、寫)已經(jīng)準備就緒的通道。比如若你對Read Ready 感興趣,select 方法讀事件已經(jīng)就緒的通道,select 方法返回的int 值,表示有多少通道已經(jīng)就緒。?Int select():阻塞到至少有一個通道在你注冊的事件上就緒;Int select(long timeout):與
select()一樣,只是最長只會阻塞timeout?ms;Int?selectnow(),不阻塞,不管什么通道就緒都立即返回,若自從前一次選擇操作后,沒有通道變?yōu)榭蛇x的,則直接返回0。
Buffer?的三個屬性:1)capacity:buffer?有一個固定大小,也就是capacity,你只能往里面寫capacity?個byte、long、char?等類型;2)position:當你寫數(shù)據(jù)時,position?表示當前位置,即下一個可以開始寫的位置。初始時position?為0,當寫入一個數(shù)據(jù)時,position?會向前移動到下一個可插入數(shù)據(jù)的buffer?中,position?最大為capacity-1;當讀數(shù)據(jù)時,也就是從某個特定位置開始讀,應(yīng)當將position?從寫模式切換到讀模式,position?被置為0。3)limit:在寫模式下,limit?表示你最多能寫多少數(shù)據(jù),此時limit=capacity;在讀模式中,limit?表示你最多能讀到多少數(shù)據(jù)。所以當切換到讀模式時,limit?被設(shè)置為寫模式下position。
Socketchannel:可以通過以下兩種方式創(chuàng)建Socketchannel:1)打開一個Socketchannel,
并連到互聯(lián)網(wǎng)上一臺服務(wù)器;2)一個新連接到達serverSocketchannel 時,會創(chuàng)建一個
Socketchannel。
打開Socketchannel 方式:1)Socketchannel socketchannel=Socketchannel.open(); socketchannel,connect(new?InetSocketAddres(s“www.baidu.com”,80)).關(guān)閉?Socketchannel
Socketchannel.close();int?eof=Socketchannel.read(ByteBuffer);eof:表示讀了多少字節(jié)進buffer
中,若為-1,則表示已經(jīng)讀到流的末尾。
ServerSocketchannel serverSocketchannel=ServerSocketchannel.open(); serverSocketchannel.socket().bind(new InetSocketAddress(900));
Io:面向流、阻塞、無選擇器;nio:面向緩沖,非阻塞io,有選擇器;
一個url 對象,其構(gòu)造函數(shù)new URL(“String s”),比如new URL(“http://www.baidu.com”),該字符串對于的ip 為202.108.33.94,判斷URL 對象是否相等:若兩個主機名可以解析為同一個ip 地址,則認為兩個主機相同,即url 對象相同;若有一個主機名無法解析,但兩個主機名相等(不區(qū)分大小寫),or 兩個主機名都為null,則也認為這兩個主機相等。
例子:
String[] s={“http://www.baidu.com”,”www.sina.com.cn”,”www.uestc.edu.cn”},他們對象的ip
分別為203.109.00.93?202.108.33.94 203.109.00.93
U1=new URL(s[0]) U2=new URL(s[1]) U3=new URL(s[2])
則?u1.equals(u2)為?false?因為?ip?不同 u1.equals(u3)為?true?因為?ip?相同
Object?的clone?方法public?Object?clone() throws?CloneNotSupportedException?創(chuàng)建并返回此對象的一個副本對于任意對象x,則x.clone()!=x?是true?x.clone().getClass()==x.getClass()是
true,這些并非必須滿足的條件
首先,若此對象的類不能實現(xiàn)cloneable 接口,則會拋出CloneNotSupportedException (注:
all 數(shù)組都被視為實現(xiàn)了cloneable 接口)否則,此方法會創(chuàng)建次對象的類的新實例,嚴格使用此對象相應(yīng)字段的內(nèi)容初始化該對象的all 字段;這些字段的內(nèi)容沒有被自我復(fù)制,所以此方法的執(zhí)行時該對象的“淺表復(fù)制”,而不是“深層復(fù)制”操作。
Object 類沒有實現(xiàn)cloneable 接口,所以在類為Object 的對象上調(diào)用clone 方法時會拋出異常。
Cloneable 是一個標記接口。
Web service:是一種跨編程語言和跨操作系統(tǒng)的遠程調(diào)用技術(shù),就是說服務(wù)器采用java 編寫,客戶端程序可以采用其他編程語言編寫,且客戶端和服務(wù)器程序可以在不同操作系統(tǒng)上運行。
所謂遠程調(diào)用,就是一臺計算機a 上的一個程序可以調(diào)用另一臺計算機上的一個對象的方法,比如天氣預(yù)報系統(tǒng)把服務(wù)以web service 服務(wù)的形式暴露出來,讓第三方程序可以調(diào)用這些服務(wù)功能。
從表面上看,web service 就是一個應(yīng)用程序向外界暴露出一個能通過web 進行調(diào)用的
api;從深層次看,他定義了應(yīng)用程序如何在web 上實現(xiàn)互操作性,是一套標準。
物理-數(shù)據(jù)鏈路-網(wǎng)絡(luò)-傳輸-會話-表示-應(yīng)用。
URL?中可以存在中文嗎?
A:可以,先將中文進行編碼,tomcat 默認解碼為iso8859-1,這樣就會出現(xiàn)亂碼,我們可以再用iso8859-1 進行編碼,再用指定碼表解碼(post 和get 都可以)。對于post,可以使用
requset 的setCharacterEncodeing 方法設(shè)置指定的解碼表。
現(xiàn)在需要測試系統(tǒng)的高并發(fā)性能,如何模擬高并發(fā)?
使用cyclicbarrier,cyclicbarrier 初始化時規(guī)定一個數(shù)目,then 計算調(diào)用了cyclicbarrier.await()
進入等待的線程數(shù),當線程數(shù)達到這個數(shù)目時,所有進入等待狀態(tài)的線程將被喚醒并繼續(xù)。
Cyclic 就像他的名字一樣,可看成是一個屏障,所有線程必須到達后才可以一起通過這個屏障。
NAT:網(wǎng)絡(luò)地址轉(zhuǎn)換,常用于私有地址與公有地址的轉(zhuǎn)換,以解決ip 地址匱乏的問題。
A:1-127 B:128-191 C:192-223
138.96.0.0/16 其中16 表示子網(wǎng)掩碼1 的個數(shù),則其子網(wǎng)掩碼為225.225.0.0,1 為網(wǎng)絡(luò)號,
0 為主機號。
在一個ip 數(shù)據(jù)包到達目的之前,他不可能重組,但是可以分散為碎片。
win2000 os 中1)配置ip 地址的命令是ipconfig2)用ping 來測試本機是否安裝了tcp/ip 協(xié)議
3)列出本機當前可建立的鏈接netStat-a
ping 基于什么協(xié)議?答案:icmp,是tcp/ip 協(xié)議族的額自協(xié)議,在網(wǎng)絡(luò)層,用于在ip 主機、路由器之間傳輸控制消息。控制消息是指網(wǎng)絡(luò)通不通,主機是否可達、路由是否可用等網(wǎng)絡(luò)本身的消息。這些控制信息雖然并不傳輸用戶數(shù)據(jù),但是對于用戶數(shù)據(jù)的傳遞起著重要的作用。Ping,tracert 都是基于icmp??梢岳胦s 規(guī)定的icmp 數(shù)據(jù)包的最大尺寸不超過
64k,向主句發(fā)起ping?of?deathgongji?該攻擊原理:若icmp?數(shù)據(jù)包的尺寸超過64k?上限,主機就會出現(xiàn)內(nèi)存分配錯誤導致tcp/ip?堆棧奔潰,致使主機死機。防范方法:1)在路由器上對icmp?數(shù)據(jù)包進行帶寬限制,將icmp?占用的帶寬控制在一定的范圍,這樣即使有icmp?攻擊,他所占用的帶寬也非常有限。2)在主機上限制,設(shè)置icmp?數(shù)據(jù)包的處理規(guī)則,最好是設(shè)定拒絕all?的icmp?數(shù)據(jù)包。
每經(jīng)過一個路由器,ttl 減1,到0 時丟棄。
應(yīng)用網(wǎng)關(guān)1)可以是一個代理服務(wù)器2)可以被用來鏈接公司內(nèi)部網(wǎng)絡(luò)應(yīng)用和公司外部網(wǎng)絡(luò)應(yīng)用3)可以是防火器構(gòu)造的一部分。
0 和127 不作為A 類地址。子網(wǎng)掩碼只有一個作用,就是將某個ip 地址劃分為網(wǎng)絡(luò)地址和主機地址兩部分。兩臺計算機各自的ip 地址和子網(wǎng)掩碼進行與操作運算后,若得出相同結(jié)果,則說明這兩臺計算機處于同一個子網(wǎng)中。
1)使用usb2.0?閃存盤,往usb?閃存盤上拷貝文件的數(shù)據(jù)傳輸效率。2)使用100Mb/s 以太網(wǎng),在局域網(wǎng)內(nèi)拷貝大文件時網(wǎng)絡(luò)的傳輸效率。3)使用一輛卡車拉1000?塊單塊1TB 裝滿數(shù)據(jù)的硬盤,以100km/h?的速度從北京到天(100km)一趟所等價的數(shù)據(jù)傳輸寬帶。4)使用電腦播放MP3,電腦的pci?總線到聲卡的數(shù)據(jù)傳輸速率傳輸速率排行:4<1<2<3?普通
U??盤寫數(shù)據(jù)約為6MB/s=48Mb/s;100Mb??以太網(wǎng)的速率為100Mb/s; 卡車拉硬盤
1000*1000*B/3600=2222Mb/s;MP3?在256kb/s?碼率下也有平均只有1min2MB?,所以約
0.3Mb/s.
History 對象是包含用戶訪問過的URL,是Window 對象的一部分,他的幾個方法1)
length:返回瀏覽器歷史列表中的URL 數(shù)量。2)back:加載history 列表中的前一個URL。3)
forward:加載history 列表中的下一個URL。4)go:加載history 列表中的某個具體頁面。
超鏈接的下劃線默認是有的,去掉的方法是a{text-decoration:none}
簡單網(wǎng)絡(luò)管理協(xié)議SNMP 協(xié)議的組成部分:SNMP 本身+管理信息結(jié)構(gòu)SMI+管理信息庫
MIB,SNMP 報文組成部分:版本+首部+安全參數(shù)+SNMP 報文的數(shù)據(jù)部分。
Dhcp 向服務(wù)器要ip 地址
發(fā)現(xiàn)階段:dhcp?Client?尋找?dhcp?服務(wù)器的過程,收到?discovery?的?server?都會回復(fù)。Offer:表示該服務(wù)器可以給他提供ip?地址。Request:客戶端選擇一個server?來要ip。Ack:把ip 給客戶端。
FTP?端口?20:傳輸數(shù)據(jù) 21:傳輸控制信息。
DNS 服務(wù)中資源記錄類型PTR A CNAME
中斷方式一般用于處理隨機出現(xiàn)的服務(wù)請求。DMA 方式數(shù)據(jù)傳送不需要cpu 控制。DMA 和cpu 必須同時使用總線。
SMTP:郵件服務(wù)器之間傳遞報文。Mac?48bit ipv4:32 ipv6:128
BGP 是在自治系統(tǒng)之間的路由協(xié)議,當前英特網(wǎng)路由選擇協(xié)議分為內(nèi)部網(wǎng)關(guān)協(xié)議和外部網(wǎng)關(guān)協(xié)議。
許可協(xié)議:許可的目的是向使用你產(chǎn)品的人提供一定的權(quán)限,常見協(xié)議有BSD、Apache
license 、GPL、LGPL。
當用n 比特進行分組編號時,若接受窗口為1(即只能按序接受分組),那么若要求連續(xù)arq 協(xié)議能正常運行時,發(fā)送窗口大小不超過2n-1.
曼切斯特編碼。從低到高表示1,從高到低表示0,使用他的目的是實現(xiàn)對通道過程中收發(fā)雙方的數(shù)據(jù)同步。
Location 和history 對象和瀏覽器列表有關(guān)。
Padding 透明且可以顯示背景。
DNS 區(qū)域配置文件,默認有l(wèi)ocalhost.zone 和named.local
INetAddress:表示互聯(lián)網(wǎng)or??局域網(wǎng)一臺主機的地址。Tcp?serverSocket?和?socket?類 UDP?datagramSocket?和?datagramPacket?類
Where liename is null Where?liename?is?not?null