๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
์์ผ ํต์ (Socket)_TCP & UDP ๋ณธ๋ฌธ
์์ผ ํต์ (Socket)_TCP & UDP
์ง์ง์ํ์นด 2022. 8. 29. 01:36220829 ์์ฑ
<๋ณธ ๋ธ๋ก๊ทธ๋ wonos, recipes4dev ๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-) >
https://recipes4dev.tistory.com/153
๐ 1. ์์ผ (Socket)
- ๋คํธ์ํฌ ํ๊ฒฝ์ ์ฐ๊ฒฐํ ์ ์๊ฒ ๋ง๋ค์ด์ง ์ฐ๊ฒฐ๋ถ
- ํ๋กํ ์ฝ, ip์ฃผ์, ํฌํธ๋๋ฒ
- ๋จ์ด์ ธ ์๋ ๋ ํธ์คํธ๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๋๊ตฌ = ์ธํฐํ์ด์ค
- ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ๊ตฌ์กฐ์ฒด๋ก ์์ผ์ ํตํด ๋ฐ์ดํฐ ํต๋ก๊ฐ ๋ง๋ค์ด์ง
- ์์ผ์ ์ญํ ์ ๋ฐ๋ผ client ์์ผ, server ์์ผ์ผ๋ก ๊ตฌ๋ถ๋จ
๐ 2. http์ socket์ ์ฐจ์ด์
โถ ๋จ๋ฐฉํฅ ํต์ Http ํต์
- Http ํต์ ์ Client์ ์์ฒญ(Request)์ด ์์ ๋๋ง ์๋ฒ๊ฐ ์๋ต(Response)ํ์ฌ ์ ๋ณด๋ฅผ ์ ์กํ๊ณ ๊ณง๋ฐ๋ก ์ฐ๊ฒฐ์ ์ข ๋ฃ
- Client๊ฐ ์์ฒญ์ ๋ณด๋ด๋ ๊ฒฝ์ฐ์๋ง Server๊ฐ ์๋ตํ๋ ๋จ๋ฐฉํฅ ํต์
- Server๊ฐ Client์๊ฒ ์์ฒญ์ ๋ณด๋ผ ์ ์์
โถ ์๋ฐฉํฅ ํต์ Socket ํต์
- Server์ Client๊ฐ ํน์ Port๋ฅผ ํตํด ์ค์๊ฐ์ผ๋ก ์๋ฐฉํฅ ํต์
- Streaming ์ค๊ณ๋ ์ค์๊ฐ ์ฑํ , ๊ฒ์ ๋ฑ๊ณผ ๊ฐ์ด ์ฆ๊ฐ์ ์ผ๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ
๐ 3. ์์ผ์ ๊ตฌ์กฐ
: ์์ฉํ๋ก๊ทธ๋จ์์ TCP/IP๋ฅผ ์ด์ฉํ๋ ์ฐฝ๊ตฌ ์ญํ
: ๋ ํ๋ก๊ทธ๋จ์ด ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ก ํต์ ์ ์ํํ ์ ์๋๋ก ์์ชฝ์์ ์์ฑ๋๋ ๋งํฌ์ ๋จ์
: ๋ ์์ผ์ด ์ฐ๊ฒฐ๋๋ฉด ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๊ฒ ๋จ
โถ ์๋ฒ
- ํด๋ผ์ด์ธํธ ์์ผ์ ์ฐ๊ฒฐ ์์ฒญ์ ๋๊ธฐํ๊ณ , ์ฐ๊ฒฐ์์ฒญ์ด ์ค๋ฉด ํด๋ผ์ด์ธํธ ์์ผ์ ์์ฑํ์ฌ ํต์ ์ด ๊ฐ๋ฅํ๊ฒ ํจ
- socket() ํจ์๋ฅผ ์ด์ฉํ์ฌ ์์ผ ์์ฑ
- bind() ํจ์๋ก ip์ port ๋ฒํธ ์ค์
- listen() ํจ์๋ก ํด๋ผ์ด์ธํธ์ ์ ๊ทผ ์์ฒญ์ ์์ ๋๊ธฐ์ด์ ๋ง๋ค์ด ๋ช ๊ฐ์ ํด๋ผ์ด์ธํธ๋ฅผ ๋๊ธฐ ์ํฌ์ง ๊ฒฐ์
- accept() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์์ ์ฐ๊ฒฐ์ ๊ธฐ๋ค๋ฆผ
โถ ํด๋ผ์ด์ธํธ
- ์ค์ ๋ก ๋ฐ์ดํฐ ์ก์์ ์ด ์ผ์ด๋๋ ๊ฒ์ ํด๋ผ์ด์ธํธ ์์ผ
- socket() ํจ์๋ก ๊ฐ์ฅ ๋จผ์ ์์ผ์ ์ฐ๋ค
- connect() ํจ์๋ฅผ ์ด์ฉํ์ฌ ํต์ ํ ์๋ฒ์ ip์ port ๋ฒํธ์ ํต์ ์ ์๋
- ํต์ ์๋์, ์๋ฒ๊ฐ accept() ํจ์๋ฅผ ์ด์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ socket descriptor๋ฅผ ๋ฐํ
- ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ read(), write()๋ฅผ ํ๋ฉฐ ํต์ (๋ฐ๋ณต)
- ํต์ ์ด ๋๋๋ฉด close()๋ก ์ ์์ ๋๋๋ค
๐ 4. ์์ผ ์ข ๋ฅ
โถ TCP (Transmissoin Control Protocol) ์คํธ๋ฆผ
- ์๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํธ ์คํธ๋ฆผ์ ์ ์ก (์ฐ๊ฒฐ ์งํฅ์ฑ)
- ์ค๋ฅ ์์ , ์ ์ก ์ฒ๋ฆฌ, ํ๋ฆ์ ์ด ๋ณด์ฅ
- ํ๋ฆ์ ์ด, ๋ณด๋ด๋ ์ธก๊ณผ ๋ฐ๋ ์ธก์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์๋ ์ฐจ์ด๋ฅผ ์กฐ์ ํด์ฃผ๋ ๊ฒ
- ํผ์ก์ ์ด, ๋คํธ์ํฌ ๋ด์ ํจํท ์๊ฐ ๋์น๊ฒ ์ฆ๊ฐํ์ง ์๋๋ก ๋ฐฉ์งํ๋ ๊ฒ
- ์ก์ ๋ ์์์ ๋ฐ๋ผ ์ค๋ณต๋์ง ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ → ์ค๋ฒํค๋ ๋ฐ์
- ์๋์ ๋ฐ์ดํฐ๋ณด๋ค ๋๋์ ๋ฐ์ดํฐ์ ์ ํฉ
- ex. ์น HTTP ํต์ , ์ด๋ฉ์ผ, ํ์ผ์ ์ก
tcp๊ฐ ํ๋ฆ ์ ์ด๋ฅผ ๊ณ์ํ๋ฉด์ ์ฐ๊ฒฐ์ ์ ์ง + ๋ ์ด์ ์ฃผ๊ณ ๋ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ์ฐ๊ฒฐ ๋๊ธฐ => tcp/ip ์ฐ๊ฒฐ ์งํฅ์ฑ ํ๋กํ ์ฝ
โถ UDP (user datagram protocol) ๋ฐ์ดํฐ๊ทธ๋จ
- ๋น์ฐ๊ฒฐํ ์์ผ
- ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ์ ํ์ด ์์
- ํ์คํ๊ฒ ์ ๋ฌ์ด ๋ณด์ฅ๋์ง ์์ → ๋ฐ์ดํฐ๊ฐ ์์ค ๋์ด๋ ์ค๋ฅ ๋ฐ์ ์๋จ
- ์ค์๊ฐ ๋ฉํฐ๋ฏธ๋์ด ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฃผ๋ก ์ฌ์ฉ ex. ์ ํ
ํ๋ฆ ์ ์ด๊ฐ ์์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ์์ ํ๋ ์ชฝ์์ ํ ๋ฒ์ ๋ชจ๋ ๋ฐ์ ์ ์๋๋ก ์ฒ๋ฆฌ => ์ฌ์ฉ์๊ฐ ๋ณด๋ด๋ ๋ฐ์ดํฐ ํจํท ๊ทธ๋๋ก ์๋๋ฐฉ์ด ๋ฐ์ ์ ์๊ฒ ํ๋ ํ๋กํ ์ฝ
โถ TCP & UDP
'๐ฉโ๐ป ์ปดํจํฐ ๊ตฌ์กฐ > About Computer' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Python์ ๋๊ธฐ์ ๋น๋๊ธฐ๋ (0) | 2022.11.22 |
---|---|
javascript์ ๋๊ธฐ์ ๋น๋๊ธฐ๋ (0) | 2022.11.22 |
[๋ฆฌ๋ ์ค]_6_๋ฆฌ๋ ์ค ๊ธฐ์ด ์ฌ์ฉ๋ฒ (0) | 2022.05.08 |
[๋ฆฌ๋ ์ค]_5_๋ฆฌ๋ ์ค ๊ธฐ๋ณธ ๋ช ๋ น์ด (0) | 2022.05.08 |
[๋ฆฌ๋ ์ค]_4_๋ฆฌ๋ ์ค ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ (0) | 2022.03.31 |