TCP協議總結

2021-08-21 05:43:42 字數 1641 閱讀 1993

mss(maximum segment size)只能出現在syn包中,通訊雙方在syn包和syn+ack包中互相通告各自能接收的mss

syn包不能攜帶data,占用seq

ack包能攜帶data,攜帶data時占用seq,不攜帶data時不占用seq

fin包能攜帶data,不論是否攜帶data都占用seq

即使視窗為0,也必須接收零視窗探測包、ack包、urg包

保活定時器(keeplive):每次收到包後啟動,到期(2小時)還沒收到包,傳送保活探測包

時間等待定時器(time_wait):進入time_wait後啟動,到期(2*msl)還沒收到fin包,終止連線

結束等待2定時器(fin_wait_2):進入fin_wait_2後啟動,到期(10m+75s)還沒收到fin包,終止連線

延遲確認定時器(delay ack):收到包後啟動,到期(200ms)還沒傳送包,傳送ack包

常用tcp選項:mss選項、視窗擴大(window scale)選項、時間戳(timestamp)選項、選擇確認(sack,selective ack)選項

傳送快取和視窗的左邊沿重合,接收快取和視窗的右邊沿重合

除了重傳報文,傳送報文一定是連續的,但是接收報文不一定是連續的,可能亂序

syn和fin包的data長度看作1,不攜帶data的ack包的data長度看作0

- 傳送報文的seq = 最近乙個非重傳傳送報文的seq + data長度

- 傳送報文的ack = 最近乙個非重傳連續接收報文的seq + data長度

方向包型別

synack

finseq

ackdata長度(位元組數)

c->s

syn100

x無效0s->c

syn+ack11

0yx+10

c->s

ack010

x+1y+1

0c->s

data01

0x+1

y+1m

c->s

data01

0x+m+1

y+1n

s->c

ack010

y+1x+m+n+1

0s->c

data01

0y+1

x+m+n+1

pc->s

ack010

x+m+n+1

y+p+1

0c->s

fin011

x+m+n+1

y+p+1

0s->c

ack010

y+p+1

x+m+n+2

0s->c

data01

0y+p+1

x+m+n+2

qc->s

ack010

x+m+n+2

y+p+q+1

0s->c

fin011

y+p+q+1

x+m+n+2

0c->s

ack010

x+m+n+2

y+p+q+2

0

TCP協議簡單總結

正常連線 客戶端 closed syn send established 伺服器 listen syn收到 established 正常關閉 客戶端 established fin wait 1 fin wait 2 time wait closed 服務端 established close wa...

TCP協議經典rfc主題總結

richard stevens的書雖好,但是他所要表達的是讓你知其然。對於想精通tcp的同學來說,光知其然是遠遠不夠的,你還需要更多的時間去了解其所以然,而翻閱rfc文件就是一種最好的方式,這樣你就明白tcp為何這麼設計了。這裡總結了一下tcp核心主題對應的rfc文件,方便自己和大家查閱。rfc序列...

網路程式設計筆記 TCP協議總結

tcp協議是傳輸層中的一種面向連線的,提供可靠服務的傳輸協議,是基於位元組流傳輸的。與udp相比,它會在通訊的雙方通過建立一些資料結構來保證連線的建立。特點如下 後文,再詳細說明tcp協議如何實現這些特點。視窗大小 用作流量控制,標識自己當前能否處理的能力 如果客戶端a和伺服器b想要通過tcp協議進...