tcp的三次握手四次揮手:
三次握手(建立連線):
第一次握手: 建立連線時,客戶端向伺服器端傳送tcp連線請求資料報(syn=1,seq=x),客戶端進入syn_send狀態
第二次握手: 伺服器確認資料報,並返回自己的資料報(syn=1,ack=1,ack=x+1,seq=y),伺服器進入syn_recv狀態
第三次握手: 客戶端確認並再次發出確認(ack=1,ack=y+1,seq=x+1),確認傳送完畢後,客戶端和服務端處於established狀態
意義:如果客戶端發起乙個連線請求報文段沒有丟失,延誤到連線釋放後才傳送到服務端,服務端認為客戶端發起了連線請求,如果沒有
三次握手,那麼就會直接建立起連線,但實際並不需要建立連線(浪費資源),三次握手需要客戶端再次確認後,才會建立起連線
四次揮手(四次揮手):
第一次揮手:客戶端發起釋放連線的請求報文(fin=1,seq=u),客戶端進入fin-wait-1狀態
第二次揮手:服務端收到連線釋放的請求報文,發出確認報文(ack=1,seq=v,ack=u+1),服務端進入close-wait狀態,客戶端 向服務端傳送資料的連線關閉,客戶端收到確認訊息後,客戶端進入fin-wait-2狀態,等待服務端傳送釋放連線報文
第三次揮手:服務端將最後的資料傳送完後,向客戶端傳送釋放連線報文(fin=1, ack=1,ack=u+1,seq=w),服務端進入last- ack 狀態,等待客戶端確認
第四次揮手:客戶端收到連線釋放的報文後,發出確認報文(ack=1,ack=w+1,seq=u+1),客戶端進入time-wait狀態,等待2分
鐘後關閉連線,服務端收到確認報文後立即關閉連線
2msl:為了保證最後乙個訊息一定到達服務端,如果確認報文丟失,則服務端會重新發起關閉請求,客戶端再次確認;如果客戶端直接
關閉的話,可能會導致訊息無法到達服務端,連線無法關閉。而且可以保證在這段時間傳送的訊息不會滯留在網路中,讓其消
失,防止出現在下次連線中
意義:tcp是全雙工模式,可以在兩個方向上同時傳遞,所以每次關閉都要進行單獨關閉,並要另一方確認
osi七層網路模型:
由下往上:
物理層、資料鏈路層、網路層(ip)、傳輸層(tcp、udp)、會話層(rpc)、表示層(加密解密)、應用層(http、ftp)
tcp\ip四層模型:
連線層(物理層、資料鏈路層):負責建立電路連線,是整個網路的物理基礎,典型的協議有乙太網、adsl等
傳輸層:負責傳送文字資料,主要協議是tcp協議等
應用層(應用層、表示層、會話層):負責傳送各種最終形態的資料,是直接與使用者打交道的層,典型的協議有http,ftp等
傳輸層協議:
tcp:
傳輸控制協議,是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議
特點:通過三次握手建立連線
所有的資料都會傳輸完成,不丟失資料
不限制資料大小
適用於保證資料的完整性場景,如qq、dns的資料傳輸等
缺點:連線只能是一對一的
傳輸速率較udp慢
首部開銷較大,20位元組
udp:
使用者資料報協議,是一種面向事務的,基於流、簡單不可靠的資訊傳輸協議
特點:無需建立連線傳輸快
可實現一對
一、一對多、多對
一、多對多互動通訊
沒有阻塞控制,因此網路出現擁塞不會使源主機的傳送速率降低
首部開銷小,只有8位元組
缺點:不保證可靠交付
資料報大小不能超過64k
tcp重傳機制:
滑動視窗
超文字傳送協議,是建立在tcp協議之上的一種應用協議,預設埠號是80,由請求和響應構成
請求報文request:
請求行:包含請求型別、要訪問的資源、http版本
請求頭:有kv組成
空行:空行之前全都是請求頭,結束請求頭
請求資料:存放body體資料
響應報文response:
狀態行:http版本、狀態碼、狀態碼描述
訊息頭:由kv組成
空行:空空隔行之前全是訊息頭,結束訊息頭
響應體:存放返回結果
在http1.0中認為每台伺服器繫結唯一的ip位址,因此請求訊息中沒有傳遞主機名,在http1.1中請求訊息和響應訊息中都支援host頭,且請求訊息中如果沒有host會報400錯誤
在http1.0中每次請求使用乙個tcp連線,在http1.1中支援了長連線,預設即keep-alive,即在乙個tcp連線上可以有多個請求,減少建立關閉連線耗費的時間
http1.1採用管道機制實現基於乙個tcp連線傳送多個請求,會造成對頭阻塞
http1.2中提供如下優化:
header壓縮、基於https加密協議傳輸(必須使用 https ,http1.2才會生效)、多路復用(避免了對頭阻塞)、請求優先順序(在多路復用的同時保證高優先順序請求先傳送)、服務端推送、二進位制協議
預設埠443
內容加密:中間者無法直接檢視明文內容
驗證身份:通過證書認證客戶端訪問的是自己的伺服器
保護資料完整性:防止傳輸的內容被中間人冒充或串改
是對客戶端信任服務端的一種方式,可通過在黃色區域攔截進行偽造服務端
常用的http方法:
http1.0只支援get、post、heade
get、post、head(響應體無內容)、put、delete、trace、opions(檢視資源支援的請求方法)、connect
無狀態協議:
無狀態是指,每一次請求都不會有上下文,即在下一次連線不會記錄這次連線的資訊。
http\udp是無狀態的, tcp\ftp是有狀態的
http協議是無狀態無連線的,無連線是指一次請求一次連線,可以通過cookie來解決無狀態的問題,
快取:cookie: 如果不設定過期時間,則儲存在記憶體中,有效時間截止到會話結束;如果設定過期時間則儲存在硬碟中,直到過期才消失。儲存在
客戶端,包含path及domain,不允許跨域訪問及設定(子域除外)。單個cookie儲存的資料不超過4k,且只能儲存字串。向服務端發
起請求會自動在請求頭中攜帶上cookie,可以被使用者禁用
session: 儲存在服務端,預設有效期30分鐘,每次訪問會重新整理有效期。通常通過cookie儲存sessionid儲存在瀏覽器,當禁用cookie時會重
寫url拼接sessionid。可以儲存物件且無長度限制
localstorage: 將資料儲存在硬碟中,下次訪問仍有效,只能通過清除才會失效,類似前端資料庫,一般可以達到5m.
sessionstorage: 儲存在記憶體中,資料有效時間為當前會話,會話失效即資料失效,一般可達到5m
抓包:tcpdump -s0 -a
wireshark
React Refs 知識點整理記錄
一 refs的作用 通過refs,可以訪問到 1.dom節點。2.render方法中建立的react元素。class元件的例項 二 訪問節點或者例項有什麼用?為什麼要使用refs來訪問?訪問節點或者例項的需求場景 觸發強制動畫。整合第三方 dom 庫 因為有些場景,在react中,不使用refs就無...
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...