๐Ÿช HTTP Connection (TCP)

lnnaeยท2020๋…„ 5์›” 17์ผ
0

HTTP ์ปค๋„ฅ์…˜

HTTP ํ†ต์‹ ์€ TCP๋ฅผ ์ด์šฉํ•ด ์ˆœ์ฐจ์ ์ด๊ณ  ์†์‹ค, ์†์ƒ๋˜์ง€ ์•Š๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
TCP๋Š” IP ํŒจํ‚ท(or ๋ฐ์ดํ„ฐ๊ทธ๋žจ)์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.


์™ผ์ชฝ์€ HTTP, ์˜ค๋ฅธ์ชฝ์€ HTTPS์ด๋‹ค. OSI 7๊ณ„์ธต์—์„œ TCP/IP ํ”„๋กœํ† ์ฝœ์€ 4๊ณ„์ธต์— ํ•ด๋‹นํ•œ๋‹ค.
๋‹ด์—๋Š” OSI 7๊ณ„์ธต์„ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค.. ๊ฐ€๋” ํ—ท๊ฐˆ๋ฆผ

HTTP๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ๋•Œ, ํ˜„์žฌ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” TCP ์ปค๋„ฅ์…˜์„ ํ†ตํ•ด์„œ ๋ฉ”์‹œ์ง€์˜ ๋‚ด์šฉ์„ ์ˆœ์„œ๋Œ€๋กœ ์ „์†กํ•œ๋‹ค. ์ด๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ segment ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ์ด segment๋ฅผ IP ํŒจํ‚ท์— ๋‹ด์•„ ์ „๋‹ฌํ•œ๋‹ค.

์ „์†ก ๊ณผ์ •

๊ฐ segment๋Š” IP ํŒจํ‚ท์— ๋‹ด๊ฒจ ์ „๋‹ฌ๋˜๋Š”๋ฐ,
ํด๋ผ์ด์–ธํŠธ --> [TCP seg1] --> [TCP seg2] --> [TCP seg3] --> ์„œ๋ฒ„
์ด๋Ÿฐ ๋Š๋‚Œ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

IP ํŒจํ‚ท

์ด๋•Œ IP ํŒจํ‚ท์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ •๋ณด๋“ค์ด ๋‹ด๊ฒจ์žˆ๋‹ค.

- IP ํŒจํ‚ท ํ—ค๋” (๋ฐœ/์ˆ˜์‹ ์ง€ ip ์ฃผ์†Œ, ํ—ค๋” ์ฒดํฌ์„ฌ) 
- TCP ์„ธ๊ทธ๋จผํŠธ ํ—ค๋” (๋ฐœ/์ˆ˜์‹ ์ง€ port ๋ฒˆํ˜ธ, TCP ์ˆœ์„œ ๋ฒˆํ˜ธ, TCP ์ฒดํฌ์„ญ)
- TCP ๋ฐ์ดํ„ฐ 

TCP ์ปค๋„ฅ์…˜์˜ ์œ ์ง€

์œ„์—์„œ ๋งํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ IP ํŒจํ‚ท์—์„œ๋Š” ๋ฐœ/์ˆ˜์‹ ์ง€ ip ์ฃผ์†Œ๊ฐ€, TCP ์„ธ๊ทธ๋จผํŠธ์— ๋ฐœ/์ˆ˜์‹ ์ง€ port ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค. ์—ฌ๊ธฐ์— ์žˆ๋Š” ip ์ฃผ์†Œ๋กœ ํŠน์ • ์ปดํ“จํ„ฐ (์„œ๋ฒ„)์— ์—ฐ๊ฒฐ๋˜๊ณ , port๋ฒˆํ˜ธ๋กœ ์›ํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

TCP ์ปค๋„ฅ์…˜์€ ์ด์ฒ˜๋Ÿผ ๋ฐœ์‹  ip, ์ˆ˜์‹  ip, ๋ฐœ์‹  port, ์ˆ˜์‹  port๋กœ ์‹๋ณ„๋œ๋‹ค. ์ด ๋„ค๊ฐ€์ง€ ๊ฐ’์ด ์ค‘๋ณต๋˜๋Š” TCP ์ปค๋„ฅ์…˜์€ ์—†์ง€๋งŒ, ์ผ๋ถ€๊ฐ€ ๊ฐ™์„์ˆ˜๋Š” ์žˆ๋‹ค.

TCP ์†Œ์ผ“

์šฐ๋ฆฌ๋Š” ์ด๋Ÿฐ TCP ์ปค๋„ฅ์…˜์œผ๋กœ ์›๊ฒฉ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์ปค๋„ฅ์…˜์„ ์š”์ฒญํ•˜๊ณ , TCP ์ปค๋„ฅ์…˜์ด ์ƒ์„ฑ๋˜๋ฉด HTTP ์š”์ฒญ-์‘๋‹ต์„ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋–„ HTTP ์š”์ฒญ-์‘๋‹ต์€ ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์•„๋ž˜์— TCP ๊ณ„์ธต์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— TCP ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

HTTP/TCP ์ง€์—ฐ

๋„ˆ๋ฌด ํฐ ๋ฐ์ดํ„ฐ๋‚˜ ๋ณต์žกํ•œ ์ž์›์„ ๋‚ด๋ ค๋ฐ›์ง€ ์•Š๋Š” ์ด์ƒ, ๋Œ€๋ถ€๋ถ„์˜ HTTP ์ง€์—ฐ์€ TCP ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ DNS๋ฅผ ์‚ฌ์šฉํ•ด URI์—์„œ IP๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์ง€์—ฐ
  • ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„๊ฐ€ TCP ์ปค๋„ฅ์…˜์— ๊ฑธ๋ฆฌ๋Š” ์ง€์—ฐ
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์ง€์—ฐ
  • ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ณด๋‚ด๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์ง€์—ฐ

์ด์ฒ˜๋Ÿผ TCP ์ง€์—ฐ์€ ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ, ๋„คํŠธ์›ŒํŠธ์™€ ์„œ๋ฒ„์˜ ์ „์†ก ์†๋„, ์š”์ฒญ/์‘๋‹ต ๋ฉ”์‹œ์ง€์˜ ํฌ๊ธฐ ๋“ฑ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

TCP ๊ด€๋ จ ์ง€์—ฐ ์š”์†Œ๋Š” ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค.

  • TCP ํ•ธ๋“œ ์…ฐ์ดํฌ ์„ค์ •
  • TCP ๋Š๋ฆฐ ์‹œ์ž‘ (slow-start)
  • ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋ชจ์•„ ์ „์†กํ•˜๋Š” nagle ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • piggyback๊ณผ ACK๋ฅผ ์œ„ํ•œ ํ™•์ธ ์‘๋‹ต ์•Œ๊ณ ๋ฆฌ์ฆ˜

TCP ํ•ธ๋“œ ์…ฐ์ดํฌ ์ง€์—ฐ

์ž‘์€ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์— ์ปค๋„ฅ์…˜์ด ์‚ฌ์šฉ๋˜๋ฉด HTTP ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

ํ•ธ๋“œ ์…ฐ์ดํฌ ๊ณผ์ •์„ ๊ฐ„๋‹จํžˆ ๋ฌ˜์‚ฌํ•˜์ž๋ฉด
1. ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„ [SYN]
2. ์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ [SYN+ACK]
3. ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„ [ํ™•์ธ ์‘๋‹ต]
4. ์„œ๋ฒ„ -> ํด๋ผ์ด์–ธ๋“œ [๋ฐ์ดํ„ฐ ์ „์†ก]
1-2๊ณผ์ •์ด ์ปค๋„ฅ์…˜, 3์€ ์ž˜ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ํ™•์ธ ์‘๋‹ต์ด๋‹ค.

ํฌ๊ธฐ๊ฐ€ ์ž‘์€ HTTP ํŠธ๋žœ์žญ์…˜์€ 50% ์ด์ƒ์˜ ์‹œ๊ฐ„์„ TCP ๊ตฌ์„ฑ์— ์“ด๋‹ค.

ํ™•์ธ ์‘๋‹ต ์ง€์—ฐ

์•„๊นŒ TCP ์„ธ๊ทธ๋จผํŠธ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ์— TCP ์ˆœ์„œ ๋ฒˆํ˜ธ์™€ ์ฒดํฌ์„ฌ์ด ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด๋•Œ ๊ฐ ์„ธ๊ทธ๋จผํŠธ์˜ ์ˆ˜์‹ ์ž๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ํ™•์ธ ์‘๋‹ต ํŒจํ‚ท์„ ์†ก์‹ ์ž์—๊ฒŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์†ก์‹ ์ž๋Š” ํ™•์ธ ์‘๋‹ต ํŒจํ‚ท์„ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ ํŠน์ • ์‹œ๊ฐ„์•ˆ์— ๋ฐ›์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ๋Š” ์ „์†ก์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ „์†กํ•œ๋‹ค.

ํ™•์ธ ์‘๋‹ต์€ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์†ก์ถœ๋˜๋Š” ๋ฐ์ดํ„ฐ ํŒจํ‚ท์— ํ™•์ธ ์‘๋‹ต์„ piggyBackํ•œ๋‹ค.
์ด์™€ ๊ฐ™์€ piggyback์„ ๋Š˜๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ, TCP ์Šคํƒ์€ ํ™•์ธ์‘๋‹ต์ง€์—ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•œ๋‹ค.
ํ™•์ธ์‘๋‹ต์ง€์—ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€, ํŠน์ • ์‹œ๊ฐ„๋™์•ˆ ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด๋†“๊ณ , piggyback ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ํƒ์ƒ‰ํ•œ๋‹ค. ๋งŒ์•ฝ ์‹œ๊ฐ„ ๋‚ด์— ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ๋ณ„๋„์˜ ํŒจํ‚ท์„ ๋งŒ๋“ค์–ด ์ „์†กํ•œ๋‹ค.

TCP Slow-Start

TCP์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„๋Š” TCP ์ปค๋„ฅ์…˜์ด ๋งŒ๋“ค์–ด์ง„ ์ง€ ์–ผ๋งˆ๋‚˜ ์ง€๋‚ฌ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.
์ฒ˜์Œ์—๋Š” TCP ์ปค๋„ฅ์…˜์˜ ์ตœ๋Œ€ ์†๋„๋ฅผ ์ œํ•œํ•˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ „์†ก๋˜๋ฉด ์†๋„ ์ œํ•œ์„ ์ ์ฐจ ๋†’์—ฌ๊ฐ€๋ฉด์„œ ์ธํ„ฐ๋„ท์˜ ๋ถ€ํ•˜์™€ ํ˜ผ์žก์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
์ด slow start๋Š” ํ•œ ๋ฒˆ์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ท์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์„ ํ˜ผ์žก ์œˆ๋„์šฐ์ œ์–ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด ๊ธฐ๋Šฅ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ ์—ฐ๊ฒฐ๋œ ์ปค๋„ฅ์…˜์€ ์–ด๋Š ์ •๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์€ ์ปค๋„ฅ์…˜๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค.

Nagle ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ์ž‘๋”๋ผ๋„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก TCP๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
TCP ์„ธ๊ทธ๋จผํŠธ์˜ ํ”Œ๋ž˜๊ทธ์™€ ํ—ค๋” ๋“ฑ์ด ์•ฝ 40๋ฐ”์ดํŠธ์ •๋„ ๋˜๋Š”๋ฐ ๋ฐ์ดํ„ฐ๊ฐ€ 1๋ฐ”์ดํŠธ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์ธ ์ „์†ก์ด๊ณ , ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ๋„ ์ €ํ•˜๋œ๋‹ค.
๊ทธ๋ž˜์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ฐ”๋กœ Nagle ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ•œ๋‹ค.

Segment์˜ ํฌ๊ธฐ๊ฐ€ ์ตœ๋Œ€๊ฐ€ ๋˜์ง€ ์•Š์œผ๋ฉด ์ „์†กํ•˜์ง€ ์•Š๋‹ค๊ฐ€, ์ „์†ก ํ›„ ํ™•์ธ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋˜ ํŒจํ‚ท์ด ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์•˜๊ฑฐ๋‚˜ ์ „์†กํ• ๋งŒํผ์˜ ํŒจํ‚ท์ด ์Œ“์˜€์„ ๋•Œ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.
(๋‹จ, ๋‹ค๋ฅธ ํŒจํ‚ท๋“ค์ด ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์•˜์„ ๊ฒฝ์šฐ ์ตœ๋Œ€ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์€ ํŒจํ‚ท์˜ ์ „์†ก์„ ํ—ˆ๋ฝํ•œ๋‹ค.)

ํ•˜์ง€๋งŒ HTTP ์„ฑ๋Šฅ๊ณผ ๊ด€๋ จํ•ด ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
1. ํฌ๊ธฐ๊ฐ€ ์ž‘์€ HTTP ๋ฉ”์‹œ์ง€๋Š” ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ์ง€์—ฐ.
2. Nagle + ํ™•์ธ์‘๋‹ต์ง€์—ฐ ์กฐํ•ฉ์œผ๋กœ ์“ฐ์ผ ๊ฒฝ์šฐ ํ˜•ํŽธ์—†๋Š” ๋™์ž‘..


๐Ÿ˜€ ํ•™๊ต์—์„œ ๋ฐฐ์šฐ๋˜ ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ๊ณผ๋ชฉ์ด ์ด๋Ÿฐ๊ฑด์ค„์€ ๊ฟˆ์—๋„ ๋ชฐ๋ž๋‹ค... ๊ทธ๋•Œ๋Š” ๊ทธ๋ƒฅ ๋ฌด์กฐ๊ฑด ์•”๊ธฐ๋งŒ ํ–ˆ์—ˆ๋Š”๋ฐ ๋ญ”๊ฐ€ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€ ์•„๋Š” ๊ธฐ๋ถ„์ด๋‹ค!!

์ด ๊ธ€์€ HTTP ์™„๋ฒฝ ๊ฐ€์ด๋“œ๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.
์ €์ž‘๊ถŒ ๋ฐ ๊ธฐํƒ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

profile
์ด๋‚ด์ž„๋‹ˆ๋‹น :>

0๊ฐœ์˜ ๋Œ“๊ธ€