Protocol ํ‘œ์ค€ ์ŠคํŽ™ Socket

OSI 7 Layer๋Š” ๋„คํŠธ์›Œํฌ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ๋ฒ”์šฉ์  ๊ฐœ๋… ๋ชจ๋ธ์ด๋‹ค.

TCP/IP๋Š” ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ ์Šคํƒ์ด๋‹ค.

  • ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•„๋Š” TCP, UDP, IP..๋“ฑ์˜ ํ‘œ์ค€ ์ŠคํŽ™์€ RFC์—์„œ ์ •์˜๋˜์–ด ์žˆ๋‹ค.

TCP/IP stack

4๊ฐœ์˜ ๊ณ„์ธต์€ 2๊ฐœ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. transport + internet + link (system)

    • HW/ํŽŒ์›จ์–ด, OS ๋ ˆ๋ฒจ์—์„œ ๊ตฌํ˜„ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค. (์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์—์„œ ๊ด€๋ฆฌ)

    • ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š”๋ฐ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์ด ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•œ๋‹ค.

  2. 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์„ ์œ ๋‹ˆํฌํ•˜๊ฒŒ ์‹๋ณ„ํ•œ๋‹ค.

  1. ํ•œ ์Œ์˜ Socket์€ connection์„ ์œ ๋‹ˆํฌํ•˜๊ฒŒ ์‹๋ณ„ํ•œ๋‹ค.

    1. A/B process๋Š” ip addr + port๋กœ ๊ฐ๊ฐ์˜ ์†Œ์ผ“์„ ์ƒ์„ฑํ•œ๋‹ค.

    2. ์ปค๋„ฅ์…˜ ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•œ ์ชฝ์„ source socket, ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์ˆ˜๋ฝํ•˜๋Š” ์ชฝ์ด dest socket์ด๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์†Œ์ผ“์˜ ๊ตฌ์„ฑ์„ <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 ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณธ ์†Œ์ผ“ ์ƒ์„ฑ ๊ณผ์ •)

  1. ์„œ๋ฒ„ ์†Œ์ผ“

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ์ดˆ๊ธฐ ์†Œ์ผ“์„ ์ƒ์„ฑ

      • IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์†Œ์ผ“์— ํ• ๋‹น (bind)

      • ์†Œ์ผ“์„ ์—ฐ๊ฒฐ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค. (listen)

      • ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๊ณ  (accept), ์ƒˆ๋กœ์šด ์†Œ์ผ“์„ ์ƒ์„ฑ

        • 3-way-handshake๋Š” listen๊ณผ accept ์‚ฌ์ด์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.

    • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

      • OS๋Š” ์†Œ์ผ“ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹นํ•˜๊ณ  ์—ฌํ‚ค์— ์†Œ์ผ“ ์ œ์–ด ์ •๋ณด(์ƒ๋Œ€ IP, ์†Œ์ผ“ ์ƒํƒœ ์ •๋ณด ๋“ฑ)์„ ์ €์žฅํ•œ๋‹ค.

    • ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ๋ณ€ํ™˜

      • ์ƒ์„ฑ๋œ ์†Œ์ผ“์— ๋Œ€ํ•œ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(์‹๋ณ„์ž)๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐ˜ํ™˜๋œ๋‹ค.

    • IP ๊ณ„์ธต ์ค€๋น„

      • ์†Œ์ผ“์ด ์ƒ์„ฑ๋˜๋ฉด IP ๊ณ„์ธต์—์„œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•œ ๊ฒฝ๋กœ ์„ค์ • ์ค€๋น„๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค.

  2. ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜์—ฌ ์†Œ์ผ“ ์ƒ์„ฑ

    • ์„œ๋ฒ„์— ์—ฐ๊ฒฐ ์š”์ฒญ (connect)

      • ์ด ๋•Œ, ์„œ๋ฒ„ ์†Œ์ผ“์€ listen์ƒํƒœ์—ฌ์•ผ ํ•œ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•  ์ 

  1. TCP์˜ ๊ฒฝ์šฐ, ์„œ๋ฒ„ ์†Œ์ผ“์€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๋Š” ์—ญํ• ๋งŒ ํ•˜๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์€ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์†Œ์ผ“์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค.

  2. UDP์˜ ๊ฒฝ์šฐ, ์—ฐ๊ฒฐ ์ž์ฒด๊ฐ€ ์—†์–ด์„œ ์„œ๋ฒ„ ์†Œ์ผ“๊ณผ ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์˜ ๊ตฌ๋ถ„์ด ์—†๋‹ค.

Reference: ์‰ฌ์šด์ฝ”๋“œ - ํ”„๋กœํ† ์ฝœ ํ‘œ์ค€ ์ŠคํŽ™์—์„œ ์ •์˜ํ•œ Socketarrow-up-right

Last updated