๐ UDP๋ TCP์ ๋นํด ์ผ๋ง๋ ๋น ๋ฅผ๊น? - YangJJune/U-Compass GitHub Wiki
์คํ ๊ฐ์
TCP๋ UDP, UDP๊ฐ ๋ ๋น ๋ฅด๋ค ๋น์ฐ๊ฒฐ์ฑ, ์ ๋ขฐ์ฑ ๋ณด์ฅ X ๋ฑ ์ ๋น ๋ฅธ์ง๋ ์ดํด๋ฅผ ํ ์ ์์ผ๋ ๊ทธ๋์ ๋ค์๋ ์๋ฌธ์ ๋๋์ฒด ์ผ๋ง๋ ๋น ๋ฅด๋ค๋๊ฑด๋ฐ? ์๋ค.
์คํ ๋ด์ฉ
UDP๊ฐ TCP ๋ณด๋ค ์ผ๋ง๋ ๋น ๋ฅธ ์ง ์์๋ณด์. ๋ํ ์ด์ ๋ฐ๋ฅธ defect๋ ์๋์ง ์์๋ณด์.
ํ๊ฒฝ ์ค์
โป ์ต๋ํ ๋์ผํ RTT๊ฐ ๋ ์ ์์ด์ผํ๋ค. ์ด๋ฅผ ๊ณ ๋ คํ์
-
๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ (data send ์)๋ฅผ ๋ณด๋ด๋ณด์
-
์ปค๋ค๋ ์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ณด์(์ด์ฐจํผ ํจํท์ ์ชผ๊ฐ๊ณ ์๋ ๊ฒ ๋๊ฐ์์ ์์ ์คํ๊ณผ ์ฐจ์ด๊ฐ ์๋ค๊ณ ํ๋จ, ํน์ด์ ์ด ์๋ค๋ฉด TCP๋ ํจํท์ ์์์ ์ชผ๊ฐ์ฃผ๊ณ UDP๋ ํจํท์ ์ง์ ์ชผ๊ฐ์ผํจ)โ ์ด๋ ๊ฐ๊ฐ์ ์ํฉ์์ ์๋(์์ ์๊ฐ)์ ๋ฐฐํฐ๋ฆฌ ์ฑ๋ฅ์ ๊ณ ๋ คํ์
์คํ ๋ชจ๋ธ
1:1 ํต์ ์ ๊ฒฝ์ฐ, server์ client ๊ฐ์ ์์ผ์ ์ด๊ธฐ๋ง ํ๋ฉด ๋๋ค.
ํน์ด์ฌํญ - localhost์์๋ ์ ์ฐจ์ด๊ฐ ์ ๋ ๊น?
** 1. ์ฑ์์ ๋ฐ์ดํฐ ์ ์ก** - ์น ๋ธ๋ผ์ฐ์ ๋ก http://127.0.0.1๋ก ์์ฒญ์ ๋ณด๋ด์. - ์ด ์์ฒญ์
TCP/IP
์คํ์ ํตํด ํจํท์ผ๋ก ๋๊ฐ๋ ค๊ณ ํ๊ฒ ์ฃ ?
** 2.
TCP/IP
์คํ์์IP์ฃผ์
๋ฅผ ๋ณด๊ณ๋ฃจํ๋ฐฑ NI
๋ก ๊ฐ๋๋ค.** - ๋ชฉ์ ์ง ์ฃผ์127.0.0.1
์ ํ์ธํ์ผ๋,์ด์ ํจํท์ ์ธ๋ถ๋ก ๋ณด๋ด์ง ์๊ณ ๋ก์ปฌ๋ก ๋ค์ ๋ณด๋ ๋๋ค.
** 3. ๋ก์ปฌ๋ก ํจํท ์ ๋ฌ** - ํจํท์ ๋ค์
TCP/IP
์คํ ๊ณ์ธต์ผ๋ก ์ ๋ฌ๋๊ณ , ์ฌ๋ฐ๋ฅธํฌํธ
๋ก ์ ๋ฌ๋ฉ๋๋ค.
** 4. ์๋ฒ ์ฑ ์์ฒญ ์์ ** - ๋ก์ปฌ ์๋ฒ ์ฑ์ ์ด ์์ฒญ์ ์์ ํ๊ณ , ์ ์ ํ ์๋ต์ ์์ฑํ์ฌ ๋ค์ ๋ฃจํ๋ฐฑ ์ธํฐํ์ด์ค๋ก ๋ณด๋ ๋๋ค. - ์ด ์ฑ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋
node.js
์ฑ์ด๋ ๊ธฐํ ์ฑ๋ค์ด ๋๊ฒ ์ฃ ?
** 5. ์๋ต ํจํท์ ๋ฃจํ๋ฐฑ ๊ฒฝ๋ก** - ์๋ต ํจํท๋ ๋์ผํ ๊ณผ์ ์ ๊ฑฐ์ณ ๊ฒฐ๊ตญ, ์ต์ข ์ ์ผ๋ก ์์ฒญํ๋ ์ฑ์ธ ๋ก์ปฌ ๋ธ๋ผ์ฐ์ ๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ ๋ฆฌํ์๋ฉด localhost๊ฐ ๊ฐ์ง๋๋ ์๊ฐ ์ธ๋ถ๋ก ๋๊ฐ์ง ์๊ณ ๋ด๋ถ์์ ๋๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๋ค ์ถ์ฒ : https://velog.io/@480/localhost-%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC
์คํ ๊ฒฐ๊ณผ
๊ฐ๊ฐ ๋์ผํ ํ๊ฒฝ์์ ์ด 3ํ์ฉ ์คํํ๊ณ ํ๊ท ์ผ๋ก ํํ (ํฐ ์ฐจ์ด ์์ ํ์ธ)
โป ๋์ค์ ํ๋จ์ ๊ธฐ์ ํ๊ฒ ์ง๋ง UDP์ ๊ฒฝ์ฐ Timeout์ 500ms๋ก ๊ฑธ์
localhost โ localhost ์ํฉ
100,000ํ TCP 42778ms UDP 41806ms 1,000,000ํ TCP 394727ms UDP 406091ms
์๋๊ฐ ๊ต์ฅํ ๋น ๋ฅด๊ธฐ์ ์ฆ๊ฐํญ๋ ๊ต์ฅํ linearํ๋ฉฐ, ์คํ๋ ค TCP๊ฐ ๋ ๋น ๋ฅด๊ฒ ์ธก์ ๋๊ธฐ๋ ํ๋ค. ์ ์๋ฏธํ ์ฐจ์ด๋ ์๋ค๊ณ ๋ณด์ธ๋ค
๋ก์ปฌ ๋ด๋ถ ๋คํธ์ํฌ โ ๋ก์ปฌ ๋ด๋ถ ๋คํธ์ํฌ (๋ฌด์ )
100ํ TCP 1522ms UDP 1565ms 1,000ํ TCP 18205ms UDP 9584ms 10,000ํ TCP 163663ms UDP 21728ms 100,000ํ TCP 1801237ms UDP 90765ms โ ๋ฌด๋ ค 20๋ฐฐ ์ฐจ์ด
๋ชจ๋ฐ์ผ โ ์๋ฒ (์ค์ง ๋ชจ๋ธ)
100 ํ TCP 24680ms UDP 14618ms 1,000 ํ TCP 240775ms UDP 158400ms 10,000 ํ TCP 2457118ms UDP 754998ms
ํจํท ํฌ๊ธฐ์ ์ฐจ์ด
TCP ํจํท 442B UDP ํจํท 321B
ํธ๋ฌ๋ธ์ํ
1. ๋ฉ์๋ ์ดํด ๋ถ์กฑ์ผ๋ก ์ธํ ์ ์ฌ ๋ฐ๋๋ฝ ๋ฐ์
A. TCP์ ๊ฒฝ์ฐ
- socket.accept()์ ๊ฒฝ์ฐ await์ ๋์ผํ๊ฒ connect()๊ฐ ๋ค์ด์ฌ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค
- ์ด๋ฅผ ์ค์๋ก ๋ฌดํ๋ฃจํ ์์ ๋์ด ๋งค ํต์ ๋ง๋ค ๊ธฐ๋ค๋ฆฌ๋ ์ํฉ ์๊น
โป ์ค์ ๋ก ์ฌ๋ฌ ์์ผ ํต์ ์ ์ด์ด์ผํ๋ ๊ฒฝ์ฐ thread๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค
B. UDP์ ๊ฒฝ์ฐ
- ์์ค์ด ๋ฐ์ํ ๊ฒฝ์ฐ, ์ ๋๋ก ๋ณด๋ด์ง์ง ์๋ ๊ฒฝ์ฐ ๊ทธ๋๋ก ์๋๋ฐฉ ์๋ต์ ๋ฆฌ์จํ๋ ์ํฉ์ด ๋์ด๋ฒ๋ฆผ.
- UDP์ ๋จ์ ์ธ ์์ค ๋ฐ์์ ์กฐ์น๋ฅผ ํด์ค(TIMEOUT ์ฒ๋ฆฌ)
2. ์๋ฎฌ๋ ์ดํฐ๋ ๋ก์ปฌํต์ ์ ์ง์ํ์ง ์์ผ๋ฉฐ ์์ฒด ๋ผ์ฐํฐ์ ์ฌ์ฉ ๋ฐ ๊ณ ์ IP๊ฐ ์กด์ฌํ๋ค.
- ์ธ์คํด์ค๋ ๋ผ์ฐํฐ์ ์ํด ๊ฒฉ๋ฆฌ๋๋ฉฐ ๊ฐ์ ๋คํธ์ํฌ์์ ์๋ก๋ฅผ ๊ฐ์งํ ์ ์๋ค.
๊ด๋ จ์๋ฃ : https://developer.android.com/studio/run/emulator-networking?hl=ko
3. Broken pipeline Error
-
TCP ํต์ ์ด ๋๋ฌ๋๋ฐ, ๋๋ ์ด๋ ํ ์ฌ์ ๋ก ์์ผ์ด ๋ซํ๋๋ฐ ํต์ ํ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค ๋ณผ ์ ์์
์๊ธธ ์ ์๋ ๊ฒฝ์ฐ
- ํด๋ผ์ด์ธํธ ๋๋ ์๋ฒ๊ฐ ์์ผ์ ๋ซ์๋๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ ๊ฒฝ์ฐ
- ์๋ฒ์ ํ๋ก์ธ์ค์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ ค ์ฒ๋ฆฌํ ์ ์๋ ์ํฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ ๊ฒฝ์ฐ
- etc..
4. ํฌํธํฌ์๋ฉ ์ด์
- ์ง ๊ณต์ ๊ธฐ ํ๊ฒฝ์ด ๋ค์ ๋ณต์กํ๋ฐ, ๋ฌด์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค์์ ํฌํธํฌ์๋ฉ์ ์ด์๊ฐ ์์ด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ์
- ์ด๊ด ํ๋ธ, ๋ฐฉ ๋ด์ Wi-Fi ๊ณต์ ๊ธฐ ํฌํธํฌ์๋ฉ ์๋ฃํ์ฌ ํด๊ฒฐํ์๋ค
์ ์ฌํ ์ํฉ์์ ๊ผญ ๋ณธ์ธ์ ๋คํธ์ํฌ ํ๊ฒฝ์ ์ ํ์ ํ๊ณ ํด๊ฒฐํด์ผ ์ค๋ ๋งํ์ง ์์ ๊ฒ์ด๋ค.
๊ฒฐ๋ก
์ ์ก์๋๊ฐ ์ ์ ๋๋ ค์ง์๋ก, RTT๊ฐ ๊ธธ์ด์ง ์๋ก TCP์ UDP ๊ฐ์ ์๋ ์ฐจ์ด๊ฐ ์ ์ ๋ฒ์ด์ง๋ค. ์ด ์ฐจ์ด๋ linearํ์ง ์์ผ๋ฉฐ exponential ํ๊ฒ ์ฆ๊ฐํ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
์ถ๊ฐ์ฌํญ
- ๋ฐฐํฐ๋ฆฌ ์ฑ๋ฅ์ ๋ํ ์ ๊ฒ๋ฒ์ ๋ํ ํ์ธ์ด ํ์ํฉ๋๋ค (Android Studio Profiler