響應(yīng)式網(wǎng)站建設(shè)資訊培訓(xùn)行業(yè)seo整站優(yōu)化
網(wǎng)絡(luò)基礎(chǔ)知識
OSI七層網(wǎng)絡(luò)架構(gòu)
OSI簡稱Open System Intercnnect,開放式系統(tǒng)互聯(lián),是一個(gè)國際互聯(lián)網(wǎng)標(biāo)準(zhǔn)制定的一個(gè)組織
-
應(yīng)用層
-
實(shí)際應(yīng)用場景,比如 瀏覽器、文件傳輸、電子郵件、文件服務(wù)、虛擬終端等;
-
http、FTP、ssh等
-
-
表示層
- 用于數(shù)據(jù)的格式化,讓不同應(yīng)用之間能夠統(tǒng)一兼容,比如,ASCII、UTF-8等
-
會話層
- 用于建立、斷開會話連接等;比如服務(wù)端和客戶端之間是1對多關(guān)系,服務(wù)端就需要跟客戶端建立多個(gè)會話連接;例如Socket
-
傳輸層
- 用于解決兩個(gè)終端之間數(shù)據(jù)如何傳輸問題;TCP、UDP
-
網(wǎng)絡(luò)層
- 用于解決在網(wǎng)絡(luò)中定位終端問題,路由器的功能;比如IP
-
數(shù)據(jù)鏈路層
- 用于包裝Mac地址等信息形成幀數(shù)據(jù),根據(jù)MAC地址查找目標(biāo)設(shè)備,檢查數(shù)據(jù)錯(cuò)誤問題等,數(shù)據(jù)單位是幀;交換機(jī)的作用
-
物理層
- 用于將兩臺設(shè)備通過網(wǎng)線連接起來,將比特流二進(jìn)制數(shù)據(jù)中1、0轉(zhuǎn)換為光電信號;比如網(wǎng)線
【TCP/IP】四層網(wǎng)絡(luò)架構(gòu)
-
應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、網(wǎng)絡(luò)接口層
-
TCP/IP協(xié)議是美國國防部發(fā)明的,相比七層架構(gòu):
-
TCP/IP中的應(yīng)用層相當(dāng)于七層架構(gòu)中的應(yīng)用層、表示層、會話層
-
TCP/IP中的網(wǎng)絡(luò)接口層相當(dāng)于七層架構(gòu)中的數(shù)據(jù)鏈路層和物理層
-
TCP/IP是一系列協(xié)議簇,而OSI七層網(wǎng)絡(luò)架構(gòu)是一種網(wǎng)絡(luò)模型
-
IP地址和MAC地址、端口區(qū)別
-
IP地址主要作用于網(wǎng)絡(luò)層,主要用于在外網(wǎng)中,通過網(wǎng)關(guān)定位目標(biāo)設(shè)備;
-
而MAC地址主要用于數(shù)據(jù)鏈路層,用于內(nèi)網(wǎng)中定位具體的設(shè)備
-
端口是用于在同一臺設(shè)備中,區(qū)分不同應(yīng)用
TCP/UDP區(qū)別
-
TCP是一種可靠的傳輸方式,它連接時(shí)需要經(jīng)歷三次握手,斷開連接時(shí)需要經(jīng)歷四次揮手,確保傳輸過程中信息準(zhǔn)確傳輸?shù)侥康牡?#xff1b;缺點(diǎn)是傳輸速率慢
-
UDP是不可靠的傳輸方式,發(fā)送完數(shù)據(jù)不管對方有沒有接收到,效率高,速度快
TCP三次握手、四次揮手
-
三次握手:
-
客戶端向服務(wù)端發(fā)起TCP連接請求,發(fā)送ACK報(bào)文
-
服務(wù)端收到請求后,準(zhǔn)備好連接資源,回復(fù)SYN報(bào)文
-
客戶端收到信息后,再次發(fā)送ACK報(bào)文給服務(wù)端,表示收到消息并準(zhǔn)備好連接
-
服務(wù)端第二次收到客戶端ACK報(bào)文后就開始正式與客戶端建立TCP連接
-
之所以要三次握手而不是兩次,是為了避免服務(wù)端這邊準(zhǔn)備好連接資源后,客戶端又出現(xiàn)意外停止連接,造成服務(wù)端資源浪費(fèi)
-
-
-
四次揮手:
-
客戶端發(fā)送SYN報(bào)文給服務(wù)端請求斷開TCP連接
-
服務(wù)端回復(fù)ACK報(bào)文告訴客戶端進(jìn)入等待狀態(tài)
-
服務(wù)端在一段時(shí)間后再次發(fā)送SYN報(bào)文通知客戶端可以斷開連接了
-
客戶端接收到通知后,再次發(fā)送ACK報(bào)文給服務(wù)端,表示準(zhǔn)備好斷開連接了
-
服務(wù)端接收到報(bào)文后就斷開TCP連接回收資源
-
客戶端在發(fā)送完最后一次報(bào)文后并不會立刻斷開連接并回收資源,這是為了防止服務(wù)端在一段時(shí)間內(nèi)沒有接收到客戶端發(fā)送過去的報(bào)文,會再次重復(fù)發(fā)送,這時(shí)候客戶端就需要再次回復(fù)ACK報(bào)文通知服務(wù)端關(guān)閉連接
-
之所以需要四次而不是三次,是因?yàn)榭蛻舳送ㄖ?wù)端關(guān)閉TCP連接時(shí),可能當(dāng)時(shí)還有傳輸任務(wù)沒有結(jié)束,所以服務(wù)端會要求客戶端等待一段時(shí)間,等數(shù)據(jù)傳輸任務(wù)都完成后再通知客戶端斷開連接
-
-
Socket和WebSocket
-
WebSocket和HTML一樣是應(yīng)用層協(xié)議,它最早出現(xiàn)在HTML5中,主要用于解決HTML只能單向通信問題,后面各種主流語言都有WebSocket相應(yīng)實(shí)現(xiàn)
-
而Socket不是協(xié)議,它是一組接口,用于方便應(yīng)用層使用TCP/UDP建立連接,它介于應(yīng)用層和傳輸層之間
-
Llinux中的Socket則是在服務(wù)端和客戶端各自維護(hù)一個(gè)文件,當(dāng)建立連接后,可以寫入自己文件后供對方讀取或者讀取對方文件中的內(nèi)容,斷開連接后則關(guān)閉文件
優(yōu)化方向:
-
減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)大小
-
使用gzip壓縮數(shù)據(jù)=》“Content-Encoding”:“gzip”
-
使用protobuffer序列化/反序列化數(shù)據(jù);
- 采用二進(jìn)制格式,相比json序列化和反序列化速度更快;但是數(shù)據(jù)可讀性差,使用相對復(fù)雜
-
-
減少網(wǎng)絡(luò)請求次數(shù)
-
將需要上傳或者下載的多份數(shù)據(jù)合并成一次網(wǎng)絡(luò)請求
-
使用socket發(fā)起http請求,復(fù)用http/tcp連接,避免多次頻繁創(chuàng)建和銷毀連接
- okhttp就是使用了socket復(fù)用,socket建立連接后會緩存起來供下次使用,提高網(wǎng)絡(luò)請求效率
-
-
其他方面優(yōu)化
- 發(fā)起網(wǎng)絡(luò)請求時(shí)直接用IP地址代替網(wǎng)址,因?yàn)榫W(wǎng)址轉(zhuǎn)IP地址需要經(jīng)過DNS解析