TCP๋?
TCP๋ OSI 4๊ณ์ธต ์ ์ก ๊ณ์ธต์ ์ํ๋ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ด๋ค.
์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ขฐ์ฑ ์๊ฒ ์ ๋ฌํ๊ธฐ ์ํ ์ฐ๊ฒฐ ์งํฅํ ํ๋กํ ์ฝ์ด๋ค.
ํน์ง
โข
์ฐ๊ฒฐ ์งํฅ์ : ๋ฐ์ดํฐ ์ ์ก์ ์์ํ๊ธฐ ์ ์ ์ก์ ์์ ์์ ์๊ฐ์ ์ฐ๊ฒฐ์ ์ค์ ํ๋ค. ์ด ๋ 3-way handshaking์ ์ฌ์ฉํ๋ค.
โข
์ ๋ขฐ์ฑ : ๋ฐ์ดํฐ๊ฐ ์ ์ค๋๊ฑฐ๋ ์์๋์์ ๋ ์ด๋ฅผ ๊ฐ์งํ๊ณ ์ฌ์ ์กํ๋ค. ๋ํ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋์ง ํ์ธํ๋ค.
โข
์์๋ณด์ฅ : ํจํท์ ์ ์ก ์์๊ฐ ๋ณด์ฅ๋๋ค.
โข
ํ๋ฆ ์ ์ด : ์ก์ ์๊ฐ ์์ ์์ ์ฒ๋ฆฌ ์๋์ ๋ง์ถฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
TCP ํธ๋์ ฐ์ดํน
TCP๋ ์ฐ๊ฒฐํ ์๋น์ค๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ก์ ๋ถ์ ์์ ๋ถ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
์ฐ๊ฒฐ์ ์์ํ ๋๋ 3-way handshaking, ์ฐ๊ฒฐ์ ์ข
๋ฃํ ๋๋ 4-way handshaking์ ํ๋ค.
3-way handshaking
3-way handshaking์ TCP ์ฐ๊ฒฐ์ ์ค์ ํ๋ ๊ณผ์ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ ์ ์๋ก๋ฅผ ์ธ์ํ๊ณ ์ฐ๊ฒฐ์ ์ค๋นํ๋ ๊ณผ์ ์ด๋ค.
1.
์ก์ ์ Client๋ SYN์ ์์ ๋ถ์ ๋ณด๋ธ๋ค. SYN๋ Synchronization(๋๊ธฐํ)๋ฅผ ์๋ฏธํ๊ณ ์ฐ๊ฒฐ์ ์์ฑํ ๋ ์ฌ์ฉํ๋ค.
์ด ๋ ์ก์ ์๋ ์์ ์ Sequence Number๋ฅผ ํฌํจํ์ฌ SYN ํจํท์ ๋ณด๋ธ๋ค. (SYN, seq : 100)
2.
์์ ์ Server๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๊ณ ์ด๋ฅผ ์น์ธ(ACK)ํ๋ฉฐ ์ก์ ์์ seq์ +1์ ํ์ฌ ๋ณด๋ด๊ณ , ๋์์ ์์ ์ Sequence Number๋ฅผ SYN ํจํท์ ํฌํจํ์ฌ ๋ณด๋ธ๋ค. (SYN-ACK, seq: 200, ack: 101)
3.
์ก์ ์ Client๊ฐ ์๋ฒ์ SYN์ ํ์ธ(ACK)ํ๋ฉด ์ฐ๊ฒฐ์ด ์ฑ๋ฆฝ๋์๋ค๋ ์๋ฏธ์ธ ESTABLLISHED ์ํ๊ฐ ๋๋ฉฐ TCP ์ฐ๊ฒฐ์ด ์์ ํ ์ฑ๋ฆฝ๋๋ค.
์ก์ ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ACK์๋ ์๋์ seq์ +1์ ํด์ ๋ณด๋ด๊ณ ์์ ์ seq์ธ 101์ ๋ณด๋ธ๋ค. (ACK, seq:101, ack: 201)
์์ ์ Server๋ ๋ง์ฐฌ๊ฐ์ง๋ก ESTABLLISHED ์ํ๊ฐ ๋๋ค.
4-way handshaking
4-way handshaking์ TCP๊ฐ ์ฐ๊ฒฐ์ ์์ ํ๊ฒ ์ข
๋ฃํ๊ธฐ ์ํ ๊ณผ์ ์ด๋ค. 4๋ฒ์ ํจํท์ด ์ค๊ฐ๊ธฐ ๋๋ฌธ์ ์ด๋ฆ์ด ๋ถ์๊ณ ๋ฐ์ดํฐ ์ ์ก์ ๋ง๋ฌด๋ฆฌ์ ๋ฆฌ์์ค ํด์ ๋ฅผ ์ํ ๋จ๊ณ์ด๋ค.
1.
์ก์ ์ Client๊ฐ ์์ ์ Server์์ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ ค๊ณ FIN ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ธ๋ค.
2.
Server๊ฐ Clinet๋ก๋ถํฐ FIN ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ผ๋ฉด ์ด์ ๋ํ ์๋ต์ผ๋ก ACK๋ฅผ ๋ณด๋ธ๋ค. ์ด ๋ Server๋ CLOSE_WAIT ์ํ๊ฐ ๋๋ค.
Server๋ ACK๋ฅผ ๋ณด๋ธ ํ ์ฑ์ ์ข
๋ฃํ๋ ๋ฑ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ธฐ ์ํ ์์
์ ํ๋ค.
Client๋ Server์์ ๋ณด๋ธ ACK๋ฅผ ๋ฐ๊ณ ๋ ํ FIN_WAIT2 ์ํ๊ฐ ๋๋ค.
3.
Server๋ ์ฐ๊ฒฐ์ ์ข
๋ฃํ ์ค๋น๊ฐ ๋๋๋ฉด Client์ FIN ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๊ณ LAST_WAIT ์ํ๊ฐ ๋๋ค.
4.
Client๋ Server๋ก ๋ถํฐ ๋ฐ์ FIN ๋ฉ์ธ์ง์ ์๋ตํ๊ธฐ ์ํด ACK ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๊ณ TIME_WAIT ์ํ๊ฐ ๋๋ค. ๊ทธ ํ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด CLOSED ์ํ๊ฐ ๋๋ค.
์ผ์ ์๊ฐ ๋์ TIME_WAIT ์ํ๋ฅผ ์ ์งํ๋ ์ด์ ๋ FIN ๋ฉ์ธ์ง ์ ์ ๋ณด๋ธ ํจํท์ด FIN ๋ฉ์์ง ์์ ๋ณด๋ค ์ง์ฐ๋์ด ์ ์ค๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์๋ค.
Server๋ Client๋ก๋ถํฐ ACK๋ฅผ ๋ฐ์ผ๋ฉด CLOSED ์ํ๊ฐ ๋๋ค.



