一.常識(shí)
- TCP/IP協(xié)議(簇):
四層 : 鏈路層 - 網(wǎng)絡(luò)層 - 傳輸層 - 應(yīng)用層
物理層 - 鏈路層 - 網(wǎng)絡(luò)層 - 傳輸層 - 會(huì)話層 - 表示層 - 應(yīng)用層 - 端口 : 程序的入口,用來區(qū)分不同的程序.
- 192.168.1.0 : 網(wǎng)絡(luò)號(hào) ------- 192.168.1.255 : 廣播地址 -----C類地址
- 低地址存低位數(shù)據(jù)為小端,低地址存高位數(shù)據(jù)為大端
- 子網(wǎng)掩碼和ip地址 按位 與 ,可以得到網(wǎng)絡(luò)號(hào)
- 集線器:廣播找到目標(biāo)ip ---- 交換機(jī):可以記錄ip地址
- 路由器:連接不同的網(wǎng)絡(luò)
- ARP根據(jù)ip找mac地址,RARP根據(jù)mac地址找ip,ICMP協(xié)議用來 ping.
二.http
- 請(qǐng)求報(bào)文
包含了: 方法, URL, 版本協(xié)議, CRLF, 首部字段, 請(qǐng)求主體. - 響應(yīng)報(bào)文
包含了:版本, 狀態(tài)碼, 短語, CRLF, 首部字段, 響應(yīng)主體. - http請(qǐng)求方式
get,post,head,put,delete,options - get和post的區(qū)別
1.get請(qǐng)求參數(shù)放在url后面,post放在body里面
2.get請(qǐng)求的參數(shù)長(zhǎng)度是有限制的(2048字符),post沒有
get:獲取資源-->安全的不會(huì)引起服務(wù)端相關(guān)數(shù)據(jù)變化
,冪等的執(zhí)行一次和執(zhí)行多次結(jié)果一樣
,可緩存的
post:處理資源-->非安全的,非冪等的,不可緩存的 - 三次握手:
1.客戶端發(fā)送syn
2.服務(wù)端返回syn+1,ack
3.客戶端回復(fù)ack
三次握手:防止客戶端的重發(fā)機(jī)制
如果網(wǎng)絡(luò)延遲,客戶端第一次發(fā)送給服務(wù)器的syn信號(hào)沒有得到回復(fù),那么客戶端就可以進(jìn)行重發(fā)一次;這時(shí)候服務(wù)器會(huì)給客戶端發(fā)送兩條 syn + ack ,導(dǎo)致連理了兩條連接...................如果是三次握手的話,第三次握手的時(shí)候客戶端就可以判斷是否丟棄一個(gè)連接.
- 四次揮手:
1.客戶端發(fā)送syn
2.服務(wù)端發(fā)送ack
3.服務(wù)端發(fā)送確認(rèn)斷開連接fin,ack
4.客戶端回復(fù)ack
因?yàn)槿p工的特性,需要兩方都釋放 - http特點(diǎn)
1.無連接 2.無狀態(tài)
保持持久連接: connection:keep-alive time:20 max:10 - 怎么判斷一個(gè)請(qǐng)求是否結(jié)束
1.判斷content-length
2.判斷chunked,最后會(huì)有一個(gè)空的chunked塊
. - charles抓包工具原理
利用中間人攻擊的漏洞. - https建立連接的過程
1.Client發(fā)送TLS版本號(hào)、支持加密算法嫂冻、random number c
到 Server.
2.Server返回握手消息商定的算法顺少、random number s予跌、證書
到Client.
3.Client 驗(yàn)證 Server的公鑰.
4.Client組裝會(huì)話密鑰
5.使用Server的公鑰對(duì)預(yù)主密鑰
進(jìn)行加密傳輸
6.Server通過自己的私鑰解密預(yù)主密鑰
7.Server拿到預(yù)主密鑰
組成合成會(huì)話密鑰
8.發(fā)送加密的握手消息
三.TCP & UDP
---------------------TCP:傳輸控制協(xié)議
都是傳輸層協(xié)議:---------
---------------------UDP:用戶數(shù)據(jù)報(bào)協(xié)議
- UDP特點(diǎn): 無連接, 盡最大努力交付, 面向報(bào)文
原封不動(dòng)的發(fā)送
* - UDP功能: 復(fù)用
多端口復(fù)用
----------分用一個(gè)UDP數(shù)據(jù)包可以發(fā)送給多個(gè)端口
----- 差錯(cuò)檢測(cè)12字節(jié)偽首部
- TCP特點(diǎn): 面向連接, 可靠傳輸, 面向字節(jié)流
- 可靠傳輸是指:無差錯(cuò), 不丟失, 不重復(fù), 按序到達(dá)
- 面向字節(jié)流:不管發(fā)送方一次性提交給tcp的緩沖有多大,tcp會(huì)根據(jù)實(shí)際的情況進(jìn)行劃分.
- 滑動(dòng)窗口協(xié)議: 按序到達(dá)就是通過滑動(dòng)窗口協(xié)議實(shí)現(xiàn)的
- TCP慢啟動(dòng)特性:慢開始糟红、擁塞避免 : 先發(fā)送1個(gè),再發(fā)送2個(gè),4個(gè),8個(gè),16個(gè)指數(shù)增長(zhǎng).
等到16個(gè)后,開始17個(gè),18 ,19個(gè),,,,,,2 3個(gè).
等到24個(gè)后就擁塞了,然后就重新開始1個(gè),2個(gè),4個(gè)-----到12個(gè)....13個(gè).. - 快重傳邑雅、快恢復(fù)
四.DNS
- dns解析過程
1.Client發(fā)送域名到dns服務(wù)器
2.dns服務(wù)器返回域名對(duì)應(yīng)的ip地址
3.Client訪問ip - DNS解析查詢方式
- 遞歸查詢
"我去幫你問一下,我?guī)湍闳ゲ?
1.查詢本地dns
2.根域dns,返回給本地dns
3.頂級(jí)dns,返回給根域dns
4.權(quán)限dns,返回給頂級(jí)dns - 迭代查詢
"我告訴你誰可能知道,你自己去查"
1.查詢本地dns
2.本地dns不知道,查詢頂級(jí)dns
3.頂級(jí)dns不知道,說:根域dns會(huì)知道,你去問根域dns
4.本地dns查詢根域dns
- DNS劫持
釣魚dns服務(wù)器,返回錯(cuò)誤ip地址 - DNS劫持和http完全沒有關(guān)系
- 怎樣解決dns劫持
1.httpDNS直接連接服務(wù)器的ip,參數(shù)有:服務(wù)器域名定躏、Client的ip地址
2.長(zhǎng)連接
五.session痒留、cookie
http無狀態(tài)特點(diǎn)的補(bǔ)償
- cookie : 記錄用戶狀態(tài)、區(qū)分用戶;
狀態(tài)保存在客戶端
cookie覆蓋.
cookie刪除也是通過cookie覆蓋來實(shí)現(xiàn)的. - session : 記錄用戶狀態(tài)听哭、區(qū)分用戶;
狀態(tài)保存在服務(wù)器端
session需要依賴cookie實(shí)現(xiàn). - session慢洋、cookie的關(guān)系
1.Client發(fā)送信息到Server
2.Server記錄用戶狀態(tài),生成sessionID,并把sessionID頒發(fā)給Client
3.Client發(fā)送cookie:sessionID
4.Server通過SessionID辨別是哪個(gè)Client.