夜闌臥聽風吹雨
鐵馬冰河入夢來算法
大學老師曾經說過,計算機界有三本天書,分別是:數據結構、計算機組成原理、計算機網絡。因此網絡也是咱們從事計算機開發必須瞭解且掌握的一門技術,本文我將覺得所理解的網絡知識來用通俗的語言描述網絡緩存
應用層安全
訪問網絡服務的端口,如HTTP傳輸 ‘hello,world’
表示層服務器
提供數據格式轉換
會話層cookie
創建端鏈接並提供訪問驗證 如SSL/TLS認證
傳輸層網絡
UDP/TCP + ‘hello,world’
網絡層session
IP + UDP/TCP + ‘hello,world’
數據鏈路層數據結構
MAC地址 + IP + UDP/TCP + ‘hello,world’ + 幀尾
物理層dom
傳輸二進制 01010101001
請求/相應報文tcp
**請求報文包括:** 請求方法 URL 協議版本HTTP1.0 首部字段名 請求體 (POST請求) **響應報文包括:** 版本 狀態碼 短語 首部字段名 響應實體
請求方法
GET:
表明獲取資源 特色: 安全:不該該引發Server端的任何狀態變化 冪等:請求屢次的結果同樣 可緩存:代理服務器能夠緩存
POST:
表明處理資源 特色: 不安全 不冪等 不可緩存
HEAD
OPTION
PUT
狀態碼
200:
請求成功
300:
請求重定向
400:
因爲客戶端請求地址和參數引用的失敗
500:
服務端緣由
鏈接接創建流程
TCP:
三次握手、四次揮手
HTTP特色
無鏈接:
每次請求都須要創建TCP鏈接
無狀態
不會保存記錄用戶的信息和狀態
解決HTTP無鏈接問題
在同一條TCP上面產生屢次HTTP請求
頭部字段(Header):
Connection:keep-live Time: 20 在必定時間內不須要再次創建TCP鏈接 Max: 在創建鏈接時間內最多請求次數
判斷一個請求的結束?
Content-length 空chunked
HTTPS=HTTP+SSL/TLS:
在應用層和傳輸層之間增長了 SSL/TLS認證 查閱多方資料:SSL/TLS認證在會話層
特色:
面向鏈接
數據開始傳輸以前創建鏈接(三次握手) 數據傳輸以後釋放鏈接(四次揮手)
可靠傳輸
無差錯、不丟失、不重複、按序到達、超時重傳
面向字節流
會自動根本TCP自身狀況傳輸字節大小,不受發送方控制, 最大傳輸單元 = 1500 =20個IP頭+20個tcp頭+data
流量控制
滑動窗口協議
擁塞控制
慢開始、擁塞避免 指數規律增加(報文個數:一、二、四、八、16) 達到門限初始值:開始加法增大 網絡擁塞的時候:乘法減少到新的門限值 快恢復、快重傳
發送窗口以很快的速率去發送消息時,因爲服務端接收窗口比較小, 此時接收窗口經過向TCP的報文首部字段去更改窗口值去更正或者調整發送端的發送速率
特色
無鏈接:不須要創建鏈接流程 最大能力傳輸: 不保證按序到達 面向報文:不合並 不拆分
功能
複用、分用
域名到IP地址的映射,解析請求採用UDP數據報且明文的形式 使用DNS協議向DNS服務器的53端口進行請求
- Client經過DNS協議向DNS服務器請求相應域名的解析 - DNS服務器返回給客戶端相應的IP - 客戶端拿到IP再向服務端發送網絡請求
遞歸查詢
依次詢問返回:Client->本地DNS->根域DNS->頂級DNS->權限DNS
迭代查詢
Client: 本地DNS、根域DNS、頂級DNS、權限DNS互相詢問
**緣由在公網中存在第三方釣魚DNS服務器攔截咱們的DNS解析請求,返回給咱們錯誤的IP**
httpDNS
DNS解析:使用DNS協議向DNS服務器的53端口進行請求 HTTPDNS解析:使用HTTP協議向DNS服務器的80端口進行解析,不會產生DNS解析就不會有DNS劫持 http://119.29.29.29/d?dn=www.xiaozhu.com&ip=172.18.134.109
長鏈接
Client <-(長連通道)>長連server(代理服務器) <-> API server Client的HTTP請求是經過代理服務器經過內網專線進行內網的DNS解析這樣就規避了公網DNS解析劫持的問題
沒有關係
由於DNS解析發生在HTTP創建鏈接以前 由於DNS解析請求使用的UDP數據報,端口號53
Client->中國移動DNS->中國電信DNS->中國聯通DNS ,因爲協議限制,致使各個DNS解析商互相推脫,形成DNS解析緩慢,從而致使網絡請求慢
對HTTP無狀態的補償,例如client發送請求以後,再次請求 沒法記住用戶
用來記錄用戶狀態,區分用戶,狀態保存在客戶端
怎樣保證cookie安全?
對cookie進行加密處理 只在HTTPS上攜帶cookie(推薦) 設置cookie爲HTTPonly ,防止跨站腳本攻擊
怎樣修改cookie
新cookie覆蓋舊cookie 覆蓋規則:name、path、domian須要與原cookie一致
怎樣刪除cookie
新cookie覆蓋舊cookie 覆蓋規則:name、path、domian須要與原cookie一致 設置cookie的expire=過去的某個時間點或者設置maxAge=0
session
用來記錄用戶狀態,區分用戶,狀態保存在服務端端
工做流程 Client向server發送消息,server記錄用戶狀態生成sessionID 經過存在cookie中傳給client