免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
TCP三次握手過程

前言

TCP 三次握手過程對于面試是必考的一個,所以不但要掌握 TCP 整個握手的過程,其中有些小細節(jié)也更受到面試官的青睞。

學(xué)習導(dǎo)圖

一、TCP 是什么?

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

我們知道了上述了解到了 TCP 的定義,通俗一點的講,TCP 就是一個雙方通信的一個規(guī)范標準(協(xié)議)。

我們在學(xué)習 TCP 握手過程之前,首先必須了解 TCP 報文頭部的一些標志信息,因為在 TCP 握手的過程中,會使用到這些報文信息,如果沒有掌握這些信息,在學(xué)習握手過程中,整個人處于懵逼狀態(tài),也是為了能夠深入 TCP 三次握手的原理。

二、TCP 頭部報文

2.1 source port 和 distination port

  • 兩者分別為「源端口號」和「目的端口號」。源端口號就是指本地端口,目的端口就是遠程端口。

一個數(shù)據(jù)包(pocket)被解封裝成數(shù)據(jù)段(segment)后就會涉及到連接上層協(xié)議的端口問題。

可以這么理解,我們可以想象發(fā)送方很多的窗戶,接收方也有很多的窗戶,這些窗口都標有不同的端口號,源端口號和目的端口號就分別代表從哪個規(guī)定的串口發(fā)送到對方接收的窗口。不同的應(yīng)用程度都有著不同的端口,之前網(wǎng)絡(luò)分層的文章中有提到過。

  • 擴展:應(yīng)用程序的端口號和應(yīng)用程序所在主機的 IP 地址統(tǒng)稱為 socket(套接字),IP:端口號, 在互聯(lián)網(wǎng)上 socket 唯一標識每一個應(yīng)用程序,源端口 源IP 目的端口 目的IP稱為”套接字對“,一對套接字就是一個連接,一個客戶端與服務(wù)器之間的連接。


2.2 Sequence Numbe

  • 稱為「序列號」。用于 TCP 通信過程中某一傳輸方向上字節(jié)流的每個字節(jié)的編號,為了確保數(shù)據(jù)通信的有序性,避免網(wǎng)絡(luò)中亂序的問題。接收端根據(jù)這個編號進行確認,保證分割的數(shù)據(jù)段在原始數(shù)據(jù)包的位置。

再通俗一點的講,每個字段在傳送中用序列號來標記自己位置的,而這個字段就是用來完成雙方傳輸中確保字段原始位置是按照傳輸順序的。(發(fā)送方是數(shù)據(jù)是怎樣一個順序,到了接受方也要確保是這個順序)

  • PS:初始序列號由自己定,而后緒的序列號由對端的 ACK 決定:SN_x = ACK_y (x 的序列號 = y 發(fā)給 x 的 ACK),這里后邊會講到。

2.3 Acknowledgment Numbe

  • 稱為「確認序列號」。確認序列號是接收確認端所期望收到的下一序列號。確認序號應(yīng)當是上次已成功收到數(shù)據(jù)字節(jié)序號加1,只有當標志位中的 ACK 標志為 1 時該確認序列號的字段才有效。主要用來解決不丟包的問題。

若確認號=N,則表明:到序號N-1為止的所有數(shù)據(jù)都已正確收到。

在這里,現(xiàn)在我們只需知道它的作用是什么,就是在數(shù)據(jù)傳輸?shù)臅r候是一段一段的,都是由序列號進行標識的,所以說,接收端每接收一段,之后就想要的下一段的序列號就稱為「確認序列號」。


2.4 TCP Flag


TCP 首部中有 6 個標志比特,它們中的多個可同時被設(shè)置為 1,主要是用于操控 TCP 的狀態(tài)機的,依次為URG,ACK,PSH,RST,SYN,F(xiàn)IN。

不要求初學(xué)者全部掌握,在這里只講三個重點的標志:


2.4.1 ACK


這個標識可以理解為發(fā)送端發(fā)送數(shù)據(jù)到接收端,發(fā)送的時候 ACK 為 0,標識接收端還未應(yīng)答,一旦接收端接收數(shù)據(jù)之后,就將 ACK 置為 1,發(fā)送端接收到之后,就知道了接收端已經(jīng)接收了數(shù)據(jù)。

  • 此標志表示「應(yīng)答域有效」,就是說前面所說的TCP應(yīng)答號將會包含在 TCP 數(shù)據(jù)包中;有兩個取值:0 和 1,為 1 的時候表示應(yīng)答域有效,反之為 0;


2.4.2 SYN

  • 表示「同步序列號」,是 TCP 握手的發(fā)送的第一個數(shù)據(jù)包。

用來建立 TCP 的連接。SYN 標志位和 ACK 標志位搭配使用,當連接請求的時候,SYN=1,ACK=0連接被響應(yīng)的時候,SYN=1,ACK=1;這個標志的數(shù)據(jù)包經(jīng)常被用來進行端口掃描。掃描者發(fā)送一個只有 SYN 的數(shù)據(jù)包,如果對方主機響應(yīng)了一個數(shù)據(jù)包回來 ,就表明這臺主機存在這個端口??聪旅鎰赢嫞?br>

2.4.3 FIN

  • 表示發(fā)送端已經(jīng)達到數(shù)據(jù)末尾,也就是說雙方的數(shù)據(jù)傳送完成,沒有數(shù)據(jù)可以傳送了,發(fā)送FIN標志位的 TCP 數(shù)據(jù)包后,連接將被斷開。這個標志的數(shù)據(jù)包也經(jīng)常被用于進行端口掃描。

這個很好理解,就是說,發(fā)送端只剩最后的一段數(shù)據(jù)了,同時要告訴接收端后邊沒有數(shù)據(jù)可以接受了,所以用FIN標識一下,接收端看到這個FIN之后,哦!這是接受的最后的數(shù)據(jù),接受完就關(guān)閉了。動畫如下:

2.5 Window size


稱為滑動窗口大小。所說的滑動窗口,用來進行流量控制。


3、為什么進行 TCP 三次握手?


如果之前你不了解網(wǎng)絡(luò)分層的話,建議看看寫的文章。

你真的懂網(wǎng)絡(luò)分層協(xié)議嗎?

第一,為了確認雙方的接收與發(fā)送能力是否正常。第二,指定自己的初始化序列號,為后面的可靠傳送做準備。第三,如果是 https 協(xié)議的話,三次握手這個過程,還會進行數(shù)字證書的驗證以及加密密鑰的生成到。

如果你了解 UDP 的話,TCP 的出現(xiàn)正式彌補了 UDP 不可靠傳輸?shù)娜秉c。但是 TCP 的誕生,也必然增加了連接的復(fù)雜性。


4、TCP 三次握手過程?


TCP 三次握手的過程掌握最重要的兩點就是客戶端和服務(wù)端狀態(tài)的變化,另一個是三次握手過程標志信息的變化,那么掌握 TCP 的三次握手就簡單多了。下面我們就以動畫形式進行拆解三次握手過程。

 初始狀態(tài):客戶端處于 closed(關(guān)閉)狀態(tài),服務(wù)器處于 listen(監(jiān)聽) 狀態(tài)。

 第一次握手:客戶端發(fā)送請求報文將 SYN = j(1)初始化序列號發(fā)送給客戶端,發(fā)送完之后客戶端處于SYN_Send狀態(tài)。

 第二次握手:服務(wù)端受到 SYN 請求報文之后,如果同意連接,會以自己的SYN(服務(wù)端) = K(0)ack(1) = SYN(客戶端) 1(ACK = 1)報文作為應(yīng)答,服務(wù)器為SYN_Receive狀態(tài)。

第三次握手: 客戶端接收到服務(wù)端的 SYN ACK,然后發(fā)送 ack = SYN(服務(wù)端) 1(ACK = 1)確認包作為應(yīng)答,客戶端轉(zhuǎn)為established狀態(tài)。

5、為什么不是一次、二次握手?

  • 防止了服務(wù)器端的一直等待而浪費資源。

為了防止已失效的連接請求報文段突然又傳送到了服務(wù)端,因而產(chǎn)生錯誤。如果此時客戶端發(fā)送的延遲的握手信息服務(wù)器收到,然后服務(wù)器進行響應(yīng),認為客戶端要和它建立連接,此時客戶端并沒有這個意思,但 server 卻以為新的運輸連接已經(jīng)建立,并一直等待 client 發(fā)來數(shù)據(jù)。這樣,server 的很多資源就白白浪費掉了。

原文鏈接:https://blog.csdn.net/qq_36903042/article/details/102513465

來源:https://www.icode9.com/content-4-509301.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
WireShark抓包分析
深度解密 TCP 三次握手與四次揮手
吊打面試官!近 40 張圖解被問千百遍的 TCP 三次握手和四次揮手面試題
TCP三次握手、四次揮手過程及原理
結(jié)合Wireshark捕獲分組深入理解TCP/IP協(xié)議棧之TCP協(xié)議(TCP報文格式+三次握手實例)
關(guān)于三次握手與四次揮手,面試官想考我們什么?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服