Protocol ํ์ค ์คํ Socket
OSI 7 Layer๋ ๋คํธ์ํฌ ์์คํ ๊ตฌ์ฑ์ ์ํ ๋ฒ์ฉ์ ๊ฐ๋ ๋ชจ๋ธ์ด๋ค.
TCP/IP๋ ์ค์ ๋ก ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ ์คํ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ํํ ์๋ TCP, UDP, IP..๋ฑ์ ํ์ค ์คํ์ RFC์์ ์ ์๋์ด ์๋ค.
TCP/IP stack

4๊ฐ์ ๊ณ์ธต์ 2๊ฐ๋ก ๋ถ๋ฆฌํ ์ ์๋ค.
transport + internet + link (system)
HW/ํ์จ์ด, OS ๋ ๋ฒจ์์ ๊ตฌํํ๊ณ ๊ด๋ฆฌํ๋ค. (์์คํ ๋ ๋ฒจ์์ ๊ด๋ฆฌ)
๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ง์ํ๋๋ฐ ๋ชฉ์ ์ผ๋ก ํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ด ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์๋น์ค๋ฅผ ๊ตฌํํ ์ ์๋๋ก ์ง์ํ๋ค.
application
๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ฐ ๋ชฉ์ ์ผ๋ก ํ๋ค.
Port

์ ํ๋ฆฌ์ผ์ด์
์ด ์ธํฐ๋ท์์ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ ์ถ๋ค๋ฉด, ๋ฐ์ดํฐ ํต๋ก๊ฐ ํ์ํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ ์์คํ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ฉด ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ธํฐ๋ท์์ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ์ ๋ฌํ๋ค. ๋ฐ๋ ๊ฒ ๋ํ ๋์ผํ๋ค.
์ ํ๋ฆฌ์ผ์ด์
ํ๋ก์ธ์ค์ system(IP ๊ณ์ธต)์ ์ฐ๊ฒฐํ๋ ๋ฐ์ดํฐ ํต๋ก(data path, channel)์ port๋ผ๊ณ ํ๋ค.
์ ๋ฆฌํด ๋ณด๋ฉด, port๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋คํธ์ํฌ ๊ณ์ธต ์ฌ์ด์ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ ๋๋ ์ธํฐํ์ด์ค ์ญํ ์ ํ๋ค. ๋, ์ซ์๋ก ํํํ๋ฉด์ ๋จ์ํ โ๋ฐ์ดํฐ ํต๋กโ๋ฅผ ๋์ด์ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์๋น์ค๋ฅผ ์๋ณํ๊ณ ๊ตฌ๋ถํ๋ ์ญํ ๋ ํ๋ค.
ํ๋ก์ธ์ค ๊ฐ ๋คํธ์ํฌ ํต์

ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์ด์ด ํ์ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ์ ํ๋ค.
ํ์ ๋ ์ด์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ์ญํ ์ ํ๋๋ฐ, ์ด๋ฅผ ์ํํ๋ ๊ฒ์ด ์ธํฐ๋ท ํ๋กํ ์ฝ์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ชฉ์ ํ๋ ํธ์คํธ๊น์ง ์ต์ ์ ๊ฒฝ๋ก๋ก ๋ผ์ฐํ ํ๋ ์ญํ ์ ์ํํ๋ค.
์ธํฐ๋ท ํ๋กํ ์ฝ์ unreliable ํน์ง์ด ์๋ค. (์ ๋ขฐํ ์ ์๋ ํ๋กํ ์ฝ)
์ด๋ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋ ์ ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ๋ฐ์ง ๋ชปํ ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
TCP (transmission control protocol)
๊ทธ๋์ ํ๋ก์ธ์ค ๊ฐ ํต์ ์์ ๋ฐ์ดํฐ๋ฅผ ์์ ์ (reliable)์ผ๋ก ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋กํ ์ฝ์ด ํ์ํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ๋ฐ๋ ๊ฒ์ด TCP ํ๋กํ ์ฝ์ด๋ค.
TCP๋ ํ๋ก์ธ์ค ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ์ก/์์ ํ ์ ์๊ฒ ํด์ฃผ๋ ํ๋กํ ์ฝ์ด๋ฉฐ, ์ธํฐ๋ท ํ๋กํ ์ฝ ์์์ ๋์ํ๋ค.
TCP Connection
TCP์์ Connection์ ํ๋ก์ธ์ค ๊ฐ์ ์์ ์ , ๋ ผ๋ฆฌ์ ์ธ ํต์ ํต๋ก์ด๋ค.
๋์ ๋ฐฉ๋ฒ(connection-oriented):
๋ ํ๋ก์ธ์ค ์ฌ์ด์ ์ปค๋ฅ์ ์ ์ฐ๋ค. (3-way-handshake)
๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ set up์ด๋ค.
์ด๋ ์์ผ์ ์์ฑํ๋ ๊ณผ์ ์ด ์๋๋ผ, ์ด๋ฏธ ์์ฑ๋ ์์ผ๋ค ๊ฐ์ ์ฐ๊ฒฐ์ ์ค์ ํ๋ ๊ณผ์ ์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ ์ปค๋ฅ์ ์ ๋ซ๋๋ค. (4-way-handshake)
์ด๋ ๊ฒ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ํ๊ธฐ ์ํด์๋ port๋ฅผ ์ฐพ์๊ฐ์ผ ํ๋๋ฐ, port๋ฅผ ์ด๋ป๊ฒ ์ ๋ํฌํ๊ฒ ์๋ณํ ๊ฒ์ธ๊ฐ? ๋ฐ๋ก port(number)๋ฅผ ์ ์ํ๋ค.
port number
ip address + port number๋ฅผ ํฉ์น ๊ฐ๋ ์ด socket์ด๋ค.
๋ฐ๋ผ์, ์์ผ์ด๋ ์ธํฐ๋ท์์ ์กด์ฌํ๋ ๊ฐ port๋ฅผ ์ ๋ํฌํ๊ฒ ์๋ณํ๊ธฐ ์ํ ์ฃผ์์ด๋ค.
๊ทธ๋์ TCP/IP stack์์๋ ์์ผ์ ์ฃผ์, ์ฆ ๋ค์์คํ์ด์ค์ ํด๋นํ๋ค๊ณ ๋ณผ ์ ์๋ค.
์ด ์ฃผ์๊ฐ ๊ฐ๊ฐ์ ํฌํธ๋ฅผ ์ ๋ํฌํ๊ฒ ์๋ณํ๊ธฐ ์ํ ๋ชฉ์ ์ด๋ค.
๊ฐ ์์ผ์ ์ธํฐ๋ท ์์์ ์ ๋ํฌํ๋ค.
TCP์์๋ ๊ฐ Socket์ ์ ๋ํฌํ๊ฒ ์๋ณํ ์ ์์ด์ผ ํ๋ค. TCP์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก Socket์ ์ ๋ํฌํ๊ฒ ์๋ณํ๋ค.
ํ ์์ Socket์ connection์ ์ ๋ํฌํ๊ฒ ์๋ณํ๋ค.
A/B process๋ ip
addr + port๋ก ๊ฐ๊ฐ์ ์์ผ์ ์์ฑํ๋ค.์ปค๋ฅ์ ์ฐ๊ฒฐ์ ์์ฒญํ ์ชฝ์
sourcesocket, ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ฝํ๋ ์ชฝ์ดdestsocket์ด๋ค.
์ด๋ฌํ ์ด์ ๋ก ์์ผ์ ๊ตฌ์ฑ์ <src internet addr, src port, det internet addr, dest port>๋ผ๊ณ ๋ณผ ์ ์๋ค.
TCP์์ ์์ผ์ <ip addr, port number>๋ก ์ ๋ํฌํ๊ฒ ์๋ณํ๋ค.
UDP (User Datagram Protocol)
์์ tcp๋ conneciton-oriented ํ๋กํ ์ฝ. ์ฆ, ์ฐ๊ฒฐ ์งํฅ ํ๋กํ ์ฝ์ด์ง๋ง udp๋ ๊ทธ ๋ฐ๋์ด๋ค.
udp๋
connection lessํ๋กํ ์ฝ์ด๋ค.conneciton less: ์ฐ๊ฒฐ์ ๋งบ์ง ์๊ณ ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
unreilable ํน์ง์ด ์๋ค. (internet protocol์ ๊ทธ๋๋ก ์ฌ์ฉ)
udp๋ ip์ ๊ฑฐ์ ์ฐจ์ด๊ฐ ์๊ณ , ๋ฌธ์์๋ socket์ด ์ธ๊ธ๋์ง ์๋๋ค. ํ์ง๋ง udp์์๋ port๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ดํ์ ์์ฐ์ค๋ฝ๊ฒ udp์์๋ socket ๊ฐ๋ ์ ์ฌ์ฉํ๋ค.
TCP/IP stack์์์ Socket
์ต์ข ์ ์ผ๋ก TCP/IP stack์์ Socket์ port๋ฅผ ์๋ณํ๊ธฐ ์ํ ์ฃผ์์ด๋ฉฐ 3๊ฐ์ ๊ฐ์ผ๋ก ์ ๋ํฌํ๊ฒ ์๋ณ๋๋ค.
<protocol, ip addr, port number>
udp๊น์ง ํ์ฅ๋๋ฉด์ protocol ๊น์ง ํฌํจ๋๋ค.
์์ผ์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ:
<TCP, 50.50.50.50, 8080>
<TCP, 50.50.50.50, 8080>
๋ชจ๋ ์์๊ฐ ๋์ผํ์ฌ ๊ตฌ๋ถํ ์ ์๋ค.
์์ผ์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ:
๊ตฌ์ฑ ๊ฐ ์ค ํ๋๋ผ๋ ๋ค๋ฅด๋ฉด ๊ฐ๋ฅํ๋ค.
<
UDP, 50.50.50.50, 8080><TCP, 50.50.50.50, 8080>
TCP ์์ผ ์์ฑ (TCP/IP stack ๊ด์ ์์ ๋ฐ๋ผ๋ณธ ์์ผ ์์ฑ ๊ณผ์ )
์๋ฒ ์์ผ
์ ํ๋ฆฌ์ผ์ด์ ์์ ์์คํ ์ฝ์ ํตํด ์ด๊ธฐ ์์ผ์ ์์ฑ
IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ์์ผ์ ํ ๋น
(bind)์์ผ์ ์ฐ๊ฒฐ ๋๊ธฐ ์ํ๋ก ๋ง๋ ๋ค.
(listen)ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์์ฒญ์ ์๋ฝํ๊ณ
(accept), ์๋ก์ด ์์ผ์ ์์ฑ3-way-handshake๋ listen๊ณผ accept ์ฌ์ด์์ ์ด๋ฃจ์ด์ง๋ค.
๋ฉ๋ชจ๋ฆฌ ํ ๋น
OS๋ ์์ผ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋นํ๊ณ ์ฌํค์ ์์ผ ์ ์ด ์ ๋ณด(์๋ IP, ์์ผ ์ํ ์ ๋ณด ๋ฑ)์ ์ ์ฅํ๋ค.
ํ์ผ ๋์คํฌ๋ฆฝํฐ ๋ณํ
์์ฑ๋ ์์ผ์ ๋ํ ํ์ผ ๋์คํฌ๋ฆฝํฐ(์๋ณ์)๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐํ๋๋ค.
IP ๊ณ์ธต ์ค๋น
์์ผ์ด ์์ฑ๋๋ฉด IP ๊ณ์ธต์์ ๋ฐ์ดํฐ ์ ์ก์ ์ํ ๊ฒฝ๋ก ์ค์ ์ค๋น๊ฐ ์ด๋ฃจ์ด์ง๋ค.
ํด๋ผ์ด์ธํธ ์์ผ
์ ํ๋ฆฌ์ผ์ด์ ์์ ์์คํ ์ฝ์ ํธ์ถํ์ฌ ์์ผ ์์ฑ
์๋ฒ์ ์ฐ๊ฒฐ ์์ฒญ
(connect)์ด ๋, ์๋ฒ ์์ผ์
listen์ํ์ฌ์ผ ํ๋ค.
์ถ๊ฐ์ ์ผ๋ก ์์์ผ ํ ์
TCP์ ๊ฒฝ์ฐ, ์๋ฒ ์์ผ์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์์ฒญ์ ๋ฐ์๋ค์ด๋ ์ญํ ๋ง ํ๊ณ , ์ค์ ๋ฐ์ดํฐ ํต์ ์ ์๋ก ์์ฑ๋ ์์ผ์ ํตํด ์ด๋ฃจ์ด์ง๋ค.
UDP์ ๊ฒฝ์ฐ, ์ฐ๊ฒฐ ์์ฒด๊ฐ ์์ด์ ์๋ฒ ์์ผ๊ณผ ํด๋ผ์ด์ธํธ ์์ผ์ ๊ตฌ๋ถ์ด ์๋ค.
Reference: ์ฌ์ด์ฝ๋ - ํ๋กํ ์ฝ ํ์ค ์คํ์์ ์ ์ํ Socket
Last updated