http知識點整理記錄

2021-09-28 22:31:54 字數 3754 閱讀 9253

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不允許重複鍵出...