計(jì)算機(jī)網(wǎng)絡(luò)常識(shí)
網(wǎng)絡(luò)層次劃分模型
????為了使不同計(jì)算機(jī)廠家生產(chǎn)的計(jì)算機(jī)能夠相互通信,以便在更大的范圍內(nèi)建立計(jì)算機(jī)網(wǎng)絡(luò),國(guó)際標(biāo)準(zhǔn)化組織(ISO)在 1978年 提出了 "開(kāi)放系統(tǒng)互聯(lián)參考模型",即著名的 OSI / RM 模型(Open System Interconnection / Reference Model。它將計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)的通信協(xié)議劃分為七層,自下而上依次為:
?? 物理層 1/7
????物理層主要提供可靠的 物理媒體(中繼器、集線器),確保原始的數(shù)據(jù)可在各種物理媒體上傳輸。
?? 鏈路層 2/7
??? 鏈路層通過(guò) 網(wǎng)橋和交換機(jī)(https://www.zhihu.com/question/67473683)組建一個(gè)小型的局域網(wǎng)(目前最流行的局域網(wǎng)就是 以太網(wǎng)),使得本地的幾臺(tái)電腦 能夠互相收發(fā)數(shù)據(jù)。
??? 同時(shí),每一臺(tái)網(wǎng)絡(luò)設(shè)備都具有物理地址 MAC地址 來(lái)標(biāo)識(shí)在網(wǎng)絡(luò)中的唯一身份。它收錄在 Network Interface Card (網(wǎng)卡) 里。網(wǎng)卡的物理地址通常是由網(wǎng)卡生產(chǎn)廠家燒入,它存儲(chǔ)傳輸數(shù)據(jù)時(shí)真正賴以標(biāo)識(shí)發(fā)出數(shù)據(jù)的電腦和接收數(shù)據(jù)的主機(jī)的地址。也就是說(shuō),在網(wǎng)絡(luò)底層的物理傳輸過(guò)程中,是通過(guò)物理地址來(lái)識(shí)別主機(jī)的,它一定是全球唯一的。生產(chǎn)以太網(wǎng)網(wǎng)卡的廠家就購(gòu)買其中一組,具體生產(chǎn)時(shí),逐個(gè)將唯一地址賦予以太網(wǎng)卡。
如何將數(shù)據(jù)組合成數(shù)據(jù)塊,即幀(frame);
控制幀在物理信道上的傳輸,包括如何處理差錯(cuò)、調(diào)節(jié)速率以使與接收方相匹配;
在兩個(gè)網(wǎng)絡(luò)實(shí)體之間提供數(shù)據(jù)鏈路通路的建立、維持和釋放的管理;
??網(wǎng)絡(luò)層 3/7
????網(wǎng)絡(luò)層主要依靠 路由器 (Router)進(jìn)行尋徑,使得 數(shù)據(jù)能夠準(zhǔn)確送達(dá) 至網(wǎng)絡(luò)中的某一臺(tái)主機(jī)。目前最流行 IP協(xié)議 來(lái)進(jìn)行無(wú)連接的數(shù)據(jù)報(bào)傳輸、路由選擇和差錯(cuò)控制。
??? 在 IP協(xié)議 中,要求每臺(tái)主機(jī)和路由器都有自己的IP地址。所以實(shí)際上每個(gè)主機(jī)和路由器的接口相關(guān)聯(lián)的而不是與主機(jī)和路由器相關(guān)聯(lián)的。當(dāng)IP數(shù)據(jù)包經(jīng)由路由器轉(zhuǎn)發(fā)時(shí),如果目標(biāo)網(wǎng)絡(luò)與本地路由器直接相連,則直接將數(shù)據(jù)包交付給目標(biāo)主機(jī),這稱為直接交付;否則,路由器通過(guò)路由表查找路由信息,并將數(shù)據(jù)包轉(zhuǎn)交給指明的下一跳路由器,這稱為間接交付。
??傳輸層 4/7
????傳輸層主要使用 網(wǎng)關(guān) 這類翻譯器(應(yīng)對(duì)不同的通信協(xié)議、數(shù)據(jù)格式或語(yǔ)言,甚至體系結(jié)構(gòu)),使得數(shù)據(jù)分段并可靠地送達(dá)。請(qǐng)注意任何具有上述功能的設(shè)備、應(yīng)用都可以稱之為網(wǎng)關(guān)。在傳輸層,信息傳送的協(xié)議數(shù)據(jù)單元稱為段或 報(bào)文。 傳輸時(shí)需要遵守對(duì)應(yīng)的協(xié)議規(guī)則:
TCP協(xié)議(Transmission Control Protocol,可靠傳輸控制協(xié)議)
UDP協(xié)議(User Datagram Protocol,不可靠用戶數(shù)據(jù)報(bào)協(xié)議)
??會(huì)話層 5/7
????會(huì)話層管理主機(jī)之間的會(huì)話進(jìn)程,即負(fù)責(zé)建立、管理、終止進(jìn)程之間的會(huì)話。
??表示層 6/7
????表示層對(duì)上層數(shù)據(jù)或信息進(jìn)行變換以保證一個(gè)主機(jī)應(yīng)用層信息可以被另一個(gè)主機(jī)的應(yīng)用程序理解。表示層的數(shù)據(jù)轉(zhuǎn)換包括數(shù)據(jù)的加密、壓縮、格式轉(zhuǎn)換等。
??應(yīng)用層 7/7
????為操作系統(tǒng)或網(wǎng)絡(luò)應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)服務(wù)的接口。其需要遵守各類應(yīng)用協(xié)議:
FTP(文件傳送協(xié)議)
Telnet(遠(yuǎn)程登錄協(xié)議)
DNS(域名解析協(xié)議)
SMTP(郵件傳送協(xié)議)
POP3協(xié)議(郵局協(xié)議)
HTTP協(xié)議(Hyper Text Transfer Protocol)

常見(jiàn)的應(yīng)用問(wèn)題
??數(shù)據(jù)報(bào)文在網(wǎng)絡(luò)模型中的傳輸
????HTTP報(bào)文 = TCP報(bào)文 = IP報(bào)文 = 以太網(wǎng)報(bào)文
????各個(gè)網(wǎng)絡(luò)層級(jí)都會(huì)對(duì)報(bào)文進(jìn)行包轉(zhuǎn)、拆解,并獲取其中的數(shù)據(jù)進(jìn)行下一步工作;
??數(shù)據(jù)遵循TCP協(xié)議傳輸?shù)募?xì)節(jié)
????TCP/IP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它會(huì)保證數(shù)據(jù)不丟包、不亂序。建立/斷開(kāi)一個(gè) TCP 連接時(shí),需要客戶端和服務(wù)器總共發(fā)送3/4個(gè)報(bào)文。
建立鏈接,首先由客戶端發(fā)送報(bào)文給服務(wù)端,
服務(wù)端返回確認(rèn)報(bào)文,客戶端此時(shí)能夠確認(rèn)服務(wù)端可送達(dá);
客戶端再次發(fā)送報(bào)文,服務(wù)端收到后能夠確認(rèn)客戶端可送達(dá);
斷開(kāi)鏈接,首先需要客戶端發(fā)送斷開(kāi)報(bào)文給服務(wù)端
服務(wù)端返回確認(rèn)報(bào)文;
服務(wù)端發(fā)送斷開(kāi)報(bào)文給客戶端;
客戶端返回確認(rèn)報(bào)文;
??HTTP應(yīng)用協(xié)議細(xì)節(jié)
????HTTP 是無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求,服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開(kāi)連接,采用這種方式可以節(jié)省傳輸時(shí)間。
????請(qǐng)求方法的一些區(qū)別:
????HTTP報(bào)文響應(yīng)頭的一些區(qū)別:
??瀏覽器的同源策略
同源策略使得瀏覽器不能取得其他網(wǎng)站的資源,是瀏覽器的安全限制。
同源指的是:協(xié)議、域名、端口相同
????對(duì)標(biāo)簽的資源請(qǐng)求,進(jìn)行了輕微的跨域安全限制;
????對(duì)AJAX進(jìn)行了嚴(yán)格的跨域安全限制,一般我們使用 CORS / Cross-Origin Resource Sharing? 規(guī)則解決跨域:
檢查 GET / HEAD / POST 請(qǐng)求是否修改了默認(rèn)請(qǐng)求頭
非以上簡(jiǎn)單請(qǐng)求,瀏覽器會(huì)首先發(fā)送預(yù)檢 OPTION 請(qǐng)求,并檢查響應(yīng)頭是否包
Access-Controll-...
??網(wǎng)絡(luò)應(yīng)用中的身份標(biāo)識(shí)
cookie:默認(rèn)情況下,瀏覽器會(huì)話結(jié)束時(shí)即刪除所有 cookie 數(shù)據(jù),不過(guò)也可以通過(guò) setMaxAge 設(shè)置刪除時(shí)間;
json-web-token:一旦用戶登錄,后續(xù)每個(gè)請(qǐng)求都將包含JWT,允許用戶訪問(wèn)該令牌允許的路由、服務(wù)和資源。
session-storage:當(dāng)瀏覽器進(jìn)程結(jié)束時(shí),將會(huì)清空域名下的對(duì)應(yīng)數(shù)據(jù);存儲(chǔ)的數(shù)據(jù)可以跨越頁(yè)面刷新而存在;
??文件處理
文件上傳
文件下載
緩存協(xié)議
CSRF
XSS
網(wǎng)絡(luò)性能優(yōu)化
分片傳輸
域名和DNS
SSL/TLS/HTTPS
??WebSocket
????WebSocket 是一種在單個(gè)TCP連接上進(jìn)行全雙工通信的協(xié)議。WebSocket 使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù)。建立長(zhǎng)鏈接需要在應(yīng)用層上再進(jìn)行一次握手。
????可以發(fā)送文本,也可以發(fā)送二進(jìn)制數(shù)據(jù)。
????沒(méi)有同源限制,客戶端可以與任意服務(wù)器通信。
????協(xié)議標(biāo)識(shí)符是ws
(如果加密,則為wss
),服務(wù)器網(wǎng)址就是 URL。