๐ก์ฐ๊ฒฐ ์งํฅํ TCP ํ๋กํ ์ฝ / NAT, Port Forwarding
- TCP ํ๋กํ ์ฝ
- TCP ํ๋๊ทธ
- TCP๋ฅผ ์ด์ฉํ ํต์ ๊ณผ์
- TCP ์ํ ์ ์ด๋
๐ TCP ํ๋กํ ์ฝ
- ์ ์ก ์ ์ด ํ๋กํ ์ฝ(Transmission Control protocol, TCP)์ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ํต์ ์ ์์ ์ ์ผ๋ก, ์์๋๋ก, ์๋ฌ์์ด ๊ตํํ ์ ์๊ฒ ํ๋ค.
- TCP์ ์์ ์ฑ์ ํ์๋ก ํ์ง ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก TCP ๋์ ๋น์ ์ํ ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ทธ๋จ ํ๋กํ ์ฝ(User Datagram Protocol)์ ์ฌ์ฉํ๋ค.
- TCP๋ UDP๋ณด๋ค ์์ ํ์ง๋ง ๋๋ฆฌ๋ค.
TCP ํ๋กํ ์ฝ ๊ตฌ์กฐ
Source Port + Destination Port + Sequence Number + Acknowledgement Number + Offset + Reserved + TCP Flags + window + Checksum + Urgent Pointer + TCP Options
Reserved: ์์ฝ๋ ํ๋๋ก ์ฌ์ฉ๋์ง ์์
window: ๋ฐ์ดํฐ๋ฅผ ์ผ๋ง๋งํผ ๋ณด๋ด์ผํ๋์ง ์๋ ค์ค
Urgent Pointer:
๐ฌ TCP ํ๋๊ทธ | C E U A P R S F
TCP์ ์ฃผ๋ ๊ธฐ๋ฅ์ด ์ด ํ๋๊ทธ์์ ๋๋ ์ง
Urgent: urgent flag ๊ธด๊ธ ๋นํธ (์ฐ์ ์์๊ฐ ๋์) 1์ ๊ฐ๊น์ธ์๋ก ๋์ โ urgent Pointer์ ์ธํธ์
Ack: ์ํฌ ๋นํธ (์น์ธํด์ค)
Push: Push ๋นํธ (์๊ด์์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด์ค)
Reset: ์ด๊ธฐํ ๋นํธ (๋ฆฌ์ ํ์!)
Syn: ์ฑํฌ ๋นํธ (์ฐ๊ฒฐ ํ๋๊ทธ)
Fin: ์ข ๋ฃ ๋นํธ (์ฐ๊ฒฐ์ ๋๋ ํ๋ ๊ทธ)
โก๏ธ TCP๋ฅผ ์ด์ฉํ ํต์ ๊ณผ์
TCP๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ํต์ ์ ํ ๋ ํ๋ก์ธ์ค์ ํ๋ก์ธ์ค๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ฅ ๋จผ์ ์ํ๋๋ ๊ณผ์
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ ํจํท์ ๋ณด๋ด๊ณ (SYN)
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์๋ค์ด๋ ํจํท์ ๋ณด๋ด๊ณ (SYN + ACK)
- ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ์ต์ข ์ ์ผ๋ก ์๋ฝํ๋ ํจํท์ ๋ณด๋ธ๋ค. (ACK)
์ด ๊ณผ์ ์ 3Way Handshake
๋ผ๊ณ ๋ถ๋ฅธ๋ค.
TCP๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ํต์ ์ ํ ๋ ๋จ์ํ TCP ํจํท๋ง์ ์บก์ํํด์ ํต์ ํ๋ ๊ฒ์ด ์๋ ํ์ด๋ก๋๋ฅผ ํฌํจํ ํจํท์ ์ฃผ๊ณ ๋ฐ์ ๋์ ์ผ์ ํ ๊ท์น
- ๋ณด๋ธ ์ชฝ์์ ๋ ๋ณด๋ผ ๋๋ SEQ ๋ฒํธ์ ACK ๋ฒํธ๊ฐ ๊ทธ๋๋ก๋ค.
- ๋ฐ๋ ์ชฝ์์ SEQ๋ฒํธ๋ ๋ฐ์ ACK ๋ฒํธ๊ฐ ๋๋ค.
- ๋ฐ๋ ์ชฝ์์ ACK ๋ฒํธ๋ ๋ฐ์ SEQ๋ฒํธ + ๋ฐ์ดํฐ์ ํฌ๊ธฐ
์ฐ๊ฒฐ ํ ๋๋ 3ํธ๋ ์ข ๋ฃ ํ ๋๋ 4ํธ๋
โก๏ธ TCP ์ํ์ ์ด๋
TCP์ ์ฌ๋ฌ๊ฐ์ง ์ํ ๋ณํ
CLOSED
LISTEN
: ํฌํธ๋ฒํธ๋ฅผ ์ฌ์ฉ ์ค (ํด๋ผ์ด์ธํธ๋ฅผ ๋ฃ๊ณ ์๋ ์ํ)
SYN_SENT
SYN_RCVD
ESTABLISHED
(์ฐ๊ฒฐ์ด ์๋ฆฝ๋ ์ํ)
FIN_WAIT_1
FIN_WAIT_2
CLOSING
TIME_WAIT
CLOSE_WAIT
LAST_ACK
๐ NAT์ ํฌํธํฌ์๋ฉ
- NAT๋?
- ํฌํธํฌ์๋ฉ์ด๋?
NAT
NAT(Network Address Translation, ๋คํธ์ํฌ ์ฃผ์ ๋ณํ)์ IP ํจํท์ TCP/UDP ํฌํธ ์ซ์์ ์์ค ๋ฐ ๋ชฉ์ ์ง์ IP ์ฃผ์ ๋ฑ์ ์ฌ๊ธฐ๋กํ๋ฉด์ ๋ผ์ฐํฐ๋ฅผ ํตํด ๋คํธ์ํฌ ํธ๋ํฝ์ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ์ ์ ๋งํ๋ค.
ํจํท์ ๋ณํ๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ IP๋ TCP/UDP์ ์ฒดํฌ์ฌ(checksum)๋ ๋ค์ ๊ณ์ฐ๋์ด ์ฌ๊ธฐ๋ก ํด์ผํ๋ค.
NAT๋ฅผ ์ด์ฉํ๋ ์ด์ ๋ ๋๊ฐ ์ฌ์ค ๋คํธ์ํฌ์ ์ํ ์ฌ๋ฌ ๊ฐ์ ํธ์คํธ๊ฐ ํ๋์ ๊ณต์ธ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐ๋ท์ ์ ์ํ๊ธฐ ์ํจ์ด๋ค.
ํ์ง๋ง ๊ผญ ์ฌ์ค IP๋ฅผ ๊ณต์ธ IP๋ก ๋ณํ ํ๋ ๋ฐ์๋ง ์ฌ์ฉํ๋ ๊ธฐ์ ์ ์๋๋ค.
ํฌํธํฌ์๋ฉ
ํฌํธ ํฌ์๋ฉ ๋๋ ํฌํธ ๋งคํ(port mapping)์ ํจํท์ด ๋ผ์ฐํฐ๋ ๋ฐฉํ๋ฒฝ๊ณผ ๊ฐ์ ๋คํธ์ํฌ ์ฅ๋น๋ฅผ ๊ฐ๋ก์ง๋ฅด๋ ๋์ ํน์ IP์ฃผ์์ ํฌํธ ๋ฒํธ์ ํต์ ์์ฒญ์ ๋ค๋ฅธ IP์ ํฌํธ ๋ฒํธ๋ก ๋๊ฒจ์ฃผ๋ ๋คํธ์ํฌ ์ฃผ์ ๋ณํ(NAT)์ ์์ฉ์ด๋ค.
์ด ๊ธฐ๋ฒ์ ๊ฒ์ดํธ์จ์ด(์ธ๋ถ๋ง)์ ๋ฐ๋์ชฝ์ ์์นํ ์ฌ์ค๋คํธ์ํฌ์ ์์ฃผํ๋ ํธ์คํธ์ ๋ํ ์๋น์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด ํํ ์ฌ์ฉ๋๋ค.