日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

计算机网络 --- 传输层TCP协议

發(fā)布時(shí)間:2024/7/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机网络 --- 传输层TCP协议 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

TCP協(xié)議的特點(diǎn)?

  • TCP是面向連接(虛連接)的傳輸層協(xié)議。
  • 每一條TCP連接只能有兩個(gè)端點(diǎn),每一條TCP連接只能是點(diǎn)對(duì)點(diǎn)的。
  • TCP提供可靠交付的服務(wù),無(wú)差錯(cuò)、不丟失、不重復(fù)、按序到達(dá)??煽坑行?#xff0c;不丟不重。
  • TCP提供全雙工通信。

因?yàn)門CP提供全雙工通信,所以發(fā)送接收方分別要準(zhǔn)備發(fā)送緩存和接收緩存。發(fā)送緩存里面為準(zhǔn)備發(fā)送的數(shù)據(jù) & 已發(fā)送但尚未收到確認(rèn)的數(shù)據(jù),接收緩存里面為按序到達(dá)但尚未被接受應(yīng)用程序讀取的數(shù)據(jù) & 不按序到達(dá)的數(shù)據(jù)。

  • TCP面向字節(jié)流(流:流入到進(jìn)程或從進(jìn)程流出的字節(jié)序列,注意不是比特序列):TCP把應(yīng)用程序交下來(lái)的數(shù)據(jù)堪稱僅僅是一連串的無(wú)結(jié)構(gòu)字節(jié)流。?

TCP報(bào)文段的首部格式

注意填充字段的意義在于TCP報(bào)文段的首部長(zhǎng)度必須是4B的整數(shù)倍

  • 序號(hào):在一個(gè)TCP連接中傳送的字節(jié)流中的每一個(gè)字節(jié)都按順序編號(hào),本字段表示本報(bào)文段所發(fā)送數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。
  • 確認(rèn)號(hào):期望收到對(duì)方下一個(gè)報(bào)文段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。若確認(rèn)號(hào)為N,則證明到序號(hào)N - 1為止的所有數(shù)據(jù)都已正確收到。
  • 數(shù)據(jù)偏移(首部長(zhǎng)度):TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn),以4B為單位。
  • 控制位 --- 緊急位URG:URG = 1時(shí),標(biāo)明此報(bào)文段中有緊急數(shù)據(jù),是高優(yōu)先級(jí)的數(shù)據(jù),應(yīng)盡快傳送,不用在緩存里排隊(duì),配合緊急指針字段使用。
  • 控制位 --- 確認(rèn)位ACK: ACK = 1時(shí)確認(rèn)號(hào)有效,在連接建立后所有傳送的報(bào)文段都必須把ACK置為1.
  • 控制位 --- 推送位PSH:PSH = 1時(shí),接收方盡快交付接收應(yīng)用進(jìn)程,不再等到緩存填滿再向上交付。
  • 控制位 --- 復(fù)位RST:RST = 1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò),必須釋放連接,然后再重新建立傳輸連接。
  • 控制位 --- 同步位SYN:SYN = 1時(shí),表明是一個(gè)連接請(qǐng)求/連接接受報(bào)文。
  • 控制位 --- 終止位FIN:FIN = 1時(shí),表明此報(bào)文段發(fā)送方數(shù)據(jù)已發(fā)完,要求釋放連接。
  • 窗口:指的是發(fā)送本報(bào)文段的一方的接收窗口,即現(xiàn)在允許對(duì)方發(fā)送的數(shù)據(jù)量。
  • 檢驗(yàn)和:檢驗(yàn)首部 + 數(shù)據(jù),檢驗(yàn)時(shí)要加上12B偽首部,第四個(gè)字段為6(UDP為17).
  • 緊急指針:URG = 1時(shí)才有意義,指出本報(bào)文段中緊急數(shù)據(jù)的字節(jié)數(shù)。
  • 選項(xiàng):最大報(bào)文段長(zhǎng)度MSS、窗口擴(kuò)大、時(shí)間戳、選擇確認(rèn)

TCP連接管理

TCP連接傳輸三個(gè)階段

TCP連接的建立采用客戶服務(wù)器方式,主動(dòng)發(fā)起連接建立的應(yīng)用進(jìn)程叫做客戶,而被動(dòng)等待連接建立的應(yīng)用進(jìn)程叫服務(wù)器.

TCP連接建立

假設(shè)運(yùn)行再一臺(tái)主機(jī)(客戶)上的一個(gè)進(jìn)程想與另一臺(tái)主機(jī)(服務(wù)器)上的一個(gè)進(jìn)程建立一條連接,客戶應(yīng)用進(jìn)程首先通知客戶TCP,他想建立一個(gè)與服務(wù)器上某個(gè)進(jìn)程的連接,客戶TCP會(huì)用以下步驟與服務(wù)器中的TCP建立一條TCP連接:

  • 客戶端發(fā)送連接請(qǐng)求報(bào)文段,無(wú)應(yīng)用層數(shù)據(jù):SYN = 1, seq = x(隨機(jī))
  • 服務(wù)器端為該TCP連接分配緩存和變量,并向客戶端返回確認(rèn)報(bào)文段,允許連接,五應(yīng)用層數(shù)據(jù):SYN = 1,ACK = 1, seq = y(隨機(jī)),ack = x + 1.
  • 客戶端為該TCP連接分配緩存和變量,并向服務(wù)器端返回確認(rèn)的確認(rèn),可以攜帶數(shù)據(jù):SYN = 0, ACK = 1, seq = x + 1, ack = y + 1.
  • SYN洪泛攻擊:

    SYN洪泛攻擊發(fā)生在OSI第四層,這種方式利用TCP協(xié)議的特性,就是三次握手。攻擊者發(fā)送TCP SYN,SYN是TCP三次握手中的第一個(gè)數(shù)據(jù)報(bào),而當(dāng)服務(wù)器返回ACK后,該攻擊者就不對(duì)其進(jìn)行再確認(rèn),那這個(gè)TCP連接就處于掛起狀態(tài),也就是所謂的半連接狀態(tài),服務(wù)器收不到再確認(rèn)的話,還會(huì)重復(fù)發(fā)送ACK給攻擊者。這樣更加會(huì)浪費(fèi)服務(wù)器的資源。攻擊者就對(duì)服務(wù)器發(fā)送非常大量的這種TCP連接,由于每一個(gè)都沒法完成三次握手,所以在服務(wù)器上,這些TCP連接會(huì)因?yàn)閽炱馉顟B(tài)而小號(hào)CPU和內(nèi)存,最后服務(wù)器可能死機(jī),就無(wú)法為正常用戶提供服務(wù)了。

    TCP連接釋放

    參與一條TCP連接的兩個(gè)進(jìn)程中的任何一個(gè)都能終止該連接,連接結(jié)束后,主機(jī)中的“資源”(緩存和變量)將被釋放。

  • 客戶端發(fā)送連接釋放報(bào)文段,停止發(fā)送數(shù)據(jù),主動(dòng)關(guān)閉TCP連接:FIN = 1, seq = u。
  • 服務(wù)器端回回送一個(gè)確認(rèn)報(bào)文段,客戶到服務(wù)器這個(gè)方向的連接就釋放了 --- 半關(guān)閉狀態(tài):ACK = 1, seq = v(取決于服務(wù)器上一個(gè)報(bào)文段到哪里),ack = u + 1。
  • 服務(wù)器端發(fā)完數(shù)據(jù),就發(fā)出連接釋放報(bào)文段,主動(dòng)關(guān)閉TCP連接:FIN = 1, ACK = 1, seq = w, ack = u+ 1.
  • 客戶端回送一個(gè)確認(rèn)報(bào)文段,再等到時(shí)間等待計(jì)時(shí)器設(shè)置的2MSL(最長(zhǎng)報(bào)文段壽命)后,連接徹底關(guān)閉:ACK = 1, seq = u + 1, ack = w + 1.
  • TCP可靠傳輸

    傳輸層:使用TCP實(shí)現(xiàn)可靠傳輸

    網(wǎng)絡(luò)層:提供盡最大努力交付,不可靠傳輸

    可靠:保證接收方進(jìn)程從緩存區(qū)讀出的字節(jié)流與發(fā)送方發(fā)出的字節(jié)流是完全一樣的。

    TCP實(shí)現(xiàn)可靠傳輸?shù)臋C(jī)制:

    • 校驗(yàn):與UDP校驗(yàn)一樣,增加偽首部。
    • 序號(hào)
    • 確認(rèn):TCP默認(rèn)使用累計(jì)確認(rèn)。
    • 重傳:確認(rèn)重傳不分家,TCP的發(fā)送方在規(guī)定的時(shí)間內(nèi)沒有收到確認(rèn)就要重傳已發(fā)送的報(bào)文段。超時(shí)重傳。TCP采用自適應(yīng)算法,動(dòng)態(tài)改變重傳RTTs(加權(quán)平均往返時(shí)間)。

    冗余ACK(冗余確認(rèn))

    每當(dāng)比期望序號(hào)大的失序報(bào)文段到達(dá)時(shí),發(fā)送一個(gè)冗余ACK,指明下一個(gè)期待字節(jié)的序號(hào)。

    舉例:

    發(fā)送方已發(fā)送1,2,3,4,5報(bào)文段

    接收方收到1,返回給1的確認(rèn)(確認(rèn)號(hào)為2的第一個(gè)字節(jié))

    接收方收到3,仍返回給1的確認(rèn)(確認(rèn)號(hào)為2的第一個(gè)字節(jié))

    接收方收到4,仍返回給1的確認(rèn)(確認(rèn)號(hào)為2的第一個(gè)字節(jié))

    接收方收到5,仍返回給1的確認(rèn)(確認(rèn)號(hào)為2的第一個(gè)字節(jié))

    發(fā)送方收到3個(gè)對(duì)于報(bào)文段1的冗余ACK,認(rèn)為2報(bào)文段丟失,重傳2號(hào)報(bào)文段(快速重傳)

    TCP流量控制

    流量控制:

    讓發(fā)送方慢點(diǎn),要讓接收方來(lái)得及接收。

    TCP利用滑動(dòng)窗口機(jī)制實(shí)現(xiàn)流量控制。

    在通信過程中,接收方根據(jù)自己接收緩存的大小,動(dòng)態(tài)地調(diào)整發(fā)送方的發(fā)送窗口大小,即接收窗口rwnd(接收方設(shè)置確認(rèn)報(bào)文段的窗口字段來(lái)將rwnd通知給發(fā)送方),發(fā)送方的發(fā)送窗口取接收窗口rwnd和擁塞窗口cwnd的最小值。

    TCP為每一個(gè)連接設(shè)有一個(gè)持續(xù)計(jì)時(shí)器,只要TCP連接一方收到對(duì)方的零窗口通知,就啟動(dòng)持續(xù)計(jì)時(shí)器。

    若持續(xù)計(jì)時(shí)器設(shè)置的時(shí)間到期,就發(fā)送一個(gè)零窗口探測(cè)報(bào)文段。接收方收到探測(cè)報(bào)文段時(shí)給出現(xiàn)在的窗口值。

    若窗口仍然是0,那么發(fā)送方就重新設(shè)置持續(xù)計(jì)時(shí)器。

    TCP擁塞控制

    出現(xiàn)擁塞的條件:

    對(duì)資源需求的總和 > 可用資源

    網(wǎng)絡(luò)中有許多資源同時(shí)呈現(xiàn)供應(yīng)不足 -> 網(wǎng)絡(luò)性能變壞 -> 網(wǎng)絡(luò)吞吐量將隨輸入負(fù)荷增大而下降

    擁塞控制:

    防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中。(全局性)

    擁塞控制 & 流量控制:

    擁塞控制四種算法

    • 慢開始
    • 擁塞避免
    • 快重傳
    • 快恢復(fù)

    假定:

    • 數(shù)據(jù)單方向傳送,而另一個(gè)方向只傳送確認(rèn)
    • 接收方總是有足夠大的緩存空間,因而發(fā)送窗口大小取決于擁塞程度

    發(fā)送窗口 = Min{接收窗口rwnd,擁塞窗口cwnd}

    接收窗口:接收方根據(jù)接收緩存設(shè)置的值,并告知給發(fā)送方,反映接收方容量。

    擁塞窗口:發(fā)送方根據(jù)自己估算的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,反映網(wǎng)絡(luò)當(dāng)前容量。

    慢開始和擁塞避免

    一個(gè)傳輸輪次:

    發(fā)送了一批報(bào)文段并收到它們的確認(rèn)的時(shí)間。

    一個(gè)往返時(shí)延RTT。

    開始發(fā)送一批擁塞窗口內(nèi)的報(bào)文段到開始發(fā)送下一批擁塞窗口內(nèi)的報(bào)文段的時(shí)間。

    ssthresh(slow start shreshold)的初始值:

    慢開始門限,到達(dá)初始值之后就要減速。在網(wǎng)絡(luò)擁塞之后,新門限值定義為出現(xiàn)網(wǎng)絡(luò)擁塞時(shí)的擁塞窗口的一半。

    快重傳和快恢復(fù)

    收到多個(gè)冗余ACK后立刻進(jìn)行快重傳。快重傳直接回到新的ssthresh(不像慢重傳回到1),直接進(jìn)行線性擁塞避免。

    總結(jié)

    以上是生活随笔為你收集整理的计算机网络 --- 传输层TCP协议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。