๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“– Note

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