溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TCP協(xié)議詳解,你從未見過額全新版本

發(fā)布時間:2020-06-17 15:26:09 來源:網(wǎng)絡 閱讀:482 作者:wx5d8a17679fa1b 欄目:云計算

前言:

TCP/IP協(xié)議簇的傳輸層協(xié)議主要有兩個,TCP(Transimission Control Protocol,傳輸控制協(xié)議)和UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)

一:TCP協(xié)議介紹

TCP是面向連接的,可靠的進程到進程通信的協(xié)議。

TCP提供全雙工服務,即數(shù)據(jù)可在同一時間雙向傳輸,每一個TCP都有發(fā)送緩存和接收緩存,用來臨時存儲數(shù)據(jù)。

二:TCP報文格式

2.1TCP報文段

TCP將若干個字節(jié)構成一個分組,成為報文段。

TCP報文段封裝在IP數(shù)據(jù)報中。

TCP協(xié)議詳解,你從未見過額全新版本

2.2TCP報文段格式

TCP協(xié)議詳解,你從未見過額全新版本

源端口號:16位字段,為發(fā)送方進程對應的端口號。

目標端口號:16位字段,對應的是接收端的進程,接收端收到數(shù)據(jù)后,根據(jù)這個端口號來確定吧這個數(shù)據(jù)送給哪個應用程序的進程。

序號:當TCP從進程接收數(shù)據(jù)字節(jié)時,就把他們存儲在發(fā)送緩存中,并對每一個字節(jié)進行編號。

確認號:確認號是對發(fā)送端的確認信息。用它來告訴發(fā)送端這個序號之前的數(shù)據(jù)段都已經(jīng)收到。如確認號是X,就表示前X-1個數(shù)據(jù)段都已經(jīng)收到。

首部長度:一般是20字節(jié),最大可以擴展為60字節(jié)。用它可以確定首部數(shù)據(jù)結構的字節(jié)長度。

保留:作為今后擴展功能使用,現(xiàn)在還沒有使用到。

控制位:這六位作用很重要,TCP的連接,傳輸和斷開都受這六個控制位的指揮。各位的含義如下。

URG:緊急指針有效位。只有0和1,1表示指針開啟。數(shù)據(jù)傳輸時,先放在緩存(內(nèi)存)中,臨時保存起來,緊急指針位是指可以在內(nèi)存中優(yōu)先提取數(shù)據(jù)。

PSH:標志位=1時要求接收方盡快將數(shù)據(jù)段送達應用層。即PSH=1時,不經(jīng)過緩存,直接將數(shù)據(jù)段送達應用層。優(yōu)先級高于URG。

<u>ACK</u>:確認位。只有當ACK=1時,確認序列號才有效。當ACK=0時,確認序列號字段無效。

<u>SYN</u>:連接位。同步序號位,TCP需要建立連接時將這個值設置為1.

<u>FIN</u>:斷開連接標識。發(fā)送端完成發(fā)送任務位,當TCP完成數(shù)據(jù)傳輸需要斷開連接時,提出斷開連接的一方將這個值設置為1.

RST:重新建立連接TCP連接時使用。,當RST=1時,通知重新建立TCP連接。

窗口大?。河糜谡f明本地可接收數(shù)據(jù)段的數(shù)目,窗口大小是可變的。當網(wǎng)絡通暢是窗口值變大可以加快傳輸速度,當網(wǎng)絡不穩(wěn)定時減小這個值可以保證網(wǎng)絡數(shù)據(jù)的可靠傳輸。TCP協(xié)議中的流量控制機制就是依靠變化窗口值的大小實現(xiàn)的。

校驗和:用來做差錯控制。在發(fā)送TCP數(shù)據(jù)段時,由發(fā)送端計算校驗和,到達目的地時再進行一次校驗和計算。若兩次校驗和一致,則說明數(shù)據(jù)基本是正確的,否則將認為數(shù)據(jù)已被破壞,接收端將丟棄數(shù)據(jù)。

緊急指針:和URG配合使用,當URG=1時有效。

選項:在TCP首部可以有多達40字節(jié)的可選信息。

三:TCP連接--三次握手

3.1第一次握手

TCP協(xié)議詳解,你從未見過額全新版本

建立連接過程:PC1發(fā)送建立連接請求,SYN標志位設為1.

TCP協(xié)議詳解,你從未見過額全新版本

3.2第二次握手

這一次握手實際上分為兩部分來完成。

第一部分:PC2收到PC1的請求,向PC1回復一個確認信息,此過程的典型標志就是TCP的ACK控制位為1。且確認序列號是PC1的初始序列號加1.

第二部分:PC2收到請求后需要回復。即PC2也向PC1發(fā)送建立連接的請求,此過程的典型標志和第一次握手一樣,即TCP的SYN控制位為1.

為了提高效率,一般將這里兩個部分合并在一個數(shù)據(jù)包里實現(xiàn)。

3.3第三次握手

PC1收到了PC2的回復(包含請求和確認),此時需要向PC2回復一個確認信息,此過程的典型標志就是TCP的ACK控制位為1.且確認序列號是PC2的初始序列號加1.

此時就完成了三次握手

3.4總結

上圖中

Seq表示請求序列號。

Ack表示確認序列號

SYN控制位只有在請求建立連接時才被設為1.

四:TCP四次揮手

參加數(shù)據(jù)交換的雙方中的任何一方(客戶和服務器)都可以關閉連接。TCP斷開連接分四步,也稱為四次揮手。

TCP協(xié)議詳解,你從未見過額全新版本

TCP協(xié)議詳解,你從未見過額全新版本

4.1第一次揮手

PC1發(fā)送 FIN 和 ACK 控制位為1的TCP報文段給PC2.

FIN:斷開連接標識,提出斷開連接的一方將這個值設為1.

ACK:ACK=1,表示確認序列號字段有效。

4.2第二次揮手

PC2收到PC1的信息,開始回復。

PC2 回復 ACK=1 的 TCP 報文段給 PC1。

4.3第三次揮手

PC2現(xiàn)在開始主動發(fā)送消息給PC1,發(fā)送 FIN=1,ACK=1 的報文段給PC1.

即PC2也發(fā)消息給PC1,F(xiàn)IN=1,我(也)要和你斷開連接。ACK=1,確認序列號字段有效。

4.4第四次揮手

PC1收到 PC2 的消息,回復ACK=1 的TCP報文段。

ACK=1,確認PC2 發(fā)給 PC1 的序列號字段有效。

4.5半關閉

在TCP斷開連接(四次揮手)的過程中,TCP一方(通常是客戶端)可以終止發(fā)送數(shù)據(jù),但仍然可以接收數(shù)據(jù),成為半關閉。

具體描述一下:

1.客戶端發(fā)哦是那個FIN報文段,半關閉了這個連接,服務器發(fā)送ACK報文段接收半關閉。

2.服務器繼續(xù)發(fā)送數(shù)據(jù),而客戶端只發(fā)送ACK確認,不再發(fā)送任何數(shù)據(jù)。

3.當服務器吧所有數(shù)據(jù)都發(fā)送完畢時,就發(fā)送FIN報文段,客戶再發(fā)送ACK報文段,這樣就關閉了TCP連接。

五:DUP協(xié)議介紹

5.1UDP協(xié)議

UDP缺點:是一個無連接,不保證可靠性的傳輸層協(xié)議,也就是說發(fā)送端不關心發(fā)送的數(shù)據(jù)是否達到目標主機,數(shù)據(jù)是否出錯等,收到數(shù)據(jù)的主機也不會告訴發(fā)送方是否收到了數(shù)據(jù),它的可靠性由上層協(xié)議來保障。

UDP優(yōu)點:UDP的首部結構簡單,在數(shù)據(jù)傳輸時能實現(xiàn)最小的開銷。

TCP協(xié)議詳解,你從未見過額全新版本

5.2UDP報文的首部格式

UDP在實際工作中的應用范圍很廣,例如,聊天工具QQ在發(fā)送短消息時就使用了UDP的方式。

TCP協(xié)議詳解,你從未見過額全新版本

5.3UDP協(xié)議端口和功能

TCP協(xié)議詳解,你從未見過額全新版本

TFTP:簡單文件傳輸協(xié)議,速度快。

RPC::遠程過程調(diào)用。同步傳輸數(shù)據(jù)的時候會用到。

NTP:比如做網(wǎng)絡架構時,100臺機器實現(xiàn)數(shù)據(jù)同步傳輸,就需要用到網(wǎng)絡時間協(xié)議。

六:常見協(xié)議及其端口

TCP協(xié)議詳解,你從未見過額全新版本

FTP:文件服務器,方便文件的上傳和下載。

TELNET:采用明文發(fā)送,建議在局域網(wǎng)中使用,不建議在廣域網(wǎng)中使用。

SMTP:發(fā)送郵件的協(xié)議

POP3:收郵件的協(xié)議

HTTP:打開網(wǎng)站用到的協(xié)議

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI