day25-TCP三次握手四次揮手以及過程中狀態(tài)轉(zhuǎn)換

TCP/IP

TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的 可靠 ? ? ? ? ? ?的、基于字節(jié)流的傳輸層通信協(xié)議

UDP 是User Datagram Protocol的簡稱, 中文名是用戶數(shù)據(jù)報協(xié)議,是一種無連接的傳輸層協(xié)議

TCP 傳輸控制協(xié)議? 面向連接的協(xié)議(同步傳輸)? 可靠傳輸協(xié)議? 傳輸效率低 ?na

UDP 用戶報文協(xié)議? 無連接協(xié)議? ? (異步傳輸)? 不可靠傳輸協(xié)議 傳輸效率高?

系統(tǒng)中:

異步傳輸數(shù)據(jù): 類似離線傳輸? 不需要進行確認?

? ? 優(yōu)點: 傳輸效率較高

缺點: 安全性不高

同步傳輸數(shù)據(jù): 類似在線傳輸? 需要進行確認

? ? 優(yōu)點: 安全性高

缺點: 傳輸效率較低


1.TCP協(xié)議中重要原理

? ? 1) TCP三次握手過程? -- 完成網(wǎng)絡連接建立

? TCP報文結(jié)構(gòu):

? a 源端口地址? ? 返回數(shù)據(jù)包目標端口地址?

? b 目標端口地址? 要和服務端哪個網(wǎng)絡服務建立連接

? 端口的數(shù)值范圍: 1-65535 是通過報文結(jié)構(gòu)獲知的

? 根據(jù)報文結(jié)構(gòu) 源端口和目標端口各占用16個bit

? 公式: 2的n次方 n占用了多少比特

? 占用了1bit

? 端口范圍: 0 1? 2種? 2的1次方=2 0-1? ? ? ?

? 占用了2bit

? 端口范圍: 00(0) 01(1) 10(2) 11(3) 4種? 2的2次方=4 0-3

? 占用了3bit

? 端口范圍: 000(0) 001(1) 010(2) 011(3) 100(4) 101(5) 110(6) 111(7)? 8種 2的3次方=8 0-7

? 占用了16bit

? 端口范圍: 2的16次方=65536? 0-65535 --- 1-65535

? PS: 一般0號端口不被使用

? c Sequence Number(序列號)

? d Acknowledgement Number(確認號)


? 特殊6bit作為報文結(jié)構(gòu)中的控制位:

? syn(連接)? --- 請求建立連接控制字段

? ack(確認)? --- 表示確認控制字段

? fin(斷開)? --- 請求斷開連接控制字段

? 說明: 控制字段數(shù)值置為1表示控制功能開啟 默認為0


? 三次握手詳細過程:

? 第一次握手: 發(fā)送TCP數(shù)據(jù)報文 客戶端 -- 服務端

? ? ? ? ? ? ? a TCP數(shù)據(jù)報文中,需要將syn控制字段改為1

????????????? b TCP數(shù)據(jù)報文中,需要將seq序列號信息發(fā)出 seq=x

? 第二次握手: 發(fā)送TCP數(shù)據(jù)報文 服務端 -- 客戶端

? ? ? ? ? ? ? ?a TCP數(shù)據(jù)報文中,需要將ack控制字段改為1

? ? ? ? ? ?????b TCP數(shù)據(jù)報文中,同時將syn控制字段改為1

????????????? c TCP數(shù)據(jù)報文中,同時將ack確認號信息發(fā)出 ack=x+1

????????????? d TCP數(shù)據(jù)報文中,同時將seq序列號信息發(fā)出 seq=y

? 第三次握手: 發(fā)送TCP數(shù)據(jù)報文 客戶端 -- 服務端

? ? ? ? ? ? ? a TCP數(shù)據(jù)報文中,需要將ack控制字段改為1

????????????? b TCP數(shù)據(jù)報文中,同時將ack確認號信息發(fā)出 ack=y+1

????????????? c TCP數(shù)據(jù)報文中,同時將seq序列號信息發(fā)出 seq=x+1

? ?2.TCP四次揮手過程? -- 完成網(wǎng)絡連接斷開

? 第一次揮手: 發(fā)送TCP數(shù)據(jù)報文 客戶端 -- 服務端

? ? ? ? ? ? ? a TCP數(shù)據(jù)報文中, 需要將fin控制字段改為1

????????????? b TCP數(shù)據(jù)報文中, 同時將ack控制字段改為1

? ? ? ? ? ? ? ? ? ? 也包含seq和ack確認號信息

? 第二次揮手: 發(fā)送TCP數(shù)據(jù)報文 服務端 -- 客戶端

? ? ? ? ? ? ? ? ?a TCP數(shù)據(jù)報文中, 需要將ack控制字段改為1

? 第三次揮手: 發(fā)送TCP數(shù)據(jù)報文 服務端 -- 客戶端

? ? ? ? ? ? ? ? ? a TCP數(shù)據(jù)報文中, 需要將ack控制字段改為1 ?

? ? ? ? ? ? ? ? ? b TCP數(shù)據(jù)報文中, 同時將fin控制字段改為1

? 第四次揮手: 發(fā)送TCP數(shù)據(jù)報文 客戶端 -- 服務端

? ? ? ? ? ? ? ? ? a TCP數(shù)據(jù)報文中, 需要將ack控制字段改為1

擴展: 如何抓取網(wǎng)絡數(shù)據(jù)包(抓包軟件)?

windows: Wireshark

linux: tcpdump命令

3. TCP 11種狀態(tài)集轉(zhuǎn)換(了解 -- 架構(gòu)層面)

? ? 1) 以后可以更好排查系統(tǒng)網(wǎng)絡問題

? 2) 以后學習網(wǎng)絡編程會有幫助

TCP三次握手過程: 服務端和客戶端狀態(tài)變化(5種狀態(tài)變化)

? ? 第一歷程: 初始狀態(tài)信息

客戶端狀態(tài)為: closed

服務端狀態(tài)為: closed

第二歷程: 服務端開啟相應服務

服務端狀態(tài)為: closed -- LISTEN

第三歷程: 發(fā)送建立連接請求(客戶端) == 三次握手第一次

客戶端發(fā)送syn信息

客戶端狀態(tài)為: closed -- syn_sent

第四歷程: 接收建立連接請求(服務端) == 三次握手第二次

服務端接受syn信息, 發(fā)送確認以及請求建立連接信息(ack syn)

服務端狀態(tài)為: LISTEN -- syn_rcvd

? ? 第五歷程: 發(fā)送最后確認信息(客戶端) == 三次握手第三次

? ? 客戶端發(fā)送ack信息

? ? 客戶端狀態(tài)為: syn_sent -- established

? ? 第六歷程: 接收最后確認信息(服務端)

? ? 服務端接收ack信息

? ? 服務端狀態(tài)為: syn_rcvd -- established

? ? 結(jié)論: 只有服務端和客戶端都統(tǒng)一處于established連接建立狀態(tài), 才能正常傳輸數(shù)據(jù)信息

TCP四次揮手過程: 服務端和客戶端狀態(tài)變化(5種狀態(tài)變化)

第一個歷程: 初始狀態(tài)信息

客戶端狀態(tài)為: established

服務端狀態(tài)為: established

第二個歷程: 發(fā)送斷開連接請求(客戶端) == 四次揮手第一次

客戶端發(fā)送fin請求斷開連接字段

客戶端狀態(tài)為: established -- fin_wait1

第三個歷程: 接收斷開連接請求(服務端) == 四次揮手第二次

服務端接受fin請求斷開連接字段 發(fā)出確認信息(ack=1)

服務端狀態(tài)為: established -- close_wait

第四個歷程: 接收確認斷開信息(客戶端)

客戶端接受服務端發(fā)出的確認信息(ack=1)

客戶端狀態(tài)為: fin_wait1 -- fin_wait2

第五個歷程: 發(fā)送斷開連接請求(服務端) == 四次揮手第三次

服務端發(fā)送fin請求斷開連接字段 同時還會再次發(fā)送確認字段

服務端狀態(tài)為: close_wait -- last_ack

第六個歷程: 接收斷開連接請求(客戶端) 發(fā)送最后確認信息 == 四次揮手第四次

客戶端接收斷開連接請求 同時發(fā)送最后確認信息ack=1

客戶端狀態(tài)為: fin_wait2? -- time_wait (等時間 60s 90s 120s???)

第七個歷程: 接收最后確認信息(服務端)

服務端狀態(tài)為: last_ack? -- closed

第八個歷程: 等待時間結(jié)束

客戶端狀態(tài)為: time_wait -- closed


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容