written by sohyeon, hyemin ๐ก
ํธ๋์คํฌํธ ๊ณ์ธต
์ ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต๊ณผ ์ธํฐ๋ท ๊ณ์ธต ์ฌ์ด์ ์์นํ๋ค.
ํธ๋์คํฌํธ ๊ณ์ธต์ ์ญํ ์ ์ปดํจํฐ๊ฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
๊น์ง ์ ๋ฌํ๋ ๊ฒ์ด๋ค.
ํธ๋์คํฌํธ ๊ณ์ธต์์ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ํ๋กํ ์ฝ์ ์ ์ก์ ์ ๋ขฐ์ฑ์ ์ค์ํ๋ TCP
์ ์ ์ก ์๋๋ฅผ ์ค์ํ๋ UDP
๊ฐ ์๋ค.
ํธ๋์คํฌํธ ๊ณ์ธต์๋ ์ธํฐ๋ท ๊ณ์ธต์์ ์ ๋ฌํ ๋ค์ํ ์ข
๋ฅ์ ํจํท์ด ๋ค์ด์จ๋ค.
์ด ํจํท๋ค์ ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต์ ์๋ ์ ํ๋ฆฌ์ผ์ด์
๋ค์๊ฒ ๊ฐ๊ฐ ์ ๋ฌ๋์ด์ผ ํ๋๋ฐ, ์ด๋ ํฌํธ๋ฒํธ
๋ฅผ ๋ณด๋ฉด ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ๋ณด๋ด์ ธ์ผ ํ ์ง๋ฅผ ์ ์ ์๋ค.
ํฌํธ ๋ฒํธ๋ 0~65535๋ฒ๊น์ง ์ฌ์ฉํ ์ ์๊ณ , ์ฐ ๋
ธ์ด ํฌํธ(well-known ports), ๋ ์ง์คํฐ๋ ํฌํธ(registered ports), ๋ค์ด๋๋ฏน ํฌํธ(dynamic ports)
์ ์ธ ์ข
๋ฅ๋ก ๊ตฌ๋ถ๋๋ค.
์ฐ ๋ ธ์ด ํฌํธ
๋ ์๋ฒ ํ๋ก๊ทธ๋จ์ด ์์ ๋๊ธฐํ ๋ ์ฌ์ฉํ๋ ํฌํธ์ด๋ค.- 0๋ฒ ~ 1023๋ฒ
- ํฌํธ 0๋ฒ์ TCP/IP ๋คํธ์ํน์ ์์ฝ๋ ํฌํธ์ด๋ค.
- ์ฆ, TCP ๋๋ UDP ๋คํธ์ํฌ ํต์ ์ ์ฌ์ฉํด์๋ ์๋๋ค.
๋ ์ง์คํฐ๋ ํฌํธ
๋ ๋ฒค๋๊ฐ ํ ๋น๋ฐ์ ์ฌ์ฉํ๋ ํฌํธ์ด๋ค.- 1024๋ฒ ~ 49151๋ฒ
๋ค์ด๋๋ฏน ํฌํธ
๋ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ํฌํธ์ด๋ค. ๋ํ, ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ํฌํธ ๋ฒํธ๋ ๋ค์ด๋๋ฏน ํฌํธ ๋ฒํธ ๋์ญ์์ ์๋์ผ๋ก ํ ๋น๋๊ธฐ ๋๋ฌธ์ ์ด๋ค ๋ฒํธ๊ฐ ์ฌ์ฉ๋ ์ง๋ ๋ฏธ๋ฆฌ ์ ์ ์๋ค.- 49152๋ฒ ~ 65535๋ฒ
ํฌํธ๋ IANA๋ผ๋ ๋จ์ฒด๊ฐ ๊ด๋ฆฌํ๋ค.
์๋ฒ ์ธก์์ ์ฌ์ฉํ๋ ํฌํธ๋ ๋ฏธ๋ฆฌ ์ ํด์ ธ ์๋ค.
ํฌํธ ๋ฒํธ | ๋์ํ๋ ํ๋กํ ์ฝ |
---|---|
20๋ฒ | FTP(์กํฐ๋ธ ๋ชจ๋์์๋ ๋ฐ์ดํฐ ์ปค๋ฅ์ , ํจ์๋ธ ๋ชจ๋์์๋ ๋๋ค ํฌํธ๋ฅผ ์ฌ์ฉํจ) |
21๋ฒ | FTP(์ปจํธ๋กค ์ปค๋ฅ์ ) |
22๋ฒ | SSH(์๊ฒฉ ์ ์ด, ๋ณด์ ๊ธฐ๋ฅ ์์) |
23๋ฒ | Telnet(์๊ฒฉ ์ ์ด) |
25๋ฒ | SMTP(์ด๋ฉ์ผ ์ ์ก) |
80๋ฒ | HTTP(์น) |
110๋ฒ | POP3(์ด๋ฉ์ผ ์์ ) |
143๋ฒ | IMAP4(์ด๋ฉ์ผ ์์ , ๋ณด๊ด ๊ธฐ๋ฅ ์์) |
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์๋ก ํต์ ํ๊ธฐ ์ํด์๋ ๋จผ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ ํฌํธ๋ฅผ ๊ฒฐ์
ํ๊ณ ์ดํ ์๋ฒ์ ํฌํธ์ ์ ์
ํ๊ฒ ๋๋ค.
HTTP์ธ ๊ฒฝ์ฐ ์๋ฒ ์ธก์์ ์์ ๋๊ธฐํ๋ ํฌํธ ๋ฒํธ๋ 80๋ฒ์ด๊ณ ํด๋ผ์ด์ธํธ์ธ ์น ๋ธ๋ผ์ฐ์ ๋ ๋ค์ด๋๋ฏน ํฌํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํฌํธ ๋ฒํธ๊ฐ ์ ํด์ ธ ์์ง ์๋ค.
TCP(Transmission Control Protocol)
๋ ํธ๋์คํฌํธ ๊ณ์ธต์ ํ๋กํ ์ฝ์ ํ๋๋ก ์น์ด๋ ์ด๋ฉ์ผ, FTP์ ๊ฐ์ด ์ ํํ ๋ฐ์ดํฐ ์ ๋ฌ์ด ํ์ํ ํต์ ์ ์ฌ์ฉํ๋ค.
TCP
๋ ๋ฐ์ดํฐ ์ ์ก์ ์ ๋ขฐ์ฑ์ ๋ํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ธ๊ทธ๋จผํธ(segment)๋ผ๋ ๋จ์๋ก ๋ถํ
ํ๊ณ , ์ ์ก ์๋๋ฅผ ์กฐ์
ํ๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์ ๋๋ก ์ ๋ฌ๋์ง ์์์ ๊ฒฝ์ฐ ์ฌ์ ์ก
์ ํ๊ฒ ๋๋ค.
TCP์ ์ธ๊ทธ๋จผํธ๋ ๋ฐ์ดํฐ ๋ณธ์ฒด์ TCP ํค๋๊ฐ ๋ถ์ ํํ๋ก ๊ตฌ์ฑ๋๋ค.
์ผ๋ จ๋ฒํธ(sequence number)
: ์ก์ ํ ๋ฐ์ดํธ ์ํ์ธ ์๋ต ๋ฒํธ(acknowledgement number)
: ์์ ํ ๋ฐ์ดํธ ์๋ฐ์ดํฐ ์ต์ (data offset)
: TCP ํค๋์ ๊ธธ์ด์๋์ฐ ์ฌ์ด์ฆ(windows size)
: ํ ๋ฒ์ ์์ ํ ์ ์๋ ๋ฐ์ดํฐ ํฌ๊ธฐ์ฒดํฌ์ฌ(checksum)
: ๋ฐ์ดํฐ๊ฐ ํผ์๋์๋์ง ํ์ธํ๊ธฐ ์ํ ์ ๋ณด
TCP ํค๋ ์ค ์ปจํธ๋กค ๋นํธ
๋ ํ์ฌ์ ํต์ ์ํ๋ฅผ ํํํ๋ ํ๋๊ทธ ์ญํ ์ ํ๋ฉฐ, ํต์ ์๋์๊ฒ ์ด ์ ๋ณด๋ฅผ ์ ๋ฌํด์ TCP ํต์ ์ ์ ์ดํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
9๊ฐ์ ํ๋๊ทธ ๊ฐ๊ฐ์ 1๋นํธ ํฌ๊ธฐ๋ฅผ ์ฐจ์งํ์ฌ ON/OFF ๋ ๊ฐ์ง ์ํ๋ฅผ ํํํ๋ค.
ํ๋๊ทธ | ์ญํ |
---|---|
CWR | ํต์ ๊ฒฝ๋ก๊ฐ ํผ์กํด์ ์ ์ก๋์ ์ค์ฌ์ค ๊ฒ์ ์๋ ค์ค๋ค. |
ECE | ํต์ ๊ฒฝ๋ก๊ฐ ํผ์กํด์ ์์ ํ ์ ์์ ์๋ ์๋ค๋ ๊ฒ์ ์๋ ค์ค๋ค. |
URG | ๊ธด๊ธ ํฌ์ธํฐ์์ ์ง์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ ค์ค๋ค. |
ACK | ์ด์ ๋์์ ํ์ธํ๋ค๋ ๊ฒ์ ์๋ ค์ค๋ค. ํ์ธ ์๋ต ๋ฒํธ์ ์กฐํฉํด์ ์ฌ์ฉ๋๋ค. |
PSH | ์์ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ ์ ๋ฌํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ ค์ค๋ค. |
RST | ์ด์ ์ํฉ์ด ๋ฐ์ํ์ฌ ์ ์์ด ๊ฐ์ ์ค๋จ๋์๋ค๋ ๊ฒ์ ์๋ ค์ค๋ค. |
SYN | ์ ์์ ์์ํ ๋ ON์ผ๋ก ์ค์ ํ๋ค. |
FIN | ๋ฐ์ดํฐ ์ก์ ์ด ์๋ฃ๋์ด ํต์ ์ ์ข ๋ฃํ๊ณ ์ถ๋ค๋ ๊ฒ์ ์๋ ค์ค๋ค. |
TCP ํต์ ์ ํต์ ํ๊ธฐ์ ์์, ์ ์์ด ์ฑ๋ฆฝํ๊ธฐ ์ํด 3-way handshake๋ฅผ ์งํํ๋ค.
1. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ SYN ํจํท์ ๋ณด๋ธ๋ค. ์ด๋ ํด๋ผ์ด์ธํธ๋ SYN์ ๋ณด๋ด๊ณ SYN/ACK ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ SYN_SENT ์ํ๊ฐ ๋๋ค.
2. ์๋ฒ๋ SYN ์์ฒญ์ ๋ฐ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญ์ ์๋ฝํ๋ค๋ ACK์ SYN flag๊ฐ ์ค์ ๋ ํจํท์ ๋ณด๋ธ๋ค. ์ด๋ ์๋ฒ๋ SYN_RECEIVED ์ํ๊ฐ ๋๋ค.
3. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์๋ต์ธ ACK์ SYN ํจํท์ ๋ฐ๊ณ , ACK๋ฅผ ์๋ฒ๋ก ๋ณด๋ธ๋ค.
์ด๋ ๊ฒ 3๋ฒ์ ํต์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ์ฑ๋ฆฝ๋๋ค.
TCP ํต์ ์ ์ฐ๊ฒฐ ์ฑ๋ฆฝ ํ, ๋ชจ๋ ํต์ ์ด ๋๋ฌ๋ค๋ฉด ํด์ ํด์ผ ํ๋ค.
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ค๋ FIN ํ๋๊ทธ๋ฅผ ๋ณด๋ธ๋ค.
2. ์๋ฒ๋ FIN์ ๋ฐ๊ณ , ํ์ธํ๋ค๋ ACK๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ๋ค. ์ด๋ ์๋ฒ๋ CLOSE_WAIT ์ํ๋ค.
3. ์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋๋ค๋ฉด, ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์๋ค๋ FIN ํ๋๊ทธ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ๋ค.
4. ํด๋ผ์ด์ธํธ๋ FIN์ ๋ฐ๊ณ , ํ์ธํ๋ค๋ ACK๋ฅผ ์๋ฒ์๊ฒ ๋ณด๋ธ๋ค.(ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ง ๋ชปํ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์ผ๋ฏ๋ก TIME_WAIT์ ํตํด ๊ธฐ๋ค๋ฆฐ๋ค.)
=> TIME_WAIT : ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ FIN์ ์์ ํ๋๋ผ๋ ์ผ์ ์๊ฐ ๋์ ์ธ์
์ ๋จ๊ฒจ๋๊ณ ๋ฐ์ง ๋ชปํ ํจํท์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋งํ๋ค.
=> ์๋ฒ๋ ACK๋ฅผ ๋ฐ์ ์ดํ ์์ผ์ ๋ซ๋๋ค. ํด๋ผ์ด์ธํธ ๋ํ, TIME_WAIT ์๊ฐ์ด ๋๋๋ฉด ์์ผ์ ๋ซ๋๋ค.
์ด๋ ๊ฒ 4๋ฒ์ ํต์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ํด์ ๋๋ค.
ํ๋ฆ ์ ์ด
๋ ์ก์ ์ธก(ํธ์คํธ)๊ณผ ์์ ์ธก(ํธ์คํธ)์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ ์ฐจ์ด
๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ด๋ค.
์์ ์ธก์ ๋์ฐฉํ ํจํท๋ค์ ๋ฒํผ์ ์์ ๋๋ ๊ฒ๊ณผ ๋์์ ์ด๋ฏธ ๋ฒํผ์ ์์ธ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ๊บผ๋ด์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
์ด๋ ๋ง์ฝ ์์ ์ธก ์ปดํจํฐ์ ์ฑ๋ฅ์ด ๋ฎ๋ค๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ์๋๋ณด๋ค ์ฒ๋ฆฌํ๋ ์๋๊ฐ ๋๋ ค์ ธ
๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
๊ทธ๋์ ์์ ์ธก์ ์๋ต์ ๋ณด๋ผ ๋ ์๋์ฐ ์ฌ์ด์ฆ๋ฅผ ์ค์
ํ์ฌ ํ์ฌ ์ด๋ ์ ๋๊น์ง ์์ ํ ์ ์๋์ง
๋ฅผ ์์๋ก ์๋ ค์ฃผ๊ฒ ๋๋ค.
ํผ์ก ์ ์ด
๋ ์ก์ ์ธก(ํธ์คํธ)์ ๋ฐ์ดํฐ ์ ๋ฌ
๊ณผ ๋คํธ์ํฌ(๋ผ์ฐํฐ)์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ ์ฐจ์ด
๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ด๋ค.
์ก์ ์ธก์ ๋ฐ์ดํฐ๋ ์ง์ญ๋ง์ด๋ ์ธํฐ๋ท์ผ๋ก ์ฐ๊ฒฐ๋ ๋ํ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ๋ฌ๋๋ค.
๋ง์ฝ ํ๋์ ๋ผ์ฐํฐ์๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ชฐ๋ฆด ๊ฒฝ์ฐ, ๋ผ์ฐํฐ๋ ์์ ์๊ฒ ์จ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด ํธ์คํธ๋ค์ ๋ ๋ค์ ์ฌ์ ์ก์ ํ๊ฒ ๋๊ณ ๊ฒฐ๊ตญ ํผ์ก์ ๊ฐ์ค์์ผ ์ค๋ฒํ๋ก์ฐ๋ ๋ฐ์ดํฐ ์์ค์ ๋ฐ์์ํจ๋ค.
๋ฐ๋ผ์, ์ด๋ฌํ ๋คํธ์ํฌ์ ํผ์ก์ ํผํ๊ธฐ ์ํด ์ก์ ์ธก์์ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ ์ ์ก ์๋๋ฅผ ๊ฐ์ ๋ก ์ค์ด๊ฒ ๋๋๋ฐ, ์ด๋ฌํ ์์
์ ํผ์ก์ ์ด
๋ผ๊ณ ํ๋ค.
UDP(User Datagram Protocol)
๋ TCP์ ๋นํด ์๋นํ ๊ฐ๋จํ ํ๋กํ ์ฝ๋ก์ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ์ญํ ๋ง ํ๋ค.
ํต์ ๊ณผ์ ์์ ๋ฐ์ดํฐ์ ์์ค์ด ๋ฐ์ํ ์ ์๋๋ฐ, VoIP์ ๊ฐ์ ์์ฑ ์๋น์ค๋ ๋์์ ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ๋๋ฝ๋๊ฑฐ๋ ์๊ณก๋๋๋ผ๋ ํฐ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ UDP๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
UDP์์๋ ํจํท์ ํด๋นํ๋ ๊ฒ์ ๋ฐ์ดํฐ๊ทธ๋จ
์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํจํท ๊ธธ์ด(UDP length)
: ํค๋ ๊ธธ์ด์ ๋ฐ์ดํฐ ๊ธธ์ด์ ํฉ๊ณ์ฒดํฌ์ฌ(checksum)
: ๋ฐ์ดํฐ๊ฐ ํผ์๋์๋์ง ํ์ธํ๊ธฐ ์ํ ์ ๋ณด
TCP์๋ ์๋ ๊ธฐ๋ฅ์ผ๋ก UDP์๋ ํ๋์ ํจํท์ ์ฌ๋ฌ ์์ ์ง์ ์ ๋ฌํ๋ ๋ธ๋ก๋์บ์คํธ(broadcast)
์ ๋ฉํฐ์บ์คํธ(multicast)
๋ผ๋ ๊ธฐ๋ฅ์ด ์๋ค.
-
๋ธ๋ก๋์บ์คํธ(broadcast)
- local LAN ์์ ๋ถ์ด์๋ ๋ชจ๋ ๋คํธ์ํฌ ์ฅ๋น๋ค์๊ฒ ๋ณด๋ด๋ ํต์ ์ด๋ค.
- ํต์ ์ ๋์์ด ํน์ ํ ํ ๋คํธ์ํฌ๊ฐ ์๋๋ผ, ๋คํธ์ํฌ ์์ ๋ชจ๋ ์ฅ๋น๋ค์๊ฒ ํต์ ์ ํ๋ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
-
๋ฉํฐ์บ์คํธ(multicast)
- ๋ณด๋ด๊ณ ์ ํ๋ ์ ๋ณด๋ฅผ ๊ทธ๋ฃน ๋ด์ ์ผ์ ๋คํธ์ํฌ ์ฅ๋น๋ค์๊ฒ๋ง ํ๋ฒ์ ๋ณด๋ผ ์ ์๋ ํต์ ์ด๋ค.
- TCP/IP ์ฝ๊ฒ, ๋ ์ฝ๊ฒ
- [๋คํธ์ํฌ ์ฝ๊ฒ ์ดํดํ๊ธฐ 22ํธ] TCP 3 Way-Handshake & 4 Way-Handshake