๐ŸŒ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ๊ณผ ์†Œ์ผ“ - YangJJune/U-Compass GitHub Wiki

์„œ๋ก 

์ด๋ฒˆ์— ๋“œ๋ฆผํ•™๊ธฐ์ œ๋ผ๋Š” ๊ต๋‚ด ํ™œ๋™์— ํ•ฉ๊ฒฉํ•˜์—ฌ U-Compass๋ผ๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ์ž‘ํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ค‘๊ฐ„๋ฐœํ‘œ ์ „๊นŒ์ง€๋Š” ์†Œ์ผ“ ํ†ต์‹ ์— ๋Œ€ํ•˜์—ฌ ๊ณต๋ถ€ํ•˜๊ณ  ์—ฐ๊ตฌํ•œ ๋’ค, ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ตœ์ข… ๋ฐœํ‘œ ๋•Œ U-Compass ์–ดํ”Œ์„ ์ œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.

๋ญ˜ ํ•  ๊ฒƒ์ธ๊ฐ€? U-Compass ๋ž€?

์œ„์—์„œ U-Compass๋ผ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ๊ณต๋ถ€ ๋ฐ ์—ฐ๊ตฌ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค๊ณ  ํ•˜์˜€๋‹ค. ๋”ฐ๋ผ์„œ U-Compass๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…์„ ํ•ด์•ผํ•œ๋‹ค๊ณ  ๋ณธ๋‹ค. U-Compass๋ž€ ์นœ๊ตฌ ๊ฐ„์˜ ์‹ค์‹œ๊ฐ„ ์œ„์น˜์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๋Š” ์„œ๋น„์Šค์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผํ•˜๋Š” ์ ์€ ์‹ค์‹œ๊ฐ„์ด๋ผ๋Š” ์ , ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•œ๋‹ค๋Š” ํŠน์„ฑ, ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋ฐ”์ผ ์•ฑ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ํ•„์—ฐ์ ์œผ๋กœ ์–ด๋– ํ•œ ๊ตฌ์กฐ๋กœ ์†Œ์ผ“ ํ†ต์‹  ๋˜๋Š” HTTP ํ†ต์‹ ์„ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋น ๋ฅด๊ณ , ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋“ฑ์„ ๊ณ ๋ คํ•˜์—ฌ๋งŒ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 2๋‹ฌ ๊ฐ„ ์ด์— ๋Œ€ํ•œ ์—ฐ๊ตฌ๋ฅผ ์ง„ํ–‰ํ•  ๊ฒƒ์ด๋‹ค.

๋„คํŠธ์›Œํฌ๋ž€

๋„คํŠธ์›Œํฌ๋Š” ๋‘˜ ์ด์ƒ์˜ ์ปดํ“จํ„ฐ์™€ ์ด๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋งํฌ์˜ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ•˜๋“œ์›จ์–ด(์–ด๋Œ‘ํ„ฐ, ์ผ€์ด๋ธ” ๋ฐ ์ „ํ™”์„ ๊ณผ ๊ฐ™์€ ์žฅ๋น„)์ž…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๋ฐ ๊ฐœ๋… ๋ชจ๋ธ์ด ๋…ผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋„คํŠธ์›Œํฌ ๋ฐ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ง์ด ์ฒ˜์Œ๋ณด๋Š” ์ธ์›์—๊ฒ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋Š”๋ฐ ๊ฐ„๋‹จํžˆ ๋งํ•ด ๋‘ ์ปดํ“จํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋„คํŠธ์›Œํฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

OSI ๋ชจ๋ธ?

๊ทธ๋Ÿฐ๋ฐ ์œ„์—์„œ ์‰ฝ๊ฒŒ ๋งํ•˜๊ธด ํ–ˆ์ง€๋งŒ ๋‘ ์ปดํ“จํ„ฐ ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ์ ˆ๋Œ€ ๋‹จ์ˆœํ•œ ์ผ์ด ์•„๋‹ˆ๋‹ค. ์ด๋Ÿฐ์ €๋Ÿฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ์— ์ด ์ฒ˜๋ฆฌ์— ๋Œ€ํ•˜์—ฌ 7๊ฐ€์ง€ ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฅ˜ํ•œ ๋ชจ๋ธ์ด ์žˆ๋‹ค. ๊ทธ๊ฒƒ์ด OSI 7๊ณ„์ธต ๋ชจ๋ธ์ด๋‹ค (OSI Model)

๊ฐ๊ฐ์˜ layer์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค

Application Layer - ์œ ์ €๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ถ€๋ถ„๋“ค์„ ์ด๊ด„ํ•˜๋Š” ๋ ˆ์ด์–ด Presentation Layer - data๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ format์ธ์ง€ ๋ณด์ฆ ๋ฐ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋ ˆ์ด์–ด Session Layer - connection์„ ์œ ์ง€ํ•˜๋Š” ๋ ˆ์ด์–ด (ํฌํŠธ์™€ ์„ธ์…˜ ๊ด€๋ฆฌ) Transport Layer - TCP์™€ UDP ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ ˆ์ด์–ด Network Layer - ์–ด๋–ค physical path๋ฅผ ํ†ตํ•ด data๋ฅผ ์ „๋‹ฌํ•  ์ง€ ์ •ํ•˜๋Š” ๋ ˆ์ด์–ด Data Link Layer - ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ data์˜ format์„ ์ •์˜ํ•˜๋Š” ๋ ˆ์ด์–ด Physical Layer - ๊ฐ€์žฅ ํ•˜๋‹จ ๊ณ„์ธต์ธ ๋งŒํผ raw bit ๋กœ ์ด๋ฃจ์–ด์ง„ stream์„ ๋ณด๋‚ด๋Š” ๋ ˆ์ด์–ด

 

๋„คํŠธ์›Œํฌ ํ†ต์‹ ์ด๋ž€?

์ปดํ“จํ„ฐ๋‚˜ ์žฅ์น˜๋“ค์ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ณผ์ •์ด๋‹ค. ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์€ ์ •๋ณด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™๊ณผ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ๋‹ค์–‘ํ•œ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฃจ์–ด์ง€๋ฉฐ,์ด๋Ÿฌํ•œ ํ†ต์‹ ์€ ๋ฌผ๋ฆฌ์ ์ธ ์—ฐ๊ฒฐ(์˜ˆ: ์ผ€์ด๋ธ”, Wi-Fi)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์ด ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ  ํ˜‘๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ HTTP ํ†ต์‹ ๊ณผ ์†Œ์ผ“ ํ†ต์‹ ์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค

 

HTTP ํ†ต์‹ ์ด๋ž€?

์›น์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. HTTP๋Š” ์ฃผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • GET, POST, PUT, DELETE ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์˜ ์ข…๋ฅ˜๋ฅผ ์ •์˜ํ•œ๋‹ค.
  • ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์š”์ฒญ์˜ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค(์˜ˆ: 200 OK, 404 Not Found).
  • ๋‹จ๋ฐœ์ ์ด๋‹ค. (์œ ์ง€๋˜์ง€ ์•Š๋Š”๋‹ค)

 

Socket

์†Œ์ผ“(Socket)์€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ข…๋‹จ์ (endpoint)์ด๋‹ค. ์†Œ์ผ“์€ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด ํ•„์š”ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์†Œ์ผ“์€ ์šด์˜์ฒด์ œ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋ฉฐ, IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ์‹๋ณ„๋œ๋‹ค.

 

HTTP ํ†ต์‹ ๊ณผ Socket์˜ ๋น„๊ต

์žฅ๋‹จ์  ๋น„๊ต

HTTP ํ†ต์‹ 

์žฅ์ 

  1. ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์„ ์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด ์‚ฌ์šฉ์ด ๊ฐ„ํŽธํ•˜๋‹ค.
  2. HTTP๋Š” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ๋กœ, ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ๊ณผ ์–ธ์–ด์—์„œ ์ง€์›๋œ๋‹ค.
  3. ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.

๋‹จ์ 

  1. ๊ฐ ์š”์ฒญ์ด ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ต๊ณ , ์„ธ์…˜ ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋งค ์š”์ฒญ๋งˆ๋‹ค ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  ํ•ด์ œํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ๋Œ€๋Ÿ‰์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Socket

์žฅ์ 

  1. ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ง€์†์ ์ธ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ(TCP, UDP)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ์—ฐ๊ฒฐ์ด ์œ ์ง€๋˜๋ฏ€๋กœ ์ƒํƒœ ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ 

  1. ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๋ณต์žกํ•˜์—ฌ ๊ตฌํ˜„์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.
  2. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฏ€๋กœ, ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.