ํฐ์คํ ๋ฆฌ ๋ทฐ
TCP์ UDP๋ ์ ์ก ๊ณ์ธต์์ ํต์ ํ์ฑํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ ๋๋ค.
- TCP : ์ ๋ขฐ์ฑ, ์ฐ๊ฒฐ ์งํฅ์
- UDP : ๋น์ ๋ขฐ์ฑ, ๋น์ฐ๊ฒฐ์ฑ, ์ค์๊ฐ
ํ๋กํ ์ฝ์ด๋?
ํต์ ๊ท์ฝ์ผ๋ก ์ปดํจํฐ ๋ด๋ถ์์, ๋๋ ์ปดํจํฐ ์ฌ์ด์์ ๋ฐ์ดํฐ์ ๊ตํ ๋ฐฉ์์ ์ ์ํ๋ ๊ท์น ์ฒด๊ณ์ ๋๋ค.
TCP๋?
Transmission Control Protocal์ ์ฝ์๋ก ์ง์ญํด๋ณด๋ฉด ์ ์ก ์ ์ด ํ๋กํ ์ฝ๋ก,
์ธํฐ๋ท์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์์ง์ ํํ๋ก ๋ณด๋ด๊ธฐ ์ํด IP์ ํจ๊ป ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก TCP์ IP๋ฅผ ํจ๊ป ์ฌ์ฉ
- IP: ๋ฐ์ดํฐ์ ๋ฐฐ๋ฌ์ ์ฒ๋ฆฌ
- TCP: ํจํท์ ์ถ์ ๋ฐ ๊ด๋ฆฌ
** ํจํท์ด๋?
์ธํฐ๋ท ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ํ ๊ฒฝ๋ก ๋ฐฐ์ (๋ผ์ฐํ )์ ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํด์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฐ์ธ ํจํท์ผ๋ก ๋๋์ด ์ ์กํฉ๋๋ค.
๋ฐ์ดํฐ๋ ํจํท ๋จ์๋ก ๋๋์ด ๊ฐ์ ๋ชฉ์ ์ง(IP๊ณ์ธต)์ผ๋ก ์ ์ก๋ฉ๋๋ค.
์ ๋ขฐ์ฑ์ ๋ณด์ฅ
- TCP๋ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก๊ณผ ์ฐ๊ฒฐํ ์๋น์ค๋ฅผ ์ง์ํ๋ ํ๋กํ ์ฝ๋ก ์ธํฐ๋ท ํ๊ฒฝ์์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ํ๋ฆ ์ ์ด, ํผ์ก ์ ์ด, ์ค๋ฅ ์ ์ด๋ฅผ ํตํด ์ ๋ขฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ์ด๋ฌํ ๊ณผ์ ๋๋ฌธ์ UDP ๋ณด๋ค ์ ์ก ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
TCP ํต์ ๊ณผ์
- ์ฌ์ ์ 3-way handshake๋ผ๋ ๊ณผ์ ์ ํตํด ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ํต์ ์ ์์ํฉ๋๋ค.
- 4-way handshake๊ณผ์ ์ ํตํด ์ฐ๊ฒฐ์ ํด์ (๊ฐ์ ํ์ ๋ฐฉ์)ํฉ๋๋ค.
- TCP๋ ํจํท์ ์ถ์ ํ๋ฉฐ, ๋๋์ด ๋ณด๋ด์ง ๋ฐ์ดํฐ๋ฅผ ๋ชฉ์ ์ง์์ ๋ฐ๊ณ ์ฌ์กฐ๋ฆฝํ ์ ์์ต๋๋ค.
** TCP์ ๊ฐ์ ํ์ ๋ฐฉ์
์ก์ ์ธก๊ณผ ์์ ์ธก์ ์ฐ๊ฒฐํ์ฌ ํจํท์ ์ ์กํ๊ธฐ ์ํ ๋ ผ๋ฆฌ์ ๊ฒฝ๋ก๋ฅผ ๋ฐฐ์ ํ๋ค๋ ๋ป
ํ๋ฆ ์ ์ด
์ก์ ์ธก๊ณผ ์์ ์ธก ์ฌ์ด์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ ์ฐจ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ ๋๋ค.
๋ง์ฝ, ์ก์ ์ธก ์ ์ก๋>์์ ์ธก ์ ์ก๋ ์ด๋ผ๋ฉด, ์ ์ก๋ ํจํท์ ์์ ์ธก ํ๋ฅผ ๋์ด์ ์์ค๋๊ธฐ ๋๋ฌธ์ ์ก์ ์ธก ํจํท ์ ์ก๋์ ์ ์ดํฉ๋๋ค.
1. Stop and Wait
- ๋งค๋ฒ ์ ์กํ ํจํท์ ๋ํ ํ์ธ ์๋ต์ ๋ฐ์์ผ ๋ค์ ํจํท์ ์ ์กํ ์ ์์
- ๋นํจ์จ์ ์ธ ๋จ์ , Give&Take
2. Sliding Window
- Stop and Wait์ ๋นํจ์จ์ฑ ๊ฐ์
- ์์ ์ธก์์ ์ค์ ํ ์๋์ฐ ํฌ๊ธฐ๋งํผ ์ก์ ์ธก์์ ํ์ธ ์๋ต ์์ด ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ์ฌ ๋ฐ์ดํฐ ํ๋ฆ์ ๋์ ์ผ๋ก ์กฐ์
** ์๋์ฐ๋?
์ก์ , ์์ ์คํ ์ด์ ์์ชฝ์์ ๋ง๋ค์ด์ง ๋ฒํผ์ ํฌ๊ธฐ
์ค๋ฅ ์ ์ด
์ค๋ฅ ๊ฒ์ถ๊ณผ ์ฌ์ ์ก์ ํฌํจํฉ๋๋ค.
ARQ๊ธฐ๋ฒ์ ์ฌ์ฉํด ํ๋ ์์ด ์์๋์๊ฑฐ๋ ์์ค๋์์ ๊ฒฝ์ฐ, ์ฌ์ ์ก์ ํตํด ์ค๋ฅ๋ฅผ ๋ณต๊ตฌํฉ๋๋ค.
1. Stop and Wait ARQ
- Stop and Wait์ ์ค๋ฅ์ ์ด
2. Go-Back-n ARQ
- Sliding Window์ ์ค๋ฅ์ ์ด
ํผ์ก ์ ์ด
์ก์ ์ธก์ ๋ฐ์ดํฐ ์ ๋ฌ๊ณผ ๋คํธ์ํฌ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ ๋๋ค.
๋คํธ์ํฌ ํผ์ก์ ํผํ๊ธฐ ์ํด ์ก์ ์ธก์์ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ ์ ์ก ์๋๋ฅผ ์ ์ดํฉ๋๋ค.
1. AIMD
- ์ฒ์์ ํจํท ํ๋๋ฅผ ๋ณด๋ด๋ ๊ฒ์ผ๋ก ์์ํด ์ ์กํ ํจํท์ด ๋ฌธ์ ๊ฐ ์์ด ๋์ฐฉํ๋ค๋ฉด Window Size๋ฅผ 1์ฉ ์ฆ๊ฐ
- ํจํท ์ ์ก์ด ์คํจํ๊ฑฐ๋ TIME_OUT์ด ๋ฐ์ํ๋ฉด Window Size๋ฅผ ์ ๋ฐ ๊ฐ์
2. Slow Start
- AIMD๊ฐ ์ ์ก ์๋๋ฅผ ์ฌ๋ฆฌ๋ ๋ฐ ์ค๋๊ฑธ๋ฆฌ๋ ๋จ์ ์ ๊ทน๋ณต
- AIMD์ฒ๋ผ ์ฒ์์ ํจํท์ ํ๋์ฉ ๋ณด๋ด๋ ๊ฒ๋ถํฐ ์์ํ์ฌ ํจํท์ด ๋ฌธ์ ์์ด ๋์ฐฉํ๋ฉด ๊ฐ๊ฐ์ ACK ํจํท๋ง๋ค Window Size๋ฅผ 1์ฉ ์ฆ๊ฐ
- ํ ์ฃผ๊ธฐ๊ฐ ์ง๋๋ฉด Window Size๋ 2๋ฐฐ๊ฐ ๋จ
- ํผ์ก์ด ๋ฐ์ํ๋ฉด Window Size๋ฅผ 1๋ก ๋จ์ด๋จ๋ฆผ
** ๋คํธ์ํฌ ํผ์ก
ํ ๋ผ์ฐํฐ์๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ชฐ๋ ค ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ, ํธ์คํธ๋ค์ ์ฌ์ ์ก์ ํผ์ก์ผ๋ก ์ค๋ฒํ๋ก์ฐ๋ ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์
TCP ์ฌ์ฉ ์์
- ์น HTTP ํต์ , ์ด๋ฉ์ผ, ํ์ผ ์ ์ก
UDP๋?
User Datagram Protocal์ ์ฝ์๋ก ์ง์ญํด๋ณด๋ฉด ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ทธ๋จ ํ๋กํ ์ฝ๋ก,
๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๊ทธ๋จ ๋จ์๋ก ์ฒ๋ฆฌํ๋ ํ๋กํ ์ฝ์ ๋๋ค.
** ๋ฐ์ดํฐ๊ทธ๋จ๋?
๋ ๋ฆฝ์ ์ธ ๊ด๊ณ๋ฅผ ์ง๋๋ ํจํท์ด๋ผ๋ ๋ป
๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ
- UDP๋ ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ๋ก ์ฌ์ ์ ์ฐ๊ฒฐ ์ค์ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค.
(์ฐ๊ฒฐ์ ์ํด ํ ๋น๋๋ ๋ ผ๋ฆฌ์ ์ธ ๊ฒฝ๋ก๊ฐ ์๋ค๋ ๋ป)
- ํ๋์ ๋ฉ์ธ์ง์์ ๋ถํ ๋ ๊ฐ๊ฐ์ ํจํท์ ์๋ก ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ ์ก๋ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์๋ก ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
- ์ก์ ์ธก์์ ์ ์กํ ํจํท์ ์์์ ์์ ์ธก์์ ๋์ฐฉํ ํจํท์ ์์๊ฐ ๋ค๋ฅผ ์ ์๋ค. (์์๋ถ์ฌX, ์ฌ์กฐ๋ฆฝX)
- ํจํท์ ์์ ๋ถ์ฌ๋ ์ฌ์กฐ๋ฆฝ๋ฑ์ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ์์ฑ์ด ์ค์ํ ์๋น์ค์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ด๋ฌํ ๊ณผ์ ๋๋ฌธ์ ์ ์ก ์๋๊ฐ ๋น ๋ฅด๊ณ ๋คํธ์ํฌ ๋ถํ๊ฐ ์ ์ง๋ง, ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ์ง ๋ชปํฉ๋๋ค.
UDP ์ฌ์ฉ ์์
- ์ฌ์ ์ก์ ํ๋ฉด ์๋๋ ์๋น์ค์ ์ฌ์ฉ
- RTP, Multicast, DNS
TCP์ UDP ๋น๊ต
TCP | UDP | |
์ฐ๊ฒฐ ๋ฐฉ์ | ์ฐ๊ฒฐํ | ๋น์ฐ๊ฒฐํ |
ํจํท ๊ตํ ๋ฐฉ์ | ๊ฐ์ ํ์ | ๋ฐ์ดํฐ๊ทธ๋จ |
์ ์ก ์์ | ๋ณด์ฅ | ๋ณด์ฅX |
์์ ์ฌ๋ถ ํ์ธ | O | X |
ํต์ ๋ฐฉ์ | 1:1 ํต์ | 1:1 , 1:N, N:N ํต์ |
์ ๋ขฐ์ฑ | ๋์ | ๋ฎ์ |
์๋ | ๋๋ฆผ | ๋น ๋ฆ |
https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Network/TCP.md
https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Network/UDP.md
https://livlikwav.github.io/study/tcp-and-udp/
https://mangkyu.tistory.com/15
'CS > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋คํธ์ํฌ] TCP/IP 4๊ณ์ธต (0) | 2022.11.03 |
---|---|
[๋คํธ์ํฌ] ๋์ปค(Docker)๋? (0) | 2022.07.27 |
[๋คํธ์ํฌ] ์ฟ ํค(Cookie), ์ธ์ (Session)์ด๋? (0) | 2022.07.11 |
[๋คํธ์ํฌ] HTTP์ Method์ ์ํ์ฝ๋ (0) | 2022.06.12 |
[๋คํธ์ํฌ] HTTP์ HTTPS (0) | 2022.06.12 |
- Total
- Today
- Yesterday
- ์ด๋ถํ์
- ์นด์นด์ค ์ธํด
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋คํธ์ํฌ
- ๋ฐฑ์ค node.js
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- TDD
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๋์์ธ ํจํด
- ๋ ์์ปฌ ํ๊ฒฝ
- ํ๋กํ ์ฝ
- ์๊ณ ๋ฆฌ์ฆ
- fp
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ์๋ฐ
- map
- git
- Baekjoon
- ์ ์ญ ๋ณ์
- ๋ฐฑ์ค
- ์๋ฐ์คํฌ๋ฆฝํธ
- JavaScript
- http
- ํ๋กํผํฐ
- ํฌํฌ์ธํฐ
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ์ฝ๋ฉํ ์คํธ
- ๋ฐฑ์ค javascript
- ์ด์์ฒด์
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |