๐ TCP ์ธ๊ทธ๋จผํธ ํ์
Sequence Number์ ๊ฒฝ์ฐ IP์ id์ฒ๋ผ 1์ฉ ์ฆ๊ฐํ์ง ์๊ณ , Session ๊ณ์ธต์์ ์ง๋ ฌํ๋ ๋ฐ์ดํฐ Segment์ Offset์ ๋ฐ๋ผ ๊ฐ์ด ๋ฐ๋๋ค. ๋ง์ฝ์ Offset๊ฐ์ด 100์ธ ์ธ๊ทธ๋จผํธ๊ฐ ๋ณด๋ด์ง ๊ฒฝ์ฐ ๋ค์ ์ธ๊ทธ๋จผํธ์ Sequence Number๋ 101์ด ๋๋ค.
URG ํ๋๊ทธ : ๊ธด๊ธํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ
PSH ํ๋๊ทธ : ์ํธ์์ฉ์ด ์ค์ํ ๊ฒฝ์ฐ ๋น ๋ฅธ ์๋ต์ด ์ค์ํ๋ฐ, ์ด ๋ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ 7๊ณ์ธต์ผ๋ก ์ ์กํ๋๋ก ํ๋ ํ๋๊ทธ
RST ํ๋๊ทธ : ์ฌ์ค์ ์ ํ๋ ๊ณผ์ ์ด๋ฉฐ ์๋ฐฉํฅ์์ ๋์์ ์ผ์ด๋๋ ์ค๋จ ์์ ์ด๋ค. ๋น ์ ์์ ์ธ ์ธ์ ์ฐ๊ฒฐ ๋๊ธฐ์ ํด๋นํ๋ค. ์ด ํจํท์ ๋ณด๋ด๋ ๊ณณ์ด ํ์ฌ ์ ์ํ๊ณ ์๋ ๊ณณ๊ณผ ์ฆ์ ์ฐ๊ฒฐ์ ๋๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ค.
์๋์ฐํฌ๊ธฐ : ๋ฒํผ์ ๋จ์์๋ ํฌ๊ธฐ๋ฅผ ๋ํ๋ธ๋ค.
์ฒดํฌ์ฌ : ์ค๋ฅ์ฒดํฌ์ฉ / TCP๋ TCP ์ธ๊ทธ๋จผํธ ๋ฐ์ดํฐ๋ก๋ง ์ฒดํฌ์ฌ์ ๊ณ์ฐํ์ง ์๊ณ , ๊ณ์ฐ์ ์ TCP pseudo header๋ฅผ ๋ง๋ค์ด ์ฒดํฌ์ฌ ๊ณ์ฐ์ ์ฌ์ฉํ๋ค.
Urgent Point : URG ํ๋๊ทธ๊ฐ 1์ธ๊ฒฝ์ฐ, TCP data์์ ์ด๋ ๋ถ๋ถ์ด ๊ธด๊ธํ๊ฒ ๋ณด๋ด์ผํ๋ ๋ฐ์ดํฐ์ธ์ง ์ง์ด์ฃผ๋ ์ญํ ์ ํ๋ค.
๐ ์๋์ฐ์ ์ํ ํ๋ฆ์ ์ด
๐ TCP ์ฒดํฌ์ฌ์ ๊ณ์ฐ ์์ญ
Zero ์์ญ์ 4๋ฐ์ดํธ ์์ญ์ผ๋ก Pseudo header๋ฅผ ์ง๊ธฐ ์ํด์ ๋น์ด์๋ ๋ถ๋ถ์ 0์ผ๋ก ์ฑ์ด ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ์ ์ฌ IPํค๋๋ฅผ ๋ํด์ฃผ๋ ์ด์ ๋ TCP์ ๊ฒฝ์ฐ IP๊ฐ ์๋ชป ๋์ ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ IP๋ ์๋ชป๋์ง ์์๋์ง ํ์ธํ๋ ๊ฒ์ด๋ค.
๐ ๊ธด๊ธ๋ฐ์ดํฐ ์ ์ก์ ๊ฒฝ์ฐ
์์ ์ธก ๋ฒํผ์ ์ผ๋ฐ ๋ฐ์ดํฐ๋ค์ด ๋ฒํผ๋ง๋์ด ์์ด๋ ๊ธด๊ธ๋ฐ์ดํฐ ์ฐ์ ์ ์ฒ๋ฆฌ๋๋๋ก ํจ
Urgent Point๋ฅผ ํตํด์ ๋ฒํผ์ ์ด๋ ๋ถ๋ถ์ด Urgentํ ๋ฐ์ดํฐ์ธ์ง ์๋ ค์ค
๐ TCP ์ต์ ์ ์ข ๋ฅ
len : ์ต์ ํฌ๊ธฐ
MSS : TCP ๋ฐ์ดํฐ ์์ญ ์ต๋ ๊ธธ์ด, ์ด๋๋ท์ธ ๊ฒฝ์ฐ 1460
Window scale factor : TCP์ ํค๋์์ Window Size์ ํด๋นํ๋ ๋ถ๋ถ์ผ๋ก 16๋นํธ๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ํ๋์จ์ด๋ค์ด ์ข์์ง๋ฉด์ ์ด ์ด์์ Window Size๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒผ๋ค. ์ด๋ฅผ ์ํด์ Window Size๋ฅผ ์๋ ค์ฃผ๋ ๋ถ๋ถ์ ๋นํธ์๋ฅผ ๋๋ ค์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
ex) kind =3 | length = 3 | shift count = 3 | ๐ Window Size๋ฅผ ๋ด๋นํ๋ ๋นํธ๋ 19๋นํธ
(0~14 ์ ๊ฐ์ ๊ฐ์ง ์ ์๋ค. max win size = 2^30)
Selective Reject : TCP์ ์ค๋ฅ์ ์ด๋ฅผ ์ํ ๋ฐฉ๋ฒ์๋ Go Back N ๋ฐฉ๋ฒ๊ณผ SR๋ฐฉ๋ฒ์ด ์๋ค. Go Back N ๋ฐฉ๋ฒ์ ACK๋ฅผ ๋ฐ์ ์ดํ์ ๋ฐ์ดํฐ ๋ถํฐ ๋ค์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ด๊ณ , SR๋ฐฉ๋ฒ์ ์ค๋ฅ๊ฐ ๋ ๋ถ๋ถ๋ง์ ๋ค์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ด๋ค. ์ ์์ ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋์ง ์์ ๋ถ๋ถ๋ ์ฌ์ ์กํ์ฌ ์์์ ์ฌ์ฉํ๋ค. ์ด๋ ๋นํจ์จ์ ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ๋์จ๊ฒ์ด SR๋ฐฉ๋ฒ์ธ๋ฐ ์ด SR๋ฐฉ๋ฒ์ ์ง์ํ๋์ง ์๋ ค์ฃผ๊ธฐ ์ํ ์ต์ ์ด๋ค.
SACK (Selective reject ACK) : ์์ ์ธก์ด ํจํท 1, ํจํท 2 ๋ฐ ํจํท3์ ์์ ํ ํ์ ํจํท 5์ ํจํท6์ ์์ ํ ๊ฒฝ์ฐ, ์์ ์ธก์ ๊ฐ ํจํท์ ์์ ์ ์๋ฆด ์ ์์ผ๋ฉฐ ์ ์ก ์ธก์ ํจํท4, ํจํท5, ํจํท6์ ์ฌ์ ์กํ์ง ์๊ณ ์์ค๋ ํจํท 4๋ง ์ฌ์ ์กํ๋ฉด ๋จ.
TimeStamp : TCP๋ ๋คํธ์ํฌ ์๋์ ๋ณํ์ ๋ํด ์ ๋์ ํผํฌ๋จผ์ค์ ์์ ์ฑ ๋๊ฐ๋ฅผ ๋ง์ถฐ์ผ ํฉ๋๋ค. TimeStamp ์ต์
์ ํตํด์ ๋ณด๋ค ์ ํํ RTT(Round Trip Time)๊ฐ์ ์ป์ด ๋ผ ์ ์์ต๋๋ค.
์ก์ ์๋ ํจํท์ ๋ณด๋ผ ๋ ์์ ์ TimeStamp ๋ฅผ TS value์ ๊ธฐ๋กํ๊ณ ์์ ์ฌ๋ TS value์ ๊ฐ์ ๋ณต์ฌํ์ฌ TS echo reply field์ ๋ณต์ฌํฉ๋๋ค. ๊ทธ๋์ ์ค๋ฆฌ์ง๋ ์ก์ ์๋ ํ์ฌ timestamp์ TS echo reply field์ TimeStamp์ ์ฐจ๋ฅผ ๊ณ์ฐํ์ฌ RTT๋ฅผ ์ธก์ ํฉ๋๋ค.
TimeStamp Option์ ์ฌ์ฉํ๋ ค๋ฉด SYN packet์ ์ด ์ต์
์ ํฌํจํด์ผ ํฉ๋๋ค.
๐ TIME_WAIT ํ์ด๋จธ์ ํ์์ฑ
์ด TIME_WAIT์ด ํ์ํ ์ด์ ๋ ์์ ์ฌ์ง์ ๋ณด๋ฉด ์ ์ ์๋ค.
์์ ์ฌ์ง์ TIME_WAIT์ด ์๋ ๊ฒฝ์ฐ์ DISCONNECT๋ฅผ ํ ์ดํ์ ๋ค์ ์ฐ๊ฒฐ์ ํ๋ ๊ณผ์ ์ ๋ณด์ฌ์ค๋ค.
Disconnect๊ฐ ์๋ฃ๊ฐ ๋๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ Port ๋ฒํธ๋ Freeํ ์ํ๊ฐ ๋ ๊ฒ์ด๋ค. ์ด ๋ ๋๋ง์นจ ๋ค์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ฐ๊ฒฐ์ ํ๋ คํ๋๋ฐ ์ ๊ณผ ๊ฐ์ Port๋ฒํธ๋ฅผ ํ ๋น ๋ฐ์๋ค ํ์. ๊ทธ๋ ๊ฒ ์ฐ๊ฒฐ์ ์๋ฃ๋ฅผ ํ๋ค. ๊ทผ๋ฐ ์ด์ ์ ๋ณด๋๋ ๋ฐ์ดํฐ๊ฐ ์ด์ ์์ผ ๋ค์ด์ค๊ฒ ๋๊ฒ์ด๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์ด์ ์ ๋ฐ์๋ ํจํท์ ์ค๋ณตํด์ ๋ฐ๊ฒ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ๋ง๊ธฐ์ํด์ TIME_WAIT์ ๋๋ค.
๊ทธ๋์ ์ด์ ์ ๋ฐ์๋ ๋ฐ์ดํฐ๋ฅผ DISCONNECTํ๊ธฐ ์ ์ ๋ค ๋๋ด๊ธฐ ์ํ์ฌ TIME_WAIT์ ํ๊ฒ๋๋ค.
๐ ์๋ฒ๊ฐ ๋ค์ด๋ ๋ค์ ์ฌ๋ถํ ๋ ๊ฒฝ์ฐ
๐ TCP์ Exponential Backoff ๊ณผ์