TCP/IP * 2. νλ‘ν μ½ μ²΄κ³μ μμΌ νμ ( TCP, UDP )
λ€νΈμν¬ νλ‘κ·Έλ¨μ ν λ κ°μ₯ ν΅μ¬μ΄ λλ κ²μ΄ μμΌμ΄λ€. 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