- ๋ชฉ์ฐจ
- ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ
- ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ์ด ๋ฌด์์ด๋?? -> ์ฆ, ์ผ๋ฐฉ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ๋ง ํจ
- ๊ทธ๋์
TCP
๋ณด๋ค ์๋๊ฐ ๋น ๋ฆ.
UDP
๋ ํ๋ฆ์ ์ด, ์ค๋ฅ์ ์ด ๋๋ ์์๋ ์ธ๊ทธ๋จผํธ์ ์์ ์ ๋ํด ์ฌ์ ์ก์ ํ์ง ์์ต๋๋ค.- ์ด ๋ชจ๋๊ฐ ์ฌ์ฉ์ ํ๋ก์ธ์ค์ ๋ชซ์ด๋ค.
- ์ด๊ฒ ๋ฌด์จ ๋ง์ด๋????
- ์ฆ, ํ์ผ์ด ์ ๋ฌ๋๋ ๊ณผ์ ์์ ์์์ด ๋๊ฑฐ๋ ์ ๋ฌ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์๋
UDP
๋ ์ฑ ์์ง์ง ์์์. - ๋ง์ฝ ์์ฒญ/์๋ต์ด ์์ค๋๋ค๋ฉด, Client๋ ํ์ ์์โฑ ๋๊ณ ๋ค์ ์๋ํ ์ ์์ผ๋ฉด ๋ฉ๋๋ค.
- ์ฆ, ํ์ผ์ด ์ ๋ฌ๋๋ ๊ณผ์ ์์ ์์์ด ๋๊ฑฐ๋ ์ ๋ฌ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์๋
- ์ฝ๋๊ฐ ๊ฐ๋จํ ๋ฟ๋ง ์๋๋ผ
TCP
์ฒ๋ผ ์ด๊ธฐ์ค์ ์์ ์๊ตฌ๋๋ ํ๋กํ ์ฝ๋ณด๋ค ์ ์ ๋ฉ์์ง๐ฉ ๊ฐ ์๊ตฌ๋ฉ๋๋ค. - UDP๋ฅผ ์ฌ์ฉํ ์๋ฅผ ํ๋ ๋ค์๋ฉด,
DNS
๊ฐ ์์ต๋๋ค.DNS
๋ ์ํฉ์ ๋ฐ๋ผ UDP์ TCP๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๊ฐ๋จํ ์ง์ ๋ฐ ์๋ต์๋ UDP๋ฅผ ์ฌ์ฉํฉ๋๋ค.- ์ด๋ค ํธ์คํธ ๋ค์์ IP์ฃผ์๋ฅผ ์ฐพ์์ผํ๋ ํ๋ก๊ทธ๋จ์
DNS
์๋ฒ๋ก ํธ์คํธ ๋ค์์ ํฌํจํ UDP ํจํท์ ๋ณด๋ ๋๋ค. ๊ทธ๋ฌ๋ฉด, ์ด ์๋ฒ๋ ํธ์คํธ์ IP์ฃผ์๋ฅผ ํฌํจํ UDP ํจํท์ผ๋ก ์๋ตํฉ๋๋ค. - ์ฌ์ ์ ์ค์ ์ด ํ์ํ์ง ์์ผ๋ฉฐ ๊ทธ ํ์ ํด์ ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
- ์ด๊ฒ ๋ฌด์จ ๋ง์ผ๊น??? DNS ์๋ฒ๋ ๋ญ์ง??
- DNS : Domain Name Service
- ๋๋ฉ์ธ์ ์ฐ๊ฒฐ๋ ์๋ฒ IP๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ
- ์ด๊ฒ ๋ฌด์จ ๋ง์ผ๊น??? DNS ์๋ฒ๋ ๋ญ์ง??
- Transmission Control Protocol
- ๋๋ถ๋ถ ์ธํฐ๋ท ์์ฉ ๋ถ์ผ๋ค์ ์ ๋ขฐ์ฑ๊ณผ ์์ฐจ์ ์ธ ์ ๋ฌ์ ํ์๋ก ํ์ง๋ง,
UDP
๋ก๋ ๋ง์กฑ์ํฌ ์ ์์ด ํ์ํ ํ๋กํ ์ฝ์ดTCP
์ ๋๋ค.- ์ ๋ขฐ์ฑ์ด ์๋ ์ธํฐ๋ท์ ํตํด ์ข ๋จ ๊ฐ์ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํธ ์คํธ๋ฆผ์ ์ ์กํ๋๋ก ํน๋ณ ์ค๊ณ๋์์ต๋๋ค.
TCP
์๋น์ค๋ ์ก์ ์์ ์์ ์ ๋ณด๋๊ฐ ์์ผ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ข ๋จ์ ์ ์์ฑํจ์ผ๋ก์จ ์ด๋ฃจ์ด์ง๋๋ค.- ๋ชจ๋
TCP
์ฐ๊ฒฐ์ ์ ์ด์ค(full-duplex), ์ ๋์ (point to point) ๋ฐฉ์์ ๋๋ค.- ์ ์ด์ค : ์ ์ก์ด ์๋ฐฉํฅ์ผ๋ก ๋์์ ์ผ์ด๋ ์ ์์์ ์๋ฏธ
- ์ ๋์ : ๊ฐ ์ฐ๊ฒฐ์ด ์ ํํ 2 ๊ฐ์ ์ข ๋จ์ ์ ๊ฐ์ง๊ณ ์์์ ์๋ฏธ
TCP
๋ ๋ฉํฐ์บ์คํ ์ด๋ ๋ธ๋ก๋์บ์คํ ์ ์ง์ํ์ง ์์ต๋๋ค.
- ํน์ง
- Connection oriented
- ์ฐ๊ฒฐ์งํฅํ
- ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ ์ ๋จผ์ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ ์ฐ๊ฒฐ์ ์ฑ๋ฆฝํ ํ ์ ์ก์ ์์ํฉ๋๋ค.
- Bidirectional byte stream
- ์๋ฐฉํฅ ๋ฐ์ดํฐ ํต์
- ๋ฐ์ดํธ ์คํธ๋ฆผ ์ฌ์ฉ
- In-order delivery
- ์ก์ ์๊ฐ ๋ณด๋ธ ์์๋๋ก ์์ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ต๋๋ค.
- ์์๋ฅผ ํ์ํ๊ธฐ ์ํด 32-bit ์ ์ ์๋ฃํ์ ์ฌ์ฉํฉ๋๋ค.
- Reliability through ACK
- ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ๊ณ ์์ ์๋ก๋ถํฐ ACK๋ฅผ ๋ฐ์ง ์์ผ๋ฉด, ์ก์ ์ TCP๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ์กํฉ๋๋ค.
- ๋ฐ๋ผ์ ์ก์ ์ TCP๋ ์์ ์๋ก๋ถํฐ ACK๋ฅผ ๋ฐ์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํฉ๋๋ค. (buffer unacknowledged data)
- Flow control
- ์ก์ ์(TCP)๋ ์์ ์๊ฐ ๋ฐ์ ์ ์๋ ๋งํผ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค.
- Congestion control
- ๋คํธ์ํฌ ์ ์ฒด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด receive window์ ๋ณ๋๋ก congestion window๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Flow control๊ณผ ๋ฌ๋ฆฌ ์ก์ ์๊ฐ ๋จ๋ ์ผ๋ก ๊ตฌํํฉ๋๋ค.
- Connection oriented
TCP
์์ ์ฐ๊ฒฐ ์ค์ (connection establishment)์3-way handshake
๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.- ๊ทธ๋ ๋ค๋ฉด
3-way handshake
๋ ๋ญ๊ณ4-way handshake
๋ ๋ญ์ง???? ์๋๋ฅผ ๋ณผ๊น์??
- ๊ทธ๋ ๋ค๋ฉด
TCP์ 3-way handshake๋ TCP/IPํ๋กํ ์ฝ์ ์ด์ฉํด์ ํต์ ์ ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ ์ ๋ฒ์ ์ ํํ ์ ์ก์ ๋ณด์ฅํ๊ธฐ ์ํด ์๋๋ฐฉ ์ปดํจํฐ์ ์ฌ์ ์ ์ธ์ ์ ์๋ฆฝํ๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค.
- Client -> Server : TCP SYN
- Server -> Client : TCP SYN ACK
- Client -> Server : TCP ACK
SYN : synchronize sequence numbers ACK : acknowledgment
- ์ญํ
- ์์ชฝ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ค๋น๊ฐ ๋์๋ค๋ ๊ฒ์ ๋ณด์ฅํ๊ณ , ์ค์ ๋ก ๋ฐ์ดํฐ ์ ๋ฌ์ด ์์ํ๊ธฐ์ ์ ํ ์ชฝ์์ ๋ค๋ฅธ ์ชฝ์ด ์ค๋น๋์๋ค๋ ๊ฒ์ ์ ์ ์๋๋ก ํฉ๋๋ค.
- ์์ชฝ ๋ชจ๋ ์๋ํธ์ ๋ํ ์ด๊ธฐ ์์ฐจ์ผ๋ จ๋ณํธ๋ฅผ ์ป์ ์ ์๋๋ก ํฉ๋๋ค.
- ๊ณผ์
[STEP 1]
A(ํด๋ผ์ด์ธํธ)๋ B(์๋ฒ)์ ์ ์์ ์์ฒญํ๋ SYN ํจํท
์ ๋ณด๋ธ๋ค. ์ด๋ A(ํด๋ผ์ด์ธํธ)๋ SYN ์ ๋ณด๋ด๊ณ SYN/ACK ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ SYN_SENT ์ํ
๊ฐ ๋๋ ๊ฒ์ด๋ค.
[STEP 2]
B(์๋ฒ)๋ SYN ์์ฒญ
์ ๋ฐ๊ณ A(ํด๋ผ์ด์ธํธ)์๊ฒ ์์ฒญ์ ์๋ฝํ๋ค๋ ACK ์ SYN flag ๊ฐ ์ค์ ๋ ํจํท์ ๋ฐ์กํ๊ณ , A๊ฐ ๋ค์ ACK์ผ๋ก ์๋ตํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค. ์ด๋, B(์๋ฒ)๋ SYN_RECEIVED ์ํ
๊ฐ ๋๋ค.
[STEP 3]
A(ํด๋ผ์ด์ธํธ)๋ B(์๋ฒ)์๊ฒ ACK
์ ๋ณด๋ด๊ณ ์ดํ๋ก๋ถํฐ๋ ์ฐ๊ฒฐ์ด ์ด๋ฃจ์ด์ง๊ณ ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ๊ฒ ๋๋๊ฒ์ด๋ค. ์ด๋์ B(์๋ฒ) ์ํ๊ฐ ESTABLISHED
์ด๋ค.
- ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํต์ ํ๋ ๊ฒ์ด ์ ๋ขฐ์ฑ ์๋ ์ฐ๊ฒฐ์ ๋งบ์ด ์ค๋ค๋
TCP
์3 Way handshake
๋ฐฉ์์ด๋ค.
3-Way handshake๋ TCP์ ์ฐ๊ฒฐ์ ์ด๊ธฐํ ํ ๋ ์ฌ์ฉํ๋ค๋ฉด, 4-Way handshake
๋ ์ธ์
์ ์ข
๋ฃํ๊ธฐ ์ํด ์ํ๋๋ ์ ์ฐจ์
๋๋ค.
- ๊ณผ์
[STEP 1]
ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ฒ ๋ค๋ FIN ํ๋๊ทธ
๋ฅผ ์ ์กํ๋ค.
**[STEP 2] **
์๋ฒ๋ ์ผ๋จ ํ์ธ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์์ ์ ํต์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋๋ฐ ์ด ์ํ๊ฐ TIME_WAIT ์ํ
๋ค.
[STEP 3]
์๋ฒ๊ฐ ํต์ ์ด ๋๋ฌ์ผ๋ฉด ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์๋ค๊ณ ํด๋ผ์ด์ธํธ์๊ฒ FIN ํ๋๊ทธ
๋ฅผ ์ ์กํ๋ค.
[STEP 4]
ํด๋ผ์ด์ธํธ๋ ํ์ธํ๋ค๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค.
- ๊ทธ๋ฐ๋ฐ ๋ง์ฝ
Server์์ FIN์ ์ ์กํ๊ธฐ ์ ์ ์ ์กํ ํจํท์ด Routing ์ง์ฐ์ด๋ ํจํท ์ ์ค๋ก ์ธํ ์ฌ์ ์ก ๋ฑ์ผ๋ก ์ธํด FIN ํจํท๋ณด๋ค ๋ฆ๊ฒ ๋์ฐฉํ๋ ์ํฉ
์ด ๋ฐ์ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?- Client์์ ์ธ์ ์ ์ข ๋ฃ์ํจ ํ ๋ค๋ฆ๊ฒ ๋์ฐฉํ๋ ํจํท์ด ์๋ค๋ฉด ์ด ํจํท์ Drop๋๊ณ ๋ฐ์ดํฐ๋ ์ ์ค๋ ๊ฒ์ ๋๋ค.
- ์ด๋ฌํ ํ์์ ๋๋นํ์ฌ Client๋ Server๋ก๋ถํฐ FIN์ ์์ ํ๋๋ผ๋ ์ผ์ ์๊ฐ(๋ํดํธ 240์ด) ๋์ ์ธ์
์ ๋จ๊ฒจ๋๊ณ ์์ฌ ํจํท์ ๊ธฐ๋ค๋ฆฌ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋๋ฐ ์ด ๊ณผ์ ์
TIME_WAIT
๋ผ๊ณ ํฉ๋๋ค.
Reference