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

TCP \ UDP \ TCP 三次握手和四次揮手

網(wǎng)絡(luò) 通信技術(shù)
TCP 是面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。

什么是 TCP ?

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

  • 面向連接:一定是「一對(duì)一」才能連接,不能像 UDP 協(xié)議可以一個(gè)主機(jī)同時(shí)向多個(gè)主機(jī)發(fā)送消息,也就是一對(duì)多是無(wú)法做到的;
  • 可靠的:無(wú)論的網(wǎng)絡(luò)鏈路中出現(xiàn)了怎樣的鏈路變化,TCP 都可以保證一個(gè)報(bào)文一定能夠到達(dá)接收端;
  • 字節(jié)流:用戶消息通過(guò) TCP 協(xié)議傳輸時(shí),消息可能會(huì)被操作系統(tǒng)「分組」成多個(gè)的 TCP 報(bào)文,如果接收方的程序如果不知道「消息的邊界」,是無(wú)法讀出一個(gè)有效的用戶消息的。并且 TCP 報(bào)文是「有序的」,當(dāng)「前一個(gè)」TCP 報(bào)文沒(méi)有收到的時(shí)候,即使它先收到了后面的 TCP 報(bào)文,那么也不能扔給應(yīng)用層去處理,同時(shí)對(duì)「重復(fù)」的 TCP 報(bào)文會(huì)自動(dòng)丟棄。

UDP 和 TCP 的區(qū)別

1. 連接

  • TCP 是面向連接的傳輸層協(xié)議,傳輸數(shù)據(jù)前先要建立連接。
  • UDP 是不需要連接,即刻傳輸數(shù)據(jù)。

2. 服務(wù)對(duì)象

  • TCP 是一對(duì)一的兩點(diǎn)服務(wù),即一條連接只有兩個(gè)端點(diǎn)。
  • UDP 支持一對(duì)一、一對(duì)多、多對(duì)多的交互通信

3. 可靠性

  • TCP 是可靠交付數(shù)據(jù)的,數(shù)據(jù)可以無(wú)差錯(cuò)、不丟失、不重復(fù)、按需到達(dá)。
  • UDP 是盡最大努力交付,不保證可靠交付數(shù)據(jù)。

4. 擁塞控制、流量控制

  • TCP 有擁塞控制和流量控制機(jī)制,保證數(shù)據(jù)傳輸?shù)陌踩浴?/span>
  • UDP 則沒(méi)有,即使網(wǎng)絡(luò)非常擁堵了,也不會(huì)影響 UDP 的發(fā)送速率。

5. 首部開(kāi)銷(xiāo)

  • TCP 首部長(zhǎng)度較長(zhǎng),會(huì)有一定的開(kāi)銷(xiāo),首部在沒(méi)有使用「選項(xiàng)」字段時(shí)是 20 個(gè)字節(jié),如果使用了「選項(xiàng)」字段則會(huì)變長(zhǎng)的。
  • UDP 首部只有 8 個(gè)字節(jié),并且是固定不變的,開(kāi)銷(xiāo)較小。

6. 傳輸方式

  • TCP 是流式傳輸,沒(méi)有邊界,但保證順序和可靠。
  • UDP 是一個(gè)包一個(gè)包的發(fā)送,是有邊界的,但可能會(huì)丟包和亂序。

7. 分片不同

  • TCP 的數(shù)據(jù)大小如果大于 MSS 大小,則會(huì)在傳輸層進(jìn)行分片,目標(biāo)主機(jī)收到后,也同樣在傳輸層組裝 TCP 數(shù)據(jù)包,如果中途丟失了一個(gè)分片,只需要傳輸丟失的這個(gè)分片。
  • UDP 的數(shù)據(jù)大小如果大于 MTU 大小,則會(huì)在 IP 層進(jìn)行分片,目標(biāo)主機(jī)收到后,在 IP 層組裝完數(shù)據(jù),接著再傳給傳輸層。

TCP 和 UDP 應(yīng)用場(chǎng)景:

由于 TCP 是面向連接,能保證數(shù)據(jù)的可靠性交付,因此經(jīng)常用于:

  • FTP 文件傳輸;
  • HTTP / HTTPS;

由于 UDP 面向無(wú)連接,它可以隨時(shí)發(fā)送數(shù)據(jù),再加上UDP本身的處理既簡(jiǎn)單又高效,因此經(jīng)常用于:

  • 包總量較少的通信,如 DNS 、SNMP 等;
  • 視頻、音頻等多媒體通信;
  • 廣播通信;

TCP 三次握手和四次揮手

TCP 三次握手和四次揮手也是面試題的熱門(mén)考點(diǎn),它們分別對(duì)應(yīng) TCP 的連接和釋放過(guò)程。下面就來(lái)簡(jiǎn)單認(rèn)識(shí)一下這兩個(gè)過(guò)程

TCP 三次握手

在了解具體的流程前,我們需要先認(rèn)識(shí)幾個(gè)概念

  • SYN:它的全稱(chēng)是 Synchronize Sequence Numbers,同步序列編號(hào)。是 TCP/IP 建立連接時(shí)使用的握手信號(hào)。在客戶機(jī)和服務(wù)器之間建立 TCP 連接時(shí),首先會(huì)發(fā)送的一個(gè)信號(hào)??蛻舳嗽诮邮艿?SYN 消息時(shí),就會(huì)在自己的段內(nèi)生成一個(gè)隨機(jī)值 X。
  • SYN-ACK:服務(wù)器收到 SYN 后,打開(kāi)客戶端連接,發(fā)送一個(gè) SYN-ACK 作為答復(fù)。確認(rèn)號(hào)設(shè)置為比接收到的序列號(hào)多一個(gè),即 X + 1,服務(wù)器為數(shù)據(jù)包選擇的序列號(hào)是另一個(gè)隨機(jī)數(shù) Y。
  • ACK:Acknowledge character, 確認(rèn)字符,表示發(fā)來(lái)的數(shù)據(jù)已確認(rèn)接收無(wú)誤。最后,客戶端將 ACK 發(fā)送給服務(wù)器。序列號(hào)被設(shè)置為所接收的確認(rèn)值即 Y + 1。

如果用現(xiàn)實(shí)生活來(lái)舉例的話就是

小明 - 客戶端 小紅 - 服務(wù)端

  • 小明給小紅打電話,接通了后,小明說(shuō)喂,能聽(tīng)到嗎,這就相當(dāng)于是連接建立。
  • 小紅給小明回應(yīng),能聽(tīng)到,你能聽(tīng)到我說(shuō)的話嗎,這就相當(dāng)于是請(qǐng)求響應(yīng)。
  • 小明聽(tīng)到小紅的回應(yīng)后,好的,這相當(dāng)于是連接確認(rèn)。在這之后小明和小紅就可以通話/交換信息了。

TCP 四次揮手

在連接終止階段使用四次揮手,連接的每一端都會(huì)獨(dú)立的終止。下面我們來(lái)描述一下這個(gè)過(guò)程。

  • 首先,客戶端應(yīng)用程序決定要終止連接(這里服務(wù)端也可以選擇斷開(kāi)連接)。這會(huì)使客戶端將 FIN 發(fā)送到服務(wù)器,并進(jìn)入 FIN_WAIT_1 狀態(tài)。當(dāng)客戶端處于 FIN_WAIT_1 狀態(tài)時(shí),它會(huì)等待來(lái)自服務(wù)器的 ACK 響應(yīng)。
  • 然后第二步,當(dāng)服務(wù)器收到 FIN 消息時(shí),服務(wù)器會(huì)立刻向客戶端發(fā)送 ACK 確認(rèn)消息。
  • 當(dāng)客戶端收到服務(wù)器發(fā)送的 ACK 響應(yīng)后,客戶端就進(jìn)入 FIN_WAIT_2 狀態(tài),然后等待來(lái)自服務(wù)器的 FIN 消息
  • 服務(wù)器發(fā)送 ACK 確認(rèn)消息后,一段時(shí)間(可以進(jìn)行關(guān)閉后)會(huì)發(fā)送 FIN 消息給客戶端,告知客戶端可以進(jìn)行關(guān)閉。
  • 當(dāng)客戶端收到從服務(wù)端發(fā)送的 FIN 消息時(shí),客戶端就會(huì)由 FIN_WAIT_2 狀態(tài)變?yōu)?TIME_WAIT 狀態(tài)。處于 TIME_WAIT 狀態(tài)的客戶端允許重新發(fā)送 ACK 到服務(wù)器為了防止信息丟失??蛻舳嗽?TIME_WAIT 狀態(tài)下花費(fèi)的時(shí)間取決于它的實(shí)現(xiàn),在等待一段時(shí)間后,連接關(guān)閉,客戶端上所有的資源(包括端口號(hào)和緩沖區(qū)數(shù)據(jù))都被釋放。

還是可以用上面那個(gè)通話的例子來(lái)進(jìn)行描述

  • 小明對(duì)小紅說(shuō),我所有的東西都說(shuō)完了,我要掛電話了。
  • 小紅說(shuō),收到,我這邊還有一些東西沒(méi)說(shuō)。
  • 經(jīng)過(guò)若干秒后,小紅也說(shuō)完了,小紅說(shuō),我說(shuō)完了,現(xiàn)在可以掛斷了
  • 小明收到消息后,又等了若干時(shí)間后,掛斷了電話。
責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2015-10-13 09:42:52

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

2021-01-29 06:11:08

TCP通信三次握手

2021-05-18 12:27:40

TCP控制協(xié)議

2024-01-12 08:23:11

TCPACK服務(wù)器

2019-06-12 11:26:37

TCP三次握手四次揮手

2017-09-25 21:27:07

TCP協(xié)議數(shù)據(jù)鏈

2019-02-01 09:38:16

2021-07-03 17:47:25

TCP控制協(xié)議

2014-09-19 09:46:46

TCPIP

2023-10-28 09:07:57

TCP面試三次握手

2021-05-28 09:08:20

TCP連接序列號(hào)

2020-06-29 14:50:47

TCP狀態(tài)ACK

2020-02-17 10:10:43

TCP三次握手四次揮手

2023-11-01 08:04:08

WiresharkTCP協(xié)議

2015-11-09 09:58:56

2022-11-17 10:20:49

TCP三次握手四次揮手

2023-10-17 15:44:19

TCP四次揮手

2018-08-10 09:23:19

TCP考點(diǎn)數(shù)據(jù)

2021-08-04 08:01:28

Linux 三次握手Linux 系統(tǒng)

2019-12-13 07:31:04

TCP三次握手四次揮手
點(diǎn)贊
收藏

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