更新時(shí)間:2018-09-26 來源:黑馬程序員技術(shù)社區(qū) 瀏覽量:
· OSI,TCP/IP,五層協(xié)議的體系結(jié)構(gòu),以及各層協(xié)議
①OSI分層 (7層):物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層。
②TCP/IP分層(4層):網(wǎng)絡(luò)接口層、 網(wǎng)際層、運(yùn)輸層、 應(yīng)用層。
③五層協(xié)議 (5層):物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、運(yùn)輸層、 應(yīng)用層。
④每一層的協(xié)議如下:
物理層:RJ45、CLOCK、IEEE802.3 (中繼器,集線器)
數(shù)據(jù)鏈路:PPP、HDLC、VLAN、MAC (網(wǎng)橋,交換機(jī))
網(wǎng)絡(luò)層:IP、ICMP、ARP、RARP、OSPF、IPX、RIP (路由器)
傳輸層:TCP、UDP
應(yīng)用層:FTP、DNS、Telnet、SMTP、HTTP
⑤每一層的作用如下:
物理層:通過媒介傳輸比特,確定機(jī)械及電氣規(guī)范(比特Bit)
數(shù)據(jù)鏈路層:將比特組裝成幀和點(diǎn)到點(diǎn)的傳遞(幀F(xiàn)rame)
網(wǎng)絡(luò)層:負(fù)責(zé)數(shù)據(jù)包從源到宿的傳遞和網(wǎng)際互連(包PackeT)
傳輸層:提供端到端的可靠報(bào)文傳遞和錯(cuò)誤恢復(fù)(段Segment)
會(huì)話層:建立、管理和終止會(huì)話(會(huì)話協(xié)議數(shù)據(jù)單元SPDU)
表示層:對(duì)數(shù)據(jù)進(jìn)行翻譯、加密和壓縮(表示協(xié)議數(shù)據(jù)單元PPDU)
應(yīng)用層:允許訪問OSI環(huán)境的手段(應(yīng)用協(xié)議數(shù)據(jù)單元APDU)
· 在瀏覽器中輸入www.baidu.com后執(zhí)行的全部過程
①瀏覽器獲取輸入的域名www.baidu.com
② 瀏覽器向DNS請(qǐng)求解析www.baidu.com的IP地址
③ 域名系統(tǒng)DNS解析出百度服務(wù)器的IP地址
④瀏覽器與該服務(wù)器建立TCP連接(默認(rèn)端口號(hào)80)
⑤瀏覽器發(fā)出HTTP請(qǐng)求,請(qǐng)求百度首頁
⑥服務(wù)器通過HTTP響應(yīng)把首頁文件發(fā)送給瀏覽器
⑦TCP連接釋放
⑧瀏覽器將首頁文件進(jìn)行解析,并將Web頁顯示給用戶。
· DNS域名系統(tǒng),簡(jiǎn)單描述其工作原理。
當(dāng)DNS客戶機(jī)需要在程序中使用名稱時(shí),它會(huì)查詢DNS服務(wù)器來解析該名稱。客戶機(jī)發(fā)送的每條查詢信息包括三條信息:指定的DNS域名,指定的查詢類型,DNS域名的指定類別?;赨DP服務(wù),端口53. 該應(yīng)用一般不直接為用戶使用,而是為其他應(yīng)用服務(wù),如HTTP,SMTP等在其中需要完成主機(jī)名到IP地址的轉(zhuǎn)換。
①客戶機(jī)向其本地域名服務(wù)器發(fā)出DNS請(qǐng)求報(bào)文
②本地域名服務(wù)器收到請(qǐng)求后,查詢本地緩存,假設(shè)沒有該記錄,則以DNS客戶的身份向根域名服務(wù)器發(fā)出解析請(qǐng)求
③根域名服務(wù)器收到請(qǐng)求后,判斷該域名所屬域,將對(duì)應(yīng)的頂級(jí)域名服務(wù)器的IP地址返回給本地域名服務(wù)器
④本地域名服務(wù)器向頂級(jí)域名服務(wù)器發(fā)出解析請(qǐng)求報(bào)文
⑤頂級(jí)域名服務(wù)器收到請(qǐng)求后,將所對(duì)應(yīng)的授權(quán)域名服務(wù)器的IP地址返回給本地域名服務(wù)器
⑥本地域名服務(wù)器向授權(quán)域名服務(wù)器發(fā)起解析請(qǐng)求報(bào)文
⑦授權(quán)域名服務(wù)器收到請(qǐng)求后,將查詢結(jié)果返回給本地域名服務(wù)器
⑧本地域名服務(wù)器將查詢結(jié)果保存到本地緩存,同時(shí)返回給客戶機(jī)
· HTTP的狀態(tài)碼:
①大致可分為五大類
100-199 信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作。指定客戶端應(yīng)相應(yīng)的某些動(dòng)作。
200-299 用于表示請(qǐng)求成功。
300-399 重定向,需要進(jìn)一步的操作以完成請(qǐng)求
400-499 用于指出客戶端的錯(cuò)誤。請(qǐng)求包含語法錯(cuò)誤或無法完成請(qǐng)求
500-599 用于支持服務(wù)器錯(cuò)誤。服務(wù)器在處理請(qǐng)求的過程中發(fā)生了錯(cuò)誤
②常見的狀態(tài)碼
206 部分內(nèi)容。服務(wù)器成功處理了部分GET請(qǐng)求
301 永久移動(dòng)。請(qǐng)求的資源已被永久的移動(dòng)到新URI,返回信息會(huì)包括新的URI,瀏覽器會(huì)自動(dòng)定向到新URI。今后任何新的請(qǐng)求都應(yīng)使用新的URI代替。
302 臨時(shí)移動(dòng)。與301類似。但資源只是臨時(shí)被移動(dòng)??蛻舳藨?yīng)繼續(xù)使用原有URI
400 (錯(cuò)誤請(qǐng)求) 服務(wù)器不理解請(qǐng)求的語法。
404 (未找到) 服務(wù)器找不到請(qǐng)求的網(wǎng)頁。
500 (服務(wù)器內(nèi)部錯(cuò)誤) 服務(wù)器遇到錯(cuò)誤,無法完成請(qǐng)求。
505 (HTTP 版本不受支持) 服務(wù)器不支持請(qǐng)求中所用的 HTTP 協(xié)議版本。
· HTTP和HTTPS的區(qū)別:
https:全稱Hyper Text Transfer Protocol Secure,相比http,多了一個(gè)secure,這一個(gè)secure是怎么來的呢?這是由TLS(SSL)提供的,可以簡(jiǎn)單理解為 HTTPS=HTTP+SSL。
①HTTP 的 URL 以 http:// 開頭,而 HTTPS 的 URL 以 https:// 開頭
②HTTP 是相對(duì)不安全的,而 HTTPS 是相對(duì)安全的
③HTTP 標(biāo)準(zhǔn)端口是 80 ,而 HTTPS 的標(biāo)準(zhǔn)端口是 443
④在 OSI 網(wǎng)絡(luò)模型中,HTTP 工作于應(yīng)用層,而 HTTPS 工作在傳輸層
⑤HTTP 無需加密,而 HTTPS 對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密
⑥HTTP 無需證書,而 HTTPS 需要認(rèn)證證書
· TCP和UDP的區(qū)別?
①TCP提供面向連接的、可靠的數(shù)據(jù)流傳輸,而UDP提供的是非面向連接的、不可靠的數(shù)據(jù)流傳輸。
②TCP傳輸單位稱為TCP報(bào)文段,UDP傳輸單位稱為用戶數(shù)據(jù)報(bào)。
③TCP注重?cái)?shù)據(jù)安全性,UDP數(shù)據(jù)傳輸快,因?yàn)椴恍枰B接等待,少了許多操作,但是其安全性卻一般。
④TCP對(duì)應(yīng)的協(xié)議和UDP對(duì)應(yīng)的協(xié)議
1). TCP對(duì)應(yīng)的協(xié)議:
FTP:定義了文件傳輸協(xié)議,使用21端口。
Telnet:一種用于遠(yuǎn)程登陸的端口,使用23端口,用戶可以以自己的身份遠(yuǎn)程連接到計(jì)算機(jī)上,可提供基于DOS模式下的通信服務(wù)。
SMTP:郵件傳送協(xié)議,用于發(fā)送郵件。服務(wù)器開放的是25號(hào)端口。
POP3:它是和SMTP對(duì)應(yīng),POP3用于接收郵件。POP3協(xié)議所用的是110端口。
HTTP:是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
2). UDP對(duì)應(yīng)的協(xié)議:
DNS:用于域名解析服務(wù),將域名地址轉(zhuǎn)換為IP地址。DNS用的是53號(hào)端口。
SNMP:簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,使用161號(hào)端口,是用來管理網(wǎng)絡(luò)設(shè)備的。由于網(wǎng)絡(luò)設(shè)備很多,無連接的服務(wù)就體現(xiàn)出其優(yōu)勢(shì)。
TFTP(Trival File Transfer Protocal),簡(jiǎn)單文件傳輸協(xié)議,該協(xié)議在熟知端口69上使用UDP服務(wù)。
· TCP是怎么保證傳輸可靠的?
①確認(rèn)和重傳:接收方收到報(bào)文就會(huì)確認(rèn),發(fā)送方發(fā)送一段時(shí)間后沒有收到確認(rèn)就重傳。
②數(shù)據(jù)校驗(yàn)
③數(shù)據(jù)合理分片和排序:TCP會(huì)按MTU合理分片,接收方會(huì)緩存未按序到達(dá)的數(shù)據(jù),重新排序后再交給應(yīng)用層。
TCP為什么引入接受緩存這個(gè)數(shù)據(jù)結(jié)構(gòu)?
如果沒有接受緩存的話,或者說只有一個(gè)緩存的話,為了保證接受的數(shù)據(jù)是按順序傳輸?shù)?,所以如果位于x序號(hào)之后的序號(hào)分組先到達(dá)目的主機(jī)的運(yùn)輸層的話必然丟棄,這樣的話將在重傳上花費(fèi)很大的開銷,所以一般如果有過大的序號(hào)達(dá)到接收端,那么會(huì)按照序號(hào)緩存起來等待之前的序號(hào)分許到達(dá),然后一并交付到應(yīng)用進(jìn)程。
④流量控制
當(dāng)接收方來不及處理發(fā)送方的數(shù)據(jù),能提示發(fā)送方降低發(fā)送的速率,防止包丟失。
⑤擁塞控制
當(dāng)網(wǎng)絡(luò)擁塞時(shí),減少數(shù)據(jù)的發(fā)送。
· 了解交換機(jī)、路由器、網(wǎng)關(guān)的概念,并知道各自的用途
①交換機(jī)
在計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)中,交換機(jī)是針對(duì)共享工作模式的弱點(diǎn)而推出的。交換機(jī)擁有一條高帶寬的背部總線和內(nèi)部交換矩陣。交換機(jī)的所有的端口都掛接在這條背部總線上,當(dāng)控制電路收到數(shù)據(jù)包以后,處理端口會(huì)查找內(nèi)存中的地址對(duì)照表以確定目的MAC(網(wǎng)卡的硬件地址)的NIC(網(wǎng)卡)掛接在哪個(gè)端口上,通過內(nèi)部交換矩陣迅速將數(shù)據(jù)包傳送到目的端口。目的MAC若不存在,交換機(jī)才廣播到所有的端口,接收端口回應(yīng)后交換機(jī)會(huì)“學(xué)習(xí)”新的地址,并把它添加入內(nèi)部地址表中。
交換機(jī)工作于OSI參考模型的第二層,即數(shù)據(jù)鏈路層。交換機(jī)內(nèi)部的CPU會(huì)在每個(gè)端口成功連接時(shí),通過ARP協(xié)議學(xué)習(xí)它的MAC地址,保存成一張 ARP表。在今后的通訊中,發(fā)往該MAC地址的數(shù)據(jù)包將僅送往其對(duì)應(yīng)的端口,而不是所有的端口。因此,交換機(jī)可用于劃分?jǐn)?shù)據(jù)鏈路層廣播,即沖突域;但它不能劃分網(wǎng)絡(luò)層廣播,即廣播域。
②路由器
路由器(Router)是一種計(jì)算機(jī)網(wǎng)絡(luò)設(shè)備,提供了路由與轉(zhuǎn)送兩種重要機(jī)制,可以決定數(shù)據(jù)包從來源端到目的端所經(jīng)過的路由路徑(host到host之間的傳輸路徑),這個(gè)過程稱為路由;將路由器輸入端的數(shù)據(jù)包移送至適當(dāng)?shù)穆酚善鬏敵龆?在路由器內(nèi)部進(jìn)行),這稱為轉(zhuǎn)送。路由工作在OSI模型的第三層——即網(wǎng)絡(luò)層,例如網(wǎng)際協(xié)議。
路由器的一個(gè)作用是連通不同的網(wǎng)絡(luò),另一個(gè)作用是選擇信息傳送的線路。 路由器與交換器的差別,路由器是屬于OSI第三層的產(chǎn)品,交換器是OSI第二層的產(chǎn)品(這里特指二層交換機(jī))。
③網(wǎng)關(guān)
網(wǎng)關(guān)(Gateway),網(wǎng)關(guān)是連接兩個(gè)網(wǎng)絡(luò)的設(shè)備,
在傳統(tǒng)TCP/IP術(shù)語中,網(wǎng)絡(luò)設(shè)備只分成兩種,一種為網(wǎng)關(guān)(gateway),另一種為主機(jī)(host)。網(wǎng)關(guān)能在網(wǎng)絡(luò)間轉(zhuǎn)遞數(shù)據(jù)包,但主機(jī)不能轉(zhuǎn)送數(shù)據(jù)包。在主機(jī)中,數(shù)據(jù)包需經(jīng)過TCP/IP四層協(xié)議處理,但是在網(wǎng)關(guān)只需要到達(dá)網(wǎng)際層,決定路徑之后就可以轉(zhuǎn)送。
在現(xiàn)代網(wǎng)絡(luò)術(shù)語中,網(wǎng)關(guān)(gateway)與路由器(router)的定義不同。網(wǎng)關(guān)(gateway)能在不同協(xié)議間移動(dòng)數(shù)據(jù),而路由器(router)是在不同網(wǎng)絡(luò)間移動(dòng)數(shù)據(jù)。
對(duì)于以太網(wǎng)中的網(wǎng)關(guān)只能轉(zhuǎn)發(fā)三層以上數(shù)據(jù)包,這一點(diǎn)和路由是一樣的。而不同的是網(wǎng)關(guān)中并沒有路由表,他只能按照預(yù)先設(shè)定的不同網(wǎng)段來進(jìn)行轉(zhuǎn)發(fā)。網(wǎng)關(guān)最重要的一點(diǎn)就是端口映射,子網(wǎng)內(nèi)用戶在外網(wǎng)看來只是外網(wǎng)的IP地址對(duì)應(yīng)著不同的端口,這樣看來就會(huì)保護(hù)子網(wǎng)內(nèi)的用戶。
· IP地址的分類
A類地址:以0開頭, 第一個(gè)字節(jié)范圍:0~127(1.0.0.0 - 126.255.255.255)
B類地址:以10開頭,第一個(gè)字節(jié)范圍:128~191(128.0.0.0 - 191.255.255.255)
C類地址:以110開頭, 第一個(gè)字節(jié)范圍:192~223(192.0.0.0 -223.255.255.255);
除去以上三類公有IP的,剩下的為私有IP:10.0.0.0—10.255.255.255, 172.16.0.0—172.31.255.255, 192.168.0.0—192.168.255.255。
· ARP是地址解析協(xié)議,簡(jiǎn)單語言解釋一下工作原理。
①每個(gè)主機(jī)都會(huì)在自己的ARP緩沖區(qū)中建立一個(gè)ARP列表,以表示IP地址和MAC地址之間的對(duì)應(yīng)關(guān)系。
②當(dāng)源主機(jī)要發(fā)送數(shù)據(jù)時(shí),首先檢查ARP列表中是否有對(duì)應(yīng)IP地址的目的主機(jī)的MAC地址,如果有,則直接發(fā)送數(shù)據(jù),如果沒有,就向本網(wǎng)段的所有主機(jī)發(fā)送ARP數(shù)據(jù)包,該數(shù)據(jù)包包括的內(nèi)容有:源主機(jī) IP地址,源主機(jī)MAC地址,目的主機(jī)的IP 地址。
③當(dāng)本網(wǎng)絡(luò)的所有主機(jī)收到該ARP數(shù)據(jù)包時(shí),首先檢查數(shù)據(jù)包中的IP地址是否是自己的IP地址,如果不是,則忽略該數(shù)據(jù)包,如果是,則首先從數(shù)據(jù)包中取出源主機(jī)的IP和MAC地址寫入到ARP列表中,如果已經(jīng)存在,則覆蓋,然后將自己的MAC地址寫入ARP響應(yīng)包中,告訴源主機(jī)自己是它想要找的MAC地址。
④源主機(jī)收到ARP響應(yīng)包后。將目的主機(jī)的IP和MAC地址寫入ARP列表,并利用此信息發(fā)送數(shù)據(jù)。如果源主機(jī)一直沒有收到ARP響應(yīng)數(shù)據(jù)包,表示ARP查詢失敗。
廣播發(fā)送ARP請(qǐng)求,單播發(fā)送ARP響應(yīng)。
· RARP(反向地址轉(zhuǎn)換協(xié)議):
反向地址轉(zhuǎn)換協(xié)議就是將局域網(wǎng)中某個(gè)主機(jī)的物理地址轉(zhuǎn)換為IP地址,比如局域網(wǎng)中有一臺(tái)主機(jī)只知道物理地址而不知道IP地址,那么可以通過RARP協(xié)議發(fā)出征求自身IP地址的廣播請(qǐng)求,然后由RARP服務(wù)器負(fù)責(zé)回答。RARP協(xié)議廣泛用于獲取無盤工作站的IP地址。
①給主機(jī)發(fā)送一個(gè)本地的RARP廣播,在此廣播包中,聲明自己的MAC地址并且請(qǐng)求任何收到此請(qǐng)求的RARP服務(wù)器分配一個(gè)IP地址;
②本地網(wǎng)段上的RARP服務(wù)器收到此請(qǐng)求后,檢查其RARP列表,查找該MAC地址對(duì)應(yīng)的IP地址;
③如果存在,RARP服務(wù)器就給源主機(jī)發(fā)送一個(gè)響應(yīng)數(shù)據(jù)包并將此IP地址提供給對(duì)方主機(jī)使用;
④如果不存在,RARP服務(wù)器對(duì)此不做任何的響應(yīng);
⑤源主機(jī)收到從RARP服務(wù)器的響應(yīng)信息,就利用得到的IP地址進(jìn)行通訊;如果一直沒有收到RARP服務(wù)器的響應(yīng)信息,表示初始化失敗。
· 為什么有了可靠地TCP還需要不可靠的UDP?
①TCP的優(yōu)缺點(diǎn)。優(yōu)點(diǎn)呢,TCP是可靠的連接,由于有基本的重傳確認(rèn)機(jī)制,可以保證把一個(gè)數(shù)據(jù)塊完完整整的從A傳到B;缺點(diǎn)也是因優(yōu)點(diǎn)而生,因?yàn)橛腥挝帐?,所以?huì)傳輸更多的包,浪費(fèi)一些帶寬;因?yàn)樾枰煽康剡B接進(jìn)行通信,則需要雙方都必須持續(xù)在線,所以在通信過程中server需要維持非常大的并發(fā)連接,浪費(fèi)了系統(tǒng)資源,甚至?xí)霈F(xiàn)宕機(jī);再者就是因?yàn)橛兄貍鞔_認(rèn),則會(huì)浪費(fèi)一部分的帶寬,且在不好的網(wǎng)絡(luò)中,會(huì)因?yàn)椴粩嗟剡B接斷開連接,嚴(yán)重降低了傳輸效率。
②相對(duì)于TCP來說,UDP是非面向連接的不可靠的協(xié)議,其優(yōu)點(diǎn)也因?yàn)槿秉c(diǎn)而生。首先,因?yàn)闆]有三次握手,所以會(huì)起步比較快,延時(shí)小;另外,由于不需要雙方持續(xù)在線,所以server不用維護(hù)巨量的并發(fā)連接,節(jié)省了系統(tǒng)資源;三,因?yàn)闆]有重傳確認(rèn),雖然到達(dá)的數(shù)據(jù)可能會(huì)有所缺失,但在不影響使用的情況下,能更高效的利用網(wǎng)絡(luò)帶寬。
③TCP適合實(shí)時(shí)性要求不高、但要求內(nèi)容要完整傳輸?shù)膽?yīng)用。相比而言,UDP由于無連接、無重傳確認(rèn),所以傳輸效率高、延時(shí)小,適合實(shí)時(shí)性要求高的應(yīng)用,如游戲服務(wù)器,音頻,視頻等;另外,由于不用維持大的并發(fā)量,所以適合巨量服務(wù)的server,加上合適的時(shí)間控制,可以用來設(shè)計(jì)更大的并發(fā)服務(wù)器;再者就是,UDP可以更高效的利用網(wǎng)絡(luò)帶寬。
· 數(shù)據(jù)鏈路兩端的設(shè)備是:DTE或DCE
DTE(DataTerminalEquipment)數(shù)字終端設(shè)備:指一般的終端或是計(jì)算機(jī)??赡苁谴蟆⒅?、小型計(jì)算機(jī),也可能是一臺(tái)只接收數(shù)據(jù)的打印機(jī)。
DCE(DataCircuit-terminatingEquipment)數(shù)字通信設(shè)備:通常指調(diào)制解調(diào)器,多路復(fù)用器或數(shù)字設(shè)備。
DTE,DCE的區(qū)別
DCE一方提供時(shí)鐘,DTE不提供時(shí)鐘,但它依靠DCE提供的時(shí)鐘工作。比如PC機(jī)和MODEM之間的連接。PC機(jī)就是一個(gè)DTE,MODEM是一個(gè)DCE。DTE可以從硬件上區(qū)別它的接口為針式,DCE的接口為孔式。
· Socket編程注意點(diǎn)
客戶端(client):socket→connect→具體操作
服務(wù)端(serve):socket→bind→listen→accept→具體操作
(bind:端口綁定; listen:端口監(jiān)聽; accept:阻塞,等待客戶端connect)
(socket:把TCP/IP協(xié)議隱藏在軟件接口后面)
· P2P本質(zhì)上還是C/S模式,只不過交互的雙方既是服務(wù)器又是客戶端。
· 路由匯聚:
路由匯聚的“含義”是把一組路由匯聚為一個(gè)單個(gè)的路由。路由匯聚的最終結(jié)果和最明顯的好處是縮小網(wǎng)絡(luò)上的路由表的尺寸。這樣將減少與每一個(gè)路由跳有關(guān)的延遲,因?yàn)橛捎跍p少了路由登錄項(xiàng)數(shù)量,查詢路由表的平均時(shí)間將加快。路由匯聚的“用意”是當(dāng)我們采用了一種體系化編址規(guī)劃后的一種用一個(gè)IP地址代表一組IP地址的集合的方法。
本文版權(quán)歸黑馬程序員JavaEE學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員軟件測(cè)試培訓(xùn)學(xué)院
首發(fā):http://low-budgetmovie.com/special/testzly/index.html