-
TCP協(xié)議的三次握手和四次握手
TCP協(xié)議的三次握手其實(shí)就是解決連接的可靠性娇昙。
解釋一下相關(guān)符號(hào):
- TCP標(biāo)志位(Flags):
SYN
(synchronous建立連接)、ACK
(acknowledgement 確認(rèn))笤妙、FIN
(finish結(jié)束連接)冒掌、PSH
(push推送)、RST
(reset重置連接)蹲盘、URG
(urgent緊急)股毫、還有幾個(gè)不太常用的
- seq (Sequence number 順序號(hào)碼) 一般是個(gè)隨機(jī)值
- ack (Acknowledge number 確認(rèn)號(hào)碼)
三次握手的過(guò)程:
三次握手中的SYN=1
表示該標(biāo)志位激活。
- 客戶端A發(fā)送一個(gè)SYN包召衔,其中包含一個(gè)seq铃诬,產(chǎn)生一個(gè)隨機(jī)值這里我稱為x,這個(gè)時(shí)候客戶端A狀態(tài)變成SYN-SENT狀態(tài)
- 服務(wù)器B收到客戶端A發(fā)來(lái)的SYN包,確認(rèn)信息并發(fā)送一個(gè)(SVN+ACK)包返回給客戶端A:seq=y(這里也是服務(wù)端產(chǎn)生的另外一個(gè)隨機(jī)值), ack=x+1,服務(wù)端B狀態(tài)變成SYN-RCVD狀態(tài)
- 客戶端A收到服務(wù)端發(fā)來(lái)的SYN包苍凛,確認(rèn)信息并發(fā)送一個(gè)(SYN+ACK)包給服務(wù)端B: seq=x+1, ack=y+1, 此包發(fā)送完畢趣席,客戶端和服務(wù)端進(jìn)入ESTABLISHED狀態(tài).完成三次握手,這樣就保證了連接的可靠性醇蝴。
- 這里不難發(fā)現(xiàn)宣肚,ack一般都是將收到的seq值 + 1
說(shuō)白了:
第一步,A為了確認(rèn)是否能將數(shù)據(jù)發(fā)送到B
第二步哑蔫,B確認(rèn)了A可以向自己發(fā)送數(shù)據(jù)钉寝,然后發(fā)送數(shù)據(jù)給A是為了確認(rèn)是否可以發(fā)送數(shù)據(jù)到A,并且告訴A它可以收到A給它發(fā)送的消息
第三步闸迷,A確認(rèn)了B可以給自己發(fā)送消息嵌纲,也知道自己可以給B發(fā)消息,然后發(fā)送數(shù)據(jù)給B是為了告訴B也可以發(fā)送數(shù)據(jù)到A腥沽。到此逮走,雙方都確認(rèn)了可以收發(fā)消息〗裱簦可靠連接就建立了师溅!
-
http請(qǐng)求
-
請(qǐng)求報(bào)文
請(qǐng)求報(bào)文由三部分組成:請(qǐng)求行、請(qǐng)求頭盾舌、請(qǐng)求實(shí)體
請(qǐng)求行由①②③組成墓臭,空格分割
① 請(qǐng)求方法:常用:GET、POST妖谴、DELETE 不常用:PUT窿锉、OPTIONS酌摇、PATCH、TRACE嗡载、HEAD窑多、CONNECT
② 請(qǐng)求URL
③ HTTP協(xié)議/協(xié)議版本
④ 請(qǐng)求頭:由頭部字段名和值組成
⑤ 請(qǐng)求體(一般不用)
請(qǐng)求方法 | 描述 |
---|---|
GET | 請(qǐng)求一個(gè)指定資源的表示形式遥巴。使用GET請(qǐng)求只被用于獲取數(shù)據(jù) |
POST | POST方法用于將實(shí)體提交到指定資源千康,通常導(dǎo)致再服務(wù)器上的狀態(tài)變化和副作用 |
DELETE | DELETE方法刪除指定的資源。 |
PUT | PUT方法用請(qǐng)求有效載荷替換目標(biāo)資源的所有當(dāng)前表示铲掐。 |
PATCH | PATCH方法用于對(duì)資源應(yīng)用部分修改吧秕。 |
TRACE | TRACE方法沿著到目標(biāo)資源的路徑執(zhí)行一個(gè)消息環(huán)回測(cè)試 |
HEAD | HEAD方法請(qǐng)求一個(gè)與GET請(qǐng)求的響應(yīng)相同的響應(yīng),但沒(méi)有響應(yīng)體. |
CONNECT | CONNECT方法建立一個(gè)到由目標(biāo)資源標(biāo)識(shí)的服務(wù)器的隧道 |
常見的請(qǐng)求頭
-
常見狀態(tài)碼
-
TLS