网络协议-网络分层、TCP/UDP、TCP三次握手和四次挥手
生活随笔
收集整理的這篇文章主要介紹了
网络协议-网络分层、TCP/UDP、TCP三次握手和四次挥手
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
網絡的五層劃分是什么?
- 應用層,常見協議:HTTP、FTP
- 傳輸層,常見協議:TCP.UDP
- 網絡層,常見協議:IP
- 鏈路層
- 物理層
TCP 和 UDP 的區別是什么
- TCP/UDP 都屬于傳輸層的協議
- TCP 是面向連接的傳輸層協議,能夠準確可靠的把數據傳遞給對方,當數據有丟包情況會重發,但是需要在建立和斷開連接需要至少7次的發包和收包,會浪費網絡流量,主要用在對可靠性要求較高的地方。
- UDP 是面向無連接的傳輸層協議,意思是只負責傳輸數據,不能確保對方是否收到數據和數據的正確順序,數據的正確性由應用層來校驗。主要用于高速傳輸和實時性要求較高的場合如音視頻會議,廣播。
TCP 三次握手和四次揮手
- 先來張時序圖
- 來張自己使用 wireShark 抓取的 tcp 數據包和 wireShark 生成的流量圖
- 數據包(三次握手是完整的,四次揮手不完整,丟了一個包)
- 流量圖(三次握手是完整的,四次揮手不完整,丟了一個包)
- 數據包(三次握手是完整的,四次揮手不完整,丟了一個包)
序號,確認號
- 序列號 Sequeuece number(Seq): 數據包本身的序列號,初始序列號是隨機的。
- 確認號 Acknowledgment number(Ack): 在接收端,用來通知發送端數據成功接收
- 標志位,標志位只有為 1 的時候才有效
- SYN: 創建一個連接
- ACK: 確認接收到的數據
- FIN: 終結一個連接
TCP 三次握手
- TCP 三次握手圖
- 為什么需要三次握手,兩次確認?
- 為什么客戶端還要發送一次確認呢,主要是為了防止已失效的連接請求報文突然又傳送到了服務器端,造成錯誤。比如:客戶端發送連接請求,因為網絡或者一些其他因素造成沒有在一定時間到達服務器端,所以客戶端沒有收到確認。于是客戶端會重發一次連接請求,通過三次握手與服務器建立連接,但是這時上次的請求到達服務器端了,服務器會誤以為客戶端又發來了一次新的連接請求,會向客戶端發送報文同意建立連接,但是客戶端已經建立了,就會放棄掉該報文,服務器端沒有收到響應,也就不會建立連接了。
TCP 四次揮手
- 四次揮手數據包
- 四次揮手流量圖
- 由于 TCP 連接是全雙工的,因此每個方向都必須單獨進行關閉。這一原則是當一方數據發送完成,發送一個標志位為 FIN 的報文來終止這一方向的連接,收到標志位為 FIN 的報文意味著這一方向上不會再收到數據了。但是在 TCP 連接上仍然能夠發送數據,直到這一方向也發送了 FIN 。發送 FIN 的一方執行主動關閉,另一方則執行被動關閉。
- 第一次揮手:客戶端發送報文,標志位 FIN =1,Seq = n,此時客戶端進入到 FIN_WAIT_1 狀態,表示客戶端沒有數據要發送給服務器
- 第二次揮手:服務端收到客戶端發送的 FIN 報文,然后向客戶端發送一個報文,設置標志位為 ACK =1 ,確認序列號為Ack = n+1 ,這是服務端進入 CLOSE_WAIT 狀態.表示客戶端到服務端的發送連接已經斷開。
- 第三次揮手:服務器發送報文到客戶端,報文標志位 FIN =1 序列號為 Seq = m,用來關閉服務器到客戶端的數據傳輸,服務端進行 LAST_ACK 狀態
- 第四次揮手:客戶端收到服務器發送的標志位為 FIN 的報文,客戶端進入到 CLIENT_WAIT 狀態,等待2MSL時間。然后發送一個標志位為 ACK = 1 的報文,確認序列號為 Ack = m+1 。完成四次揮手。
- 為什么要等待 2MSL
- 客戶端發送的第4次握手報文,服務器沒有收到。這時候服務器端會再次發送一個 FIN =1 的報文,而這個時候客戶端還處于 CLIENT_WAIT 狀態,所以可以再次發送確認消息。
TCP 發送失敗重發情況
- 抓包環境
- whireShark: 2.6.1
- Android device: HTC D820U
- Android Version: 6.0
- Android IP : 192.168.123.103
- Destination IP : 183.192.196.182
https://blog.csdn.net/sssnmnmjmf/article/details/68486261
https://blog.csdn.net/oney139/article/details/8103223
https://www.jianshu.com/p/9f3e879a4c9c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
總結
以上是生活随笔為你收集整理的网络协议-网络分层、TCP/UDP、TCP三次握手和四次挥手的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: navicat下载安装和激活一分钟完成
- 下一篇: 分析攻击IP来源地并画出饼图