๋คํธ์ํฌ ํ๋ก๊ทธ๋จ์ ํ ๋ ๊ฐ์ฅ ํต์ฌ์ด ๋๋ ๊ฒ์ด ์์ผ์ด๋ค. socket์ ์ด์ฉํ์ฌ ๊ฐ์ข ๋๋ฐ์ด์ค์ ๋ฐ์ดํฐ ์ก์์ ์ ํ๋ค.
์ด๋ฐ socket์ ์์ฑํ ๋ 2๊ฐ์ง ์ค์ํ ์ ๋ณด๋ฅผ ์ ๋ ฅ ํ๋๋ฐ ๊ทธ๊ฒ์ด ๋ฐ๋ก ํ๋กํ ์ฝ ์ฒด๊ณ์ ์์ผ์ ํ์ ์ด๋ค.
ํ๋กํ ์ฝ ์ฒด๊ณ
- Protocol ( ํ๋กํ ์ฝ ) ์ด๋ ๋๋ฐ์ด์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ด๋ค. ์ฆ, ๊ฐ ๋๋ฐ์ด์ค ๊ฐ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด์ ์ ์ํด ๋์ ์ฝ์์ ๋ปํ๋ค. ์ด๋ฌํ ๊ท์ฝ์ ์ ํด ๋์ง ์์ผ๋ฉด ์๋๊ฐ ๋ด๊ฐ ์๋ํ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ดํดํ ์๋ ์๋ค.
์์ผ ํต์ ์ ํ ๋ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ ๋ถ๋ฅ๊ฐ ๋ช๊ฐ์ง ์๋ค. ์ด๋ฌํ ๋ถ๋ฅ๋ฅผ ํ๋กํ ์ฝ ์ฒด๊ณ๋ผ๊ณ ํ๋ค.
์ด๋ฌํ ๋ถ๋ฅ๋ฅผ ํ๋กํ ์ฝ ์ฒด๊ณ๋ผ๊ณ ํ๋ฉฐ c ์ธ์ด์์ socket์ ์์ฑํ ๋ ๋ค์๊ณผ ๊ฐ์ด ํจ์๋ฅผ ํธ์ถ ํ ๋ ์ฒซ๋ฒ์งธ ์ธ์์ ํ๋กํ ์ฝ ์ฒด๊ณ๋ฅผ ๋ฃ๋๋ค.
// C code
#include <sys/socket.h>
int socket(PF_INET, int type, int protocol );
์ด๋ฆ |
Protocol Family ( ํ๋กํ ์ฝ ์ฒด๊ณ ) |
PF_INET |
IPv4 ์ธํฐ๋ท ํ๋กํ ์ฝ ์ฒด๊ณ |
PF_INET6 |
IPv6 ์ธํฐ๋ท ํ๋กํ ์ฝ ์ฒด๊ณ |
PF_LOCAL |
๋ก์ปฌ ํต์ ์ ์ํ UNIX ํ๋กํ ์ฝ ์ฒด๊ณ |
PF_PACKET |
Low Level ์์ผ์ ์ํ ํ๋กํ ์ฝ ์ฒด๊ณ |
PF_IPX |
IPX ๋ ธ๋ฒจ ํ๋กํ ์ฝ ์ฒด๊ณ |
์ฃผ์ ์ฒด๊ณ
- C์์๋ ์์ผ์ ์์ฑ ํ bind๋ connect๋ฅผ ํ ๋ ์ฃผ์ ๊ตฌ์กฐ์ฒด์ ์ฃผ์ ์ฒด๊ณ๋ฅผ ๋ฃ์ด์ฃผ์ง๋ง, Python์์๋ ํ๋กํ ์ฝ ์ฒด๊ณ๋ฅผ ๋ฃ์ง ์๊ณ ์๋ ์ฒ๋ผ ์ฃผ์ ์ฒด๊ณ๋ง ๋ฃ๋๋ค.
# Python code
serverSocket = socket(AF_IENT, SOCK_STREAM)
์ด๋ฆ |
Address Family ( ์ฃผ์ ์ฒด๊ณ ) |
AF_INET |
IPv4 ์ธํฐ๋ท ์ฃผ์ ์ฒด๊ณ |
AF_INET6 |
IPv6 ์ธํฐ๋ท ์ฃผ์ ์ฒด๊ณ |
AF_LOCAL |
๋ก์ปฌ ํต์ ์ ์ํ UNIX ์ฃผ์ ์ฒด๊ณ |
์์ผ ํ์ ( TCP, UDP )
- socket type์ ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์์ ์๋ฏธ ํ๋ฉฐ socket ํจ์ ํธ์ถ ์ 2๋ฒ์งธ ์ธ์์ ๊ฐ์ ๋ฃ๋๋ค.
// C code
#include <sys/socket.h>
int socket(int domain, SOCK_DGRAM, int protocol);
# Python code
serverSocket = socket(AF_IENT, SOCK_STREAM)
TCP |
UDP |
์ฐ๊ฒฐ ์งํฅํ ์์ผ ( 3-way handshake ) |
๋น ์ฐ๊ฒฐ ์งํฅํ ์์ผ |
SOCK_STREAM |
SOCK_DGRAM |
๋ฐ์ดํฐ ์์ค ์์ด ๋ชฉ์ ์ง๋ก ์ ์ก |
๋ฐ์ดํฐ ์์ค์ ์ฐ๋ ค๊ฐ ์์ |
์ ์ก ์์๋๋ก ๋ฐ์ดํฐ๊ฐ ์์ |
์ ์ก๋ ์์์ ์๊ด์์ด ๊ฐ์ฅ ๋น ๋ฅธ ์ ์ก์ ์งํฅ |
๋ฐ์ดํฐ ๊ฒฝ๊ณ๊ฐ ์์ |
๋ฐ์ดํฐ ๊ฒฝ๊ณ ์์ |
Thanks for
'๐ Note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Codecov? ๋ญ๋ ๋.. ์ฝ๋.. ์ปค๋ฒ๋ฆฌ์ง...๋ ๋...OTL (0) | 2020.03.09 |
---|---|
์ฝ๋ฃจํด vs ์ค๋ ๋ (2) | 2020.03.09 |
โ Solved * [VMware] Workstation โCannot connect the virtual device sata0:1/ide1:0 ... (2) | 2020.03.05 |
โ Solved * VMware Workstation cannot create ~/.vmware directory ... (0) | 2020.03.05 |
๋์์ฑ vs ๋ณ๋ ฌ์ฑ ( Concurrency vs Parallelism ) (0) | 2020.03.05 |