自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TCP為什么需要三次握手?用最通俗的話解釋給你聽

網(wǎng)絡(luò) 通信技術(shù)
TCP實(shí)現(xiàn)原理和為什么需要三次握手?兩次握手不可以?四次握手不可以?讀者可以帶著疑問,看一遍本篇博客的詳細(xì)講解。

[[422813]]

TCP實(shí)現(xiàn)原理和為什么需要三次握手?兩次握手不可以?四次握手不可以?讀者可以帶著疑問,看一遍本篇博客的詳細(xì)講解

ok,首先解釋原因之前還是要先復(fù)習(xí)一下TCP的基本知識(shí)和三次握手協(xié)議:

1、什么是TCP協(xié)議?

TCP:Transmission Control Protocol翻譯過來就是傳輸控制協(xié)議,TCP協(xié)議是一個(gè)面向連接的、可靠的、基于字節(jié)流的傳輸層協(xié)議

RFC 793對(duì)TCP連接的定義:

Connections:

  • The reliability and flow control mechanisms described above require that TCPs initialize and maintain certain status information for each data stream.
  • The combination of this information, including sockets, sequence numbers, and window sizes, is called a connection.

其大致意思是TCP連接是為了用于保證可靠性和流控制機(jī)制的,包括 Socket、序列號(hào)及窗口大小。

其中Socket是由IP加端口組成的,序列號(hào)是用來解決亂序問題的,而窗口大小則是用來做流量控制的。

2、TCP協(xié)議的特性

  • 面向連接:是指TCP是通過服務(wù)端和客戶端進(jìn)行連接的協(xié)議
  • 面向字節(jié)流:TCP服務(wù)端和客戶端之間的數(shù)據(jù)通訊是通過字節(jié)流數(shù)據(jù)傳輸?shù)?/li>
  • 可靠的:是指TCP服務(wù)端客戶端之間的數(shù)據(jù)傳輸是很穩(wěn)定的,即使網(wǎng)絡(luò)很差的情況,TCP都能保證將數(shù)據(jù)傳輸?shù)浇邮辗健?/li>

ps:TCP傳輸?shù)目煽啃缘靡嬗赥CP會(huì)記錄信息的發(fā)送狀態(tài),哪些數(shù)據(jù)收到了,哪些數(shù)據(jù)沒收到,TCP都是會(huì)記錄的,然后哪些丟包的情況,就是發(fā)送不成功的情況,TCP會(huì)重新發(fā)包,所以TCP的可靠性就是這么保證的

3、TCP三次握手執(zhí)行流程

TCP的三次握手執(zhí)行過程是面試中的一個(gè)很常見的問題,因?yàn)檫@個(gè)問題也是計(jì)算機(jī)的一個(gè)很重要的基礎(chǔ),所以需要認(rèn)真學(xué)習(xí)

關(guān)鍵字說明:

  • SYN:Synchronize Sequence Numbers,同步序列編號(hào)
  • ACK:Acknowledge Character,確認(rèn)字符
  • SEQ:Sequence Number,序列號(hào)

TCP三次握手執(zhí)行過程:

  • 首先,服務(wù)端和客戶端都是處于CLOSED狀態(tài)的,然后服務(wù)端啟動(dòng),監(jiān)聽端口,狀態(tài)變?yōu)長(zhǎng)ISTEN(監(jiān)聽)狀態(tài)
  • 客戶端為了請(qǐng)求資源,發(fā)送連接,發(fā)送同步序列號(hào)SYN,此時(shí)客戶端就變成了SYN-SEND狀態(tài)
  • 服務(wù)端接收到客戶端請(qǐng)求之后,發(fā)送SYN和ACK,然后服務(wù)端狀態(tài)就變成SYN-RCVD狀態(tài)
  • 客戶端接收到信息之后,再次發(fā)送ACK,然后變成ESTABLISHED(已確認(rèn))狀態(tài),服務(wù)端接收到返回信息后,狀態(tài)也變成ESTABLISHED(已確認(rèn))狀態(tài)

4、TCP協(xié)議為什么需要三次握手?

ok,知道了TCP的三次握手的基本工作原理之后,就可以解釋為什么TCP需要三次握手?為什么不設(shè)計(jì)成兩次握手就可以?

原因:避免重復(fù)連接

其實(shí)在RFC 793 Transmission Control Protocol里就有指出為什么要三次握手的原因

The principle reason for the three-way handshake is to prevent old duplicate connection initiations from causing confusion.

翻譯為中文大致意思是主要原因是為了防止舊的重復(fù)連接引起連接混亂問題

比如在網(wǎng)絡(luò)環(huán)境比較復(fù)雜的情況,客戶端可能會(huì)連續(xù)發(fā)送多次請(qǐng)求。如果只設(shè)計(jì)成兩次握手的情況,服務(wù)端只能一直接收請(qǐng)求,然后返回請(qǐng)求信息,也不知道客戶端是否請(qǐng)求成功。這些過期請(qǐng)求的話就會(huì)造成網(wǎng)絡(luò)連接的混亂。

所以設(shè)計(jì)成三次握手的情況,客戶端在接收到服務(wù)端SEQ+1的返回消息之后,就會(huì)知道這個(gè)連接是歷史連接,所以會(huì)發(fā)送報(bào)文給服務(wù)端,告訴服務(wù)端。

所以TCP設(shè)計(jì)成三次握手的目的就是為了避免重復(fù)連接。

然后可以設(shè)計(jì)成四次握手?五次握手?不可以?

答案是也是可以的,不過為了節(jié)省資源,三次握手就可以符合實(shí)際情況,所以就沒必要設(shè)計(jì)成四次握手、五次握手等等情況

 

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2023-09-07 16:46:54

TCP數(shù)據(jù)傳遞

2022-07-25 07:07:35

TCP客戶端服務(wù)器

2019-12-12 10:36:43

TCPSYNIP

2024-10-16 08:38:37

TCP編號(hào)信息

2021-05-28 09:08:20

TCP連接序列號(hào)

2024-07-10 12:00:42

2021-12-13 06:23:14

TCP三次握手網(wǎng)絡(luò)

2021-04-30 13:32:17

TCP三次握手網(wǎng)絡(luò)協(xié)議

2022-07-07 09:00:17

TCP 連接HTTP 協(xié)議

2019-05-14 10:09:06

TCP連接握手

2023-10-24 15:22:09

TCPUDP

2022-10-10 07:34:36

TCP三次握手區(qū)塊鏈

2020-12-08 06:34:16

TCP握手SYN 報(bào)文

2024-05-07 08:15:33

TCP四次揮手三次握手

2015-10-13 09:42:52

TCP網(wǎng)絡(luò)協(xié)議

2019-06-12 11:26:37

TCP三次握手四次揮手

2024-01-12 08:23:11

TCPACK服務(wù)器

2021-03-08 18:08:08

TCP Connect 協(xié)議

2024-10-09 20:54:16

2020-08-27 07:41:28

TCP協(xié)議數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)