์์๋ณผ ๋ด์ฉ
- TCP ํจํท ๊ตฌ์กฐ์ ๋์ ์๋ฆฌ
- TCP ์ฐ๊ฒฐ ์๋ฆฝ ๋ฐ ์ข ๋ฃ ๊ณผ์
- UDP ํจํท ๊ตฌ์กฐ์ ๋์ ์๋ฆฌ
TCP ํต์ ๋จ๊ณ์ ์ธ๊ทธ๋จผํธ ๊ตฌ์กฐ
- TCP ํต์ ์ ์ธ ๋จ๊ณ
- ์ฐ๊ฒฐ ์๋ฆฝ
- ๋ฐ์ดํฐ ์ก์์ โ ์ฌ์ ์ก์ ํตํ ์ค๋ฅ ์ ์ด, ํ๋ฆ ์ ์ด, ํผ์ก ์ ์ด
- ์ฐ๊ฒฐ ์ข ๋ฃ
๋คํธ์ํฌ ์ฐธ์กฐ ๋ชจ๋ธ ๋ณต์ต
MSS์ TCP ์ธ๊ทธ๋จผํธ1 ๊ตฌ์กฐ
MSS (maximum segment size) : TCP๋ก ์ ์กํ ์ ์๋ ์ต๋ ํ์ด๋ก๋ ํฌ๊ธฐ
- MSS ํฌ๊ธฐ ๊ณ ๋ คํ ๋ TCP ํค๋ ํฌ๊ธฐ๋ ์ ์ธ (MTU์์ ์ฐจ์ด)
TCP ์ธ๊ทธ๋จผํธ ํค๋
- ์ก์ ์ง/์์ ์ง ํฌํธ
- ์์ ๋ฒํธ : ์ก์์ ๋๋ ์ธ๊ทธ๋จผํธ์ ์ฌ๋ฐ๋ฅธ ์์๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ์ธ๊ทธ๋จผํธ ๋ฐ์ดํฐ์ ์ฒซ ๋ฐ์ดํธ์ ๋ถ์ฌ๋๋ ๋ฒํธ
- ํ์ธ ์๋ต ๋ฒํธ : ์๋ ํธ์คํธ๊ฐ ๋ณด๋ธ ์ธ๊ทธ๋จผํธ์ ๋ํ ์๋ต์ผ๋ก ๋ค์์ผ๋ก ์์ ํ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ์์ ๋ฒํธ ๋ช ์
- ์ ์ด ๋นํธ : ํ๋๊ทธ ๋นํธ. ํ์ฌ ์ธ๊ทธ๋จผํธ์ ๋ํ ๋ถ๊ฐ ์ ๋ณด ๋ํ๋
- ์๋์ฐ : ์์ ์๋์ฐ2์ ํฌ๊ธฐ
์ ์ด ๋นํธ
- 8๋นํธ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ์๋ฆฌ ๋นํธ๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ์๋ฏธ
- ๋ํ์ ์ธ 3๊ฐ์ ์ ์ด ๋นํธ
- ACK : ์ธ๊ทธ๋จผํธ์ ์น์ธ์ ๋ํ๋ด๊ธฐ ์ํ ๋นํธ
- SYN : ์ฐ๊ฒฐ์ ์๋ฆฝํ๊ธฐ ์ํ ๋นํธ
- FIN : ์ฐ๊ฒฐ์ ์ข ๋ฃํ๊ธฐ ์ํ ๋นํธ
- ๊ฐ ๋นํธ๊ฐ 1๋ก ์ค์ ๋ ๋นํธ๋ฅผ ํด๋น ๋นํธ ์ด๋ฆ์ ๋ถ์ฌ์ โACK ์ธ๊ทธ๋จผํธโ, โSYN ์ธ๊ทธ๋จผํธโ , โFIN ์ธ๊ทธ๋จผํธโ๋ผ๊ณ ํจ
์์ ๋ฒํธ์ ํ์ธ ์๋ต ๋ฒํธ
์์ ๋ฒํธ
-
์ด๊ธฐ ์์ ๋ฒํธ (ISN, Initial Sequence Number) : ์ฐ๊ฒฐ ์๋ฆฝ ๋จ๊ณ, ์ฆ SYN ํ๋๊ทธ๊ฐ 1๋ก ์ค์ ๋ ์ธ๊ทธ๋จผํธ๊ฐ ๊ฐ๋ ๋ฌด์์๋ก ์ค์ ๋ ์์ ๋ฒํธ
-
์ ์ก ๊ณ์ธต์ด ์์ฉ ๊ณ์ธต์ผ๋ก๋ถํฐ 1900 ๋ฐ์ดํธ ํฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ๊ณ ์ด๋ MSS๋ 500๋ฐ์ดํธ๋ผ๊ณ ํ์
- ๊ทธ๋ฌ๋ฉด 500/500/500/400 ๊ฐ์ด 4๊ฐ์ ์ธ๊ทธ๋จผํธ๋ก ์ชผ๊ฐค ์ ์์
- ์ฒซ๋ฒ์งธ ์ธ๊ทธ๋จผํธ๊ฐ โ์ด๊ธฐ ์์ ๋ฒํธ (ISN)โ์ ๋ถ์ฌ๋ฐ๊ณ ๊ทธ ๋ค์ ์ธ๊ทธ๋จผํธ ๋ค์ โ์ด๊ธฐ ์์ ๋ฒํธ + ์ก์ ํ ๋ฐ์ดํธ ์โ ํฌ๊ธฐ์ ์์ ๋ฒํธ๋ฅผ ๊ฐ๊ฒ ๋จ
ํ์ธ ์๋ต ๋ฒํธ
- ์์ ์๊ฐ ๋ค์์ผ๋ก ๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ๊ฐ์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก โ์์ ํ ์์ ๋ฒํธ + 1โ
- ํ์ธ ์๋ต ๋ฒํธ ๊ฐ์ ๋ณด๋ด๊ธฐ ์ํด์๋ ACK ํ๋๊ทธ๋ฅผ 1๋ก ์ค์ ํด์ผ ํจ
- ํธ์คํธ B๊ฐ ํธ์คํธ A๋ก๋ถํฐ ์์ ๋ฒํธ 8000์ธ ์ธ๊ทธ๋จผํธ๋ฅผ ์์
- ํธ์คํธ B๋ ํธ์คํธ ACK๋ฅผ 1๋ก ๋ช ์ํ๊ณ ํ์ธ ์๋ต ๋ฒํธ๋ก 8001์ ๋ช ์ํ ์ธ๊ทธ๋จผํธ ์ ์ก
TCP ์ฐ๊ฒฐ ์๋ฆฝ๊ณผ ์ข ๋ฃ
์ฐ๊ฒฐ ์๋ฆฝ : Three-way handshake
- ํธ์คํธ A, B๊ฐ ์ก์์ ํ๊ธฐ ์ํด์๋ 3๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์ฐ๊ฒฐ์ ์๋ฆฝํด์ผ ํจ
- AโB : SYN ์ธ๊ทธ๋จผํธ ์ก์
- 1๋ก ์ค์ ๋ SYN ๋นํธ + ํธ์คํธ A์ ์ด๊ธฐ ์์ ๋ฒํธ
- Active open ๋จ๊ณ : ์ฐ๊ฒฐ์ ์์ํ๋ค๋ ์๋ฏธ
- BโA : SYN, ACK ์ธ๊ทธ๋จผํธ ์ก์
- 1๋ก ์ค์ ๋ SYN, ACK ๋นํธ + ํธ์คํธ B์ ์ด๊ธฐ ์์ ๋ฒํธ + A๊ฐ ์ ์กํ ์ธ๊ทธ๋จผํธ์ ๋ํ ํ์ธ ์๋ต ๋ฒํธ
- Passive open ๋จ๊ณ : A์ ์์ฒญ์ ํ์ธํ๊ณ ์ฐ๊ฒฐ์ ์์ํ๋ผ๋ ์๋ฏธ
- AโB : ACK ์ธ๊ทธ๋จผํธ ์ก์
- 1๋ก ์ค์ ๋ ACK ๋นํธ + ํธ์คํธ A์ ๋ค์ ์์ ๋ฒํธ + B๊ฐ ์ ์กํ ์ธ๊ทธ๋จผํธ์ ๋ํ ํ์ธ ์๋ต ๋ฒํธ
- AโB : SYN ์ธ๊ทธ๋จผํธ ์ก์
์ฐ๊ฒฐ ์ข ๋ฃ : Four-way handshake
- ๋ ํธ์คํธ๊ฐ ๊ฐ์ ํ ๋ฒ์ฉ FIN, ACK ์ธ๊ทธ๋จผํธ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์ข
๋ฃ
- AโB : FIN ์ธ๊ทธ๋จผํธ ์ก์
- Active close ๋จ๊ณ : ์ฐ๊ฒฐ ๋๋๋ค๋ ์๋ฏธ
- BโA : ACK ์ธ๊ทธ๋จผํธ ์ก์
- A๊ฐ ์ ์กํ ์ธ๊ทธ๋จผํธ์ ๋ํ ํ์ธ ์๋ต ๋ฒํธ
- Passive close ๋จ๊ณ : ํ์ธํ๋ค๋ ์๋ฏธ
- BโA : FIN ์ธ๊ทธ๋จผํธ ์ก์
- ์ด์ ์ฐ๊ฒฐ ๋๋๋ค๋ ์๋ฏธ
- AโB : ACK ์ธ๊ทธ๋จผํธ ์ก์
- B๊ฐ ์ ์กํ ์ธ๊ทธ๋จผํธ์ ๋ํ ํ์ธ ์๋ต ๋ฒํธ
- ํ์ธํ๋ค๋ ์๋ฏธ
- AโB : FIN ์ธ๊ทธ๋จผํธ ์ก์
TCP ์ํ
- Stateful ํ๋กํ ์ฝ : TCP๋ โ์ฐ๊ฒฐํ ํต์ โ๊ณผ โ์ ๋ขฐํ ์ ์๋ ํต์ โ์ ์ ์งํ๊ธฐ ์ํด ๋ค์ํ โ์ํโ ์ ์ง
- ํฌ๊ฒ 3์ข ๋ฅ์ ์ํ๋ก ๋ถ๋ฅ
- ์ํ ํ์ธ :
netstat
in macOS
์ฐ๊ฒฐ์ด ์๋ฆฝ๋์ง ์์ ์ํ
- CLOSED : ์๋ฌด๋ฐ ์ฐ๊ฒฐ ์์
- LISTEN : ์ฐ๊ฒฐ ๋๊ธฐ ์ํ
- ์ผ๋ฐ์ ์ธ Passive open ํธ์คํธ (์๋ฒ)๋ LISTEN ์ํ ์ ์งํ๋ฉฐ SYN ์ธ๊ทธ๋จผํธ ๋๊ธฐ
์ฐ๊ฒฐ ์๋ฆฝ ์ํ
- SYN-SENT : ์กํฐํ ์คํ ํธ์คํธ๊ฐ SYN+ACK ์ธ๊ทธ๋จผํธ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- SYN-RECEIVED : ํจ์๋ธ ์คํ ํธ์คํธ๊ฐ SYN+ACK ์ธ๊ทธ๋จผํธ ๋ณด๋ด๊ณ ACK ์ธ๊ทธ๋จผํธ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- ESTABLISHED : ์ฐ๊ฒฐ ํ๋ฆฝ. ๋ฐ์ดํฐ ์ก์์ ํ ์ ์๋ ์ํ
์ฐ๊ฒฐ ์ข ๋ฃ ์ํ
- FIN-WAIT-1 : FIN ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ ์กํฐ๋ธ ํด๋ก์ฆ ํธ์คํธ ์ํ
- CLOSE-WAIT : ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ ํจ์๋ธ ํด๋ก์ฆ ํธ์คํธ ์ํ
- FIN-WAIT-2 : FIN-WAIT-1 ์ํ์์ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์ ์กํฐ๋ธ ํด๋ก์ฆ ํธ์คํธ ์ํ
- LAST-ACK : CLOSE-WAIT ์ํ์์ FIN ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ด๊ณ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- TIME-WAIT : ๋ง์ง๋ง ACK ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ ๋ค ์กํฐ๋ธ ํด๋ก์ฆ ํธ์คํธ ์ํ
- ์ผ์ ์๊ฐ ์ดํ CLOSED
- ํจ์๋ธ ํด๋ก์ฆ ํธ์คํธ๋ ํด๋น ACK ์ธ๊ทธ๋จผํธ ๋ฐ์ผ๋ฉด CLOSED
- CLOSING : ๋์์ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ ค ํ ๋ ์ ์ด๋๋ ์ํ
- ์์ชฝ ๋ค FIN ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ๊ณ ์๋๋ฐฉ์ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- ACK ์ธ๊ทธ๋จผํธ ์์ ํ๋ฉด ๊ฐ์ TIME-WAIT ๋๊ณ ์ข ๋ฃ
UDP ๋ฐ์ดํฐ๊ทธ๋จ ๊ตฌ์กฐ
-
ํน์ง
- ๋น์ฐ๊ฒฐ์ฑ ํต์ ์ ์ํํ๋ ์ ๋ขฐํ ์ ์๋ ํ๋กํ ์ฝ
- ์ฐ๊ฒฐ ์๋ฆฝ ๋ฐ ํด์ , ์ฌ์ ์ก์ ํตํ ์ค๋ฅ ์ ์ด, ํผ์ก ์ ์ด, ํ๋ฆ ์ ์ด X
- Stateless ํ๋กํ ์ฝ
- ์ ์ ์ค๋ฒํค๋๋ก ํจํท ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ด ์ค์๊ฐ์ฑ ๊ฐ์กฐ๋๋ ์ํฉ์์ ์ฌ์ฉ
-
๊ตฌ์กฐ
- ์ก์ ์ง/์์ ์ง ํฌํธ
- ๊ธธ์ด : ํค๋๋ฅผ ํฌํจํ UDP ๋ฐ์ดํฐ๊ทธ๋จ์ ๋ฐ์ดํธ
- ์ฒดํฌ์ฌ : ๋ฐ์ดํฐ๊ทธ๋จ ์ ์ก ๊ณผ์ ์์ ์ค๋ฅ ๋ฐ์ ๊ฒ์ฌ
- ์์ ์ง๊ฐ ๊ฒ์ฌํ์ ๋ ์ด ํ๋ ๊ฐ์ด ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋ฐ์ดํฐ๊ทธ๋จ ํ๊ธฐ
- ์ ๋ขฐ์ฑ/๋น์ ๋ขฐ์ฑ์ โ์์ ์ง๊น์ง ์ ๋์ฐฉํ๋์งโ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ผ๋ก ์ด๊ฒ๊ณผ๋ ๋ฌด๊ด
-
์ ์ก๋ฐฉ์
- ์์ ์ง์ ํจํท๋ค์ ๋น ๋ฅด๊ฒ ๋์ง๋ ๊ฒ
- ํจํท ์์ค ๋ฐ ์์ ๋ฐ๋ ์ ์์