简述tcp协议三报文握手过程_华为原理 | 传输层协议amp;交换转发原理
TCP協議:
TCP(Transmission Control Protocl)協議工作在TCP/IP通信模式的傳輸層,TCP是可靠傳輸協議,在傳輸數據之前需要先和接收者建立連接,通過序列號機制和重傳機制保證TCP數據的可靠性。
TCP協議特性
面向連接協議
會話多路復用
全雙工模式
錯誤檢查
數據包序列化
可靠性機制
數據恢復功能
數據分段
窗口機制 ??
TCP報文格式
TCP報文頭部是可變長頭部,最小頭部長度是20個字節,最大是60個字節。頭部長度的計算方法和IP一致,同樣是通過4個比特來標識TCP報文頭部長度。圖中展示了TCP協議報文結構。
圖?TCP協議報文結構
1、源端口(16 bit):TCP數據發送方的源端口號
2、目的端口(16 bit):TCP數據接收發的目的端口號
3、序列號(32bit):序列號用來標識從TCP發送端向TCP接收端發送的數據大小統計,單位為字節。通過序列號可以計算出發送方向接收方一共發送了多少個字節的數據。序列號是32 bit的無符號整數,取值范圍是1到2的32次方范圍內的隨機數,序列號到達2的32次方-1后會從0開始計算。
4、確認序列號(32bit):確認序列號用來標識TCP接收端從TCP發送方共計接收了多少個字節的數據,確認序列號的計算是在接收到TCP報文“序列號”的基礎上加上接收的數據長度作為確認序列號。在TCP協議中所有的控制報文算一個字節的數據,例如:SYN、FIN報文都數據控制報文。
5、首部長度(4bit):TCP的首部長度是可以變長的,首部長度范圍為20個字節~60個字節,標準頭部長度為20個字節。那么4個bit的首部長度最大值表示為15,那如何用來表示20~60個字節呢?這是因為這4個bit不是用來表示長度的,而是表示頭部中攜帶的數據行數。每一行的數據長度固定為4個字節,這樣可以用行數乘以4,計算出TCP頭部長度,15乘以4等于60,這也是可以表示的最大TCP頭部長度。
6、TCP標志位(16bit):其中3個比特位是保留位,另外ns、cwr、ece 標志位不常用,這里不做介紹。我們主要介紹后面6個比特位。
URG:緊急指針(urgent pointer)有效,只有URG標志位置位,緊急指針字段才會填充數據。ACK:確認標志位,用于確認接收到的TCP報文。
PSH:PSH標識位置位,表示TCP報文不進緩沖區,需要提交給應用層盡快處理。
RST:重建標志位,需要重新建立TCP會話。
SYN:建立連接標志位,需要建立TCP會話。
FIN:斷開連接標志位,需要斷開TCP會話。
7、窗口尺寸(16bit):窗口大小最大為65535,標識TCP接收方當前可以處理的數據大小。窗口大小是可以滑動的,可以變大也可以變小。這個和TCP接收方的處理能力有關系,如果TCP接收方處理能力下降,它會將窗口大小調小,這樣TCP發送方發送的數據大小也會隨之變小。如果TCP接收方處理能力變強,它會將窗口大小調大,TCP發送方發送的數據大小也會隨之變大。
8、效驗和(16bit):TCP發送端對TCP頭部和TCP填充數據做效驗,并將結果填充到效驗和字段。TCP接收方收到數據后,會重新對TCP頭部和TCP填充數據做效驗,并和效驗和字段的值對比對,如果一致則接收數據段并交給上層處理,不一致則丟棄數據段。
9、緊急指針(16bit):只有當URG標志位置1時緊急指針才有效,緊急指針是一個正向偏移量,和序列號字段中的值相加表示緊急數據最后一個字節的序號。TCP緊急方式是發送方向接收方發送緊急數據的一種方式,緊急指針用于緊急處理TCP的控制數據。
10、選項:標準TCP頭部中不攜帶選項字段,選項字段只能按4字節的倍數來填充(用于計算首部長度)。常見的選項字段有MSS和TCP MD5認證,MSS(Max segment size)最大段大小,用于表示標識TCP數據段可以填充的最大數據長度,TCP的數據分段可以避免IP分片。TCP MD5認證選項用來實現TCP認證的功能,在后續學習的BGP、LDP等協議中,可以利用TCP MD5實現認證功能。
數據:填充TCP數據,數據最大只能填充為MSS大小。
TCP會話的建立
由于TCP是一個面向連接的協議,發送數據前需要先和接收者提前建立連接,連接通常稱之為“會話”。TCP通過三次握手的可靠性機制來建立會話,所謂三次握手是指在TCP會話的建立過程中總共交換了3個TCP控制報文,通過這3個控制報文保證了TCP會話建立過程中的可靠性。TCP三次握手建立過程如圖中所示:
圖?TCP三次握手建立過程(一)
如圖中所示,假設現在主機A需要向主機B發送TCP數據,首先由主機A發起會話建立,向主機B發送一個設置“SYN”標志位的TCP控制報文,表示想和主機B建立會話連接,報文中的SEQ序列號字段會填充一個0到2的16次方范圍內的隨機數(只有SYN標志位置位的TCP報文才會填充一個隨機數),圖中SEQ序列號用0表示。
主機B收到SYN置位的TCP報文后,知道有人想和自己建立連接,主機B接收SYN報文并向主機A回復一個同時設置了“SYN”和“ACK”標志位的TCP報文,其中的“ACK”表示主機B同意和主機A建立連接,并確認主機A發送的“SYN”報文。而“SYN”表示主機B同時想和主機A建立一個會話連接,這是因為TCP協議是全雙工模式,建立一個會話可以實現數據的雙向發送。
圖TCP三次握手建立過程(二)
報文中的SEQ序列號字段填充一個0到2的16次方范圍內的隨機數,圖中主機B發送的序列號同樣用0表示。而確認序列號=接收到的序列號+數據長度,由于TCP協議中的控制報文的數據長度也算作一個字節,所以圖中的ACK SEQ為1(0+1)。通過確認序列號可以統計出已接收的數據總長度。如圖中所示:
主機A收到主機B發送的“SYN+ACK”后,回復一個“ACK”置位的TCP報文進行確認。回復的ACK報文中,SEQ序列號字段為1(0+1),由于主機A之前發送的SYN報文中的序列號為0,并且已經發送過一個字節數據(SYN報文),所以現在的SEQ序列號為1。通過序列號字段可以統計出發送方已發送的數據總長度。ACK SEQ確認序列號為1=主機B的發送序列號+數據長度(0+1)。如圖中所示:
圖TCP三次握手建立過程(三)
經過三次握手,主機A和主機B建立了兩個TCP會話,實現數據的雙向發送。
TCP會話的終止
TCP會話的終止需要經過四次握手斷開連接,原因是TCP 的會話是雙向的,會話兩端獨立的發送和接收數據,那么終止會話就需要雙向斷開連接。例如:主機A和主機B建立TCP會話后兩端都開始發送TCP數據,如果現在主機A的數據發送完了,主機A向主機B提出斷開連接,這只是個單方向的行為,只會斷開主機A到主機B的連接。而主機B到主機A的連接還保持正常,主機B還可以向主機A繼續發送數據,如果現在主機B的數據也發送完了,主機B向主機A提出斷開連接,連接雙向斷開后TCP會話終止。TCP協議四次握手終止會話的過程如圖中所示:
圖??TCP四次握手斷開連接
圖中主機A向主機B發送完數據后,主機A斷開和主機B的連接。主機A向主機B發送一個FIN置位的TCP控制報文,主機B收到FIN報文后,回復ACK報文確認收到的FIN。由于主機B也沒有數據在發給主機A,隨后主機B也向主機A發送一個FIN置位的TCP控制報文,斷開和主機A的連接。主機A收到FIN報文后,回復ACK報文確認收到的FIN。
TCP的確認與重傳
TCP協議發送的數據通過確認和重傳機制來保證可靠性,數據發送方用序列號來標識發送的數據,數據接收方收到數據后向發送方回復ACK進行接收確認,并通過確認序列號(ACK SEQ)確認接收到的數據長度。數據發送方收到ACK確認后知道接收方已經收到了數據,可以繼續發送數據。如果收不到ACK,則說明接收方可能沒有收到發送的數據,為了保證數據的可靠性,發送方需要重傳丟失的數據。
在TCP協議中判斷數據丟失需要重傳的機制有兩種,分別是定時器超時和快速重傳機制,定時器超時是指在超時定時器規定時間內,都沒有收到數據接收方回復的ACK確認,認為發送的這部分數據丟失,需要重新發送。通過這種方式數據發送方可以判斷出發送的數據已經丟失,但是每次都需要等定時器超時,發現的速度太慢。那我們可以想一下,是誰最先發現數據丟失的呢?答案肯定是數據接收方,接收方收不到數據只有兩種情況,1、根本就沒收到數據?2、收到的數據不完整。針對第一種情況只能靠發送方定時器超時后重傳,而第二種情況接收放知道自己有哪部分數據沒有收到(通過序列號機制),?那么接收方可以通過發送多個針對于丟棄數據的ACK確認報文(3個以上)來告知發送方這部分數據丟失,發送方在收到針對同一數據的多次ACK確認后,觸發快速重傳,重新發送這部分數據。
圖?TCP協議數據確認機制
圖中展示了TCP數據傳輸過程中的確認機制,主機A發送第一個數據段,標識數據段的序列號SEQ為1369,數據段長度是400個字節,主機B收到數據段后回復ACK報文確認數據段,ACK報文中的ACK SEQ=接收數據段中的序列號(1369)+ 數據長度(400),計算出回復的確認序列號為1769。主機A收到ACK 后開始發送第二個數據段,第二個數據段的SEQ1769(1369+400),標識已經發送過的數據長度,主機B收到第二個數據段后回復確認ACK,以此類推。
圖?TCP協議數據重傳機制一
圖中主機A在傳輸數據段過程中,部分數據段丟失,針對這部分數據段一致沒有收到ACK確認,主機A等待超時定時器超時后重傳丟失的數據段,這種依賴定時器超時來重傳數據段的機制速度較慢,這種場景下可以使用快速重傳。快速重傳機制如圖中所示:
圖?TCP協議數據重傳機制二
圖中,主機B針對丟失數據段發送多個ACK確認報文,主機A連續收到多個同樣的ACK報文,會觸發快速重傳機制,重傳這部分數據段,不需要待定超時定時器超時。
TCP滑動窗口
TCP協議的窗口機制有兩種,一種是通告窗口,另一種是擁塞窗口。通告窗口是數據接收方通告給發送方自己現在能夠緩存和處理數據的大小,通告窗口的大小是可變的,這和接收方當前的處理能力有關,如果接收方當前處理能比較強,接收方會將通告窗口調大并告知發送方,發送方就會增大數據發送量。如果接收方當前處理能力比較弱,接收方會將通告窗口大小調小并告知發送方,發送方就會減小數據發送量,這種調整通告窗口大小的機制叫做“滑動窗口”。而擁塞窗口用于控制數據的發送速率,TCP的數據發送方式采用慢啟動方式,每次發送的數據大小按2次方的方式成線性增長,持續增長過程中如果網絡出現擁塞并造成TCP數據段丟失,擁塞窗口會降為當前值的一半,將TCP發送數據的速率降為之前的一半,避免網絡擁塞導致的TCP重傳,降為一半后再次執行慢啟動的增長方式。圖中展示了滑動窗口工作原理。
圖?滑動窗口工作原理
? 圖中主機A為數據發送方,主機B為數據接收方。主機B通告給主機A的窗口大小為3,標識現在自己可以緩存和處理3個數據段,主機A收到主機B通告的窗口大小后,會按窗口的大小給主機B發送數據,一次性給主機B發送了3個數據段,之后便不在發送。因為主機A知道主機B只能處理3個,所以發送3個數據段后便不在發送,等于主機B的確認。
? 主機B收到數據段后,將數據段放入到緩存中等待處理,主機B在回復ACK的時候只處理了緩存中一個數據段,所以主機B將回復ACK報文中的窗口大小調小,調整為1。主機A收到ACK確認后,從報文中獲取到接收方的窗口大小為1,說明現在接收方只能處理1個數據段,后續主機A只向主機B發送了一個數據段后便不在發送,等待主機B的確認。
應用端口
使用TCP協議作為傳輸層協議的應用程序列表如下所示:
端口 | 協議 | 說明 |
21 | FTP | 文件傳輸協議,用于上傳、下載 |
23 | Telnet | 用于遠程登錄,通過連接目標計算機的這一端口,得到驗證后可以遠程控制管理目標計算機 |
25 | SMTP | 簡單郵件傳輸協議,用于發送郵件 |
53 | DNS | 域名服務,當用戶輸入網站的名稱后,由DNS負責將它解析成IP地址,這個過程中用到的端口號是53(其實大多數情況下DNS采用UDP 53端口) |
80 | HTTP | 超文本傳輸協議,通過HTTP實現網絡上超文本的傳輸 |
表7-1 TCP端口列表
MAC地址表(CAM表=內容可尋址內存)
交換機收到數據幀以后學習數據幀中源MAC地址構建MAC地址表。由于MAC地址是保存在內存中,那么交換機斷電或者重啟后MAC地址表丟棄。
構建MAC地址表之后,后續收到數據幀通過幀頭中的目的MAC地址查詢MAC地址表實現轉發。
MAC地址表的組成部分:
1、MAC地址(單播)?
2、接口ID ?
3、VLAN ID
交換機的轉發行為:
1、泛洪:組播幀、廣播幀、未知單播幀
2、轉發:目的MAC地址存在于MAC地址表中,
3、過濾(丟棄): 避免數據幀的轉發環路
交換機MAC地址的學習法則:
1、交換機的一個端口可以同時綁定多個不同的MAC地址
2、同一個MAC地址只能綁定到交換機的一個接口
? 交換機中有一個MAC地址表,里面存放了MAC地址與交換機端口的映射關系。MAC地址表也稱為CAM(Content Addressable Memory)表。
? 如圖所示,交換機對幀的轉發操作行為一共有三種:放洪(Flooding),轉發(Forwarding),丟棄(Discarding)。
泛洪:交換機把從某一端口進來的幀通過所有其它的端口轉發出去(注意,“所有其它的端口”是指除了這個幀進入交換機的那個端口以外的所有端口)。
轉發:交換機把從某一端口進來的幀通過另一個端口轉發出去(注意,“另一個端口”不能是這個幀進入交換機的那個端口)。
丟棄:交換機把從某一端口進來的幀直接丟棄。
交換機的基本工作原理可以概括地描述如下:
如果進入交換機的是一個單播幀,則交換機會去MAC地址表中查找這個幀的目的MAC地址。
1)如果查不到這個MAC地址,則交換機執行泛洪操作。?
2)如果查到了這個MAC地址,則比較這個MAC地址在MAC地址表中對應的端口是不是這個幀進入交換機的那個端口。如果不是,則交換機執行轉發操作。如果是,則交換機執行丟棄操作。如果進入交換機的是一個廣播幀,則交換機不會去查MAC地址表,而是直接執行泛洪操作。
[SW1]display?mac-address??\\查看MAC地址表[SW1]display mac-address aging-time \\查看MAC地址老化時間??Aging?time:?300?seconds[SW1]mac-address aging-time ? \\配置老化時間范圍,默認是300S,如果配置為0代表永遠不老化 <0,10-1000000> Aging-time seconds, 0 means that MAC aging function does not work努力學習,勤奮工作,讓青春更加光彩
再長的路,一步步也能走完,再短的路,不邁開雙腳也無法到達
總結
以上是生活随笔為你收集整理的简述tcp协议三报文握手过程_华为原理 | 传输层协议amp;交换转发原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息称松下将推出 S1 Ⅱ 相机新品,配
- 下一篇: agv ti 毫米波雷达_华为将利用 5