-
[ TIL 220927 ]Today I Learned 2022. 9. 28. 09:38
๐ ๋ฐ์ดํฐ ํต์
01. ๋คํธ์ํฌ ๊ด๋ จ ๊ธฐ์ด ์ฉ์ด
- ์๋ก์ด ๊ธฐ์ ์ ์ฉ์ด ๋ถ์ฌํ ๋๋ ๋ณดํต ์๋ฏธ๊ฐ ๊ฐ์ฅ ์ ์ฌํ ๊ธฐ์กด ๋จ์ด ์ฌํ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ ์๋ฏธ ํ ๋๋ก ์ดํดํ๋ ค๋ ๊ฒฝํฅ์ ๊ฒฝ๊ณํ ๊ฒ
- ๋คํธ์ํฌ network : ์ ์ก๋งค์ฒด๋ก ์๋ก ์ฐ๊ฒฐํด ๋ฐ์ดํฐ๋ฅผ ์๋ก ๊ตํํ๋ ์์คํ ์ ๋ชจ์์ด๋ค. ํต์ ์ฉ ๋งค์ฒด๋ฅผ ๊ณต์ ํ๋ ์ฌ๋ฌ ์์คํ ์ด ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ด๋ค์ ํ๋์ ๋จ์๋ก ํต์นญํ์ฌ ๋คํธ์ํฌ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ผ๋ฐ์ ์ธ ์ปดํจํฐ ๋คํธ์ํฌ์์๋ ๋ฌผ๋ฆฌ์ ์ธ ํต์ ๋งค์ฒด๋ก ์ฐ๊ฒฐ๋ ์ปดํจํฐ ๊ฐ์ ๋์ผํ ํ๋กํ ์ฝ์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. ์๊ท๋ชจ ๋คํธ์ํฌ๊ฐ ๋ชจ์ฌ ๋ ํฐ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ ์ ์๋๋ฐ, ๋คํธ์ํฌ๋ผ๋ฆฌ๋ ๋ผ์ฐํฐ Router ๋ผ๋ ์ค๊ฐ ์ฅ๋น๋ฅผ ์ฌ์ฉํด ์ฐ๊ฒฐํ๋ค.
- ์ธํฐํ์ด์ค interface : ์์คํ ๊ณผ ์์คํ ์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ํ์คํ๋ ์ ๊ทผ ๋ฐฉ๋ฒ์ผ๋ก, ์์คํ ๊ณผ ์ ์ก๋งค์ฒด์ ์ฐ๊ฒฐ ์ง์ ์ ๋ํ ๊ท๊ฒฉ์ด๋ค. ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด ์ฐ๊ฒฐํ๋ ์์คํ ์ ๋ฅ๋ ฅ๊ณผ ๊ถํ์ด ๊ฐ์ ๊ฒฝ์ฐ๋ ์์ง๋ง ์๋น์ค๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ํ๊ด๊ณ์ผ ์๋ ์๋ค.
- ํ๋กํ ์ฝ protocol : ์ํธ ์ฐ๋๋๋ ์์คํ ์ด ์ ์ก๋งค์ฒด๋ฅผ ํตํด ๋ฐ์ดํฐ ๊ตํํ ๋ ์์์ ํต์ ๊ท์น์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ๋กํ ์ฝ์ ์ฃผ์ข ๊ด๊ณ๊ฐ ์๋ ๋๋ฑํ ์์น์ ์๋ ์์คํ ์ฌ์ด์ ๊ท์น์ด๋ผ๋ ์ธก๋ฉด์ด ๊ฐ์กฐ๋์ด ์ธํฐํ์ด์ค์ ๊ตฌ๋ถ๋๋ค. ์ธํฐํ์ด์ค๋ ๋ ์์คํ ์ด ์ฐ๋ํ๊ธฐ ์ํ ํน์ ํ ์ ์ด ์ง์ (Access Point)์ ์๋ฏธํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ํ๋กํ ์ฝ์ ์ฃผ๊ณ ๋ฐ๋ ์ ๋ณด์ ํ์๊ณผ ๊ทธ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ผ๋ จ์ ์ ์ฐจ์ ์์์ ๋ฌด๊ฒ๋ฅผ ๋๋ค. ํ๋กํ ์ฝ์ด ๊ท์ ํ๋ ๋ด์ฉ์๋ ์ก์ ์์ ์์ ์์ ๋ํ ์ ๋ณด, ๋ฐ์ดํฐ ํ์, ์ก์ , ์์ ์ ์ ์ฐจ ๋ฑ์ด ํฌํจ๋์ด ์๋ค. ํ๋กํ ์ฝ์ ๊ทธ ์ญํ ์ ๋ฐ๋ผ ๋ฌผ๋ฆฌ์ธต, ๋คํธ์ํฌ์ธต ๋ฑ์ ๊ณ์ธต์ผ๋ก ๋๋์ด ์๋ค. ์์ ๊ณ์ธต์ ํ์ ๊ณ์ธต์ ๋ฐ์ดํฐ์ ์ก์ ์ ์๋ขฐํ๊ณ , ํ์ ๊ณ์ธต์ ์์ ๊ณ์ธต์ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฑด๋ค๋ ์์ผ๋ก ๋ถ์ ์ ํ๋ค.
- ํ์คํ standardization ( ์ธํฐํ์ด์ค์ ํ๋กํ ์ฝ ์ฐ๋ํ์์ ๋์ผ )
: ์๋ก ๋ค๋ฅธ ์์คํ ์ด ์ํธ ์ฐ๋ํด ํต์ผ์ด ํ์ํ๋ฐ ์ด ํต์ผ์ ํ์คํ๋ผ๊ณ ํ๋ค.
- ์์คํ System : ๋ด๋ถ ๊ท์น์ ๋ฐ๋ผ ๋ฅ๋์ ์ผ๋ก ๋์ํ๋ ๋์, ์ฒด์
์๋์ฐจ, ์ปดํจํฐ ๊ฐ์ ๋ฌผ๋ฆฌ์ ๋์๋ฟ ์๋๋ผ ๊ตํต ์์คํ , ์ด์์ฒด์ , ํ๋ก๊ทธ๋จ ์คํ์ํ ์๋ฏธํ๋ ํ๋ก์ธ์ค ๊ฐ์ ๋ ผ๋ฆฌ์ ์ธ ๋์๋ ์์คํ
- ์ ์ก ๋งค์ฒด : ์์คํ ๋ผ๋ฆฌ ์ ํด์ง ์ธํฐํ์ด์ค๋ฅผ ์ฐ๋ํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ค๋ฉด ๊ผญ ํ์ํ ๋ฌผ๋ฆฌ์ ์ธ ์ ์ก์๋จ์ด๋ค.์ฌ๋์ ๋์ผ๋ก ๋ณผ ์ ์๋ ๋์ถ ์ผ์ด๋ธ์ ํฌํจํ์ฌ ์๋ฆฌ๋ฅผ ์ ํํ๋ ๊ณต๊ธฐ, ๋ฌด์ ์ ํธ ๋ฑ ๋ค์ํ๋ค. ์ธํฐํ์ด์ค๋ ์์คํ ๊ฐ์ ์ฐ๋์ ์ํ ๋ ผ๋ฆฌ์ ์ธ ๊ท๊ฒฉ์ด๊ณ , ์ธํฐํ์ด์ค์์ ์ ํด์ง ๊ท์น์ ๋งค์ฒด๋ฅผ ํตํด ์ ์ก๋จ์ผ๋ก์จ ๊ตฌํ๋๊ณ ๋์ํ๋ค๊ณ ๋ณผ ์ ์๋ค.
- ์ธํฐ๋ท : ์ธํฐ๋ท์ ์ ์ธ๊ณ์ ๋คํธ์ํฌ๊ฐ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ๋์ํ๋ ํตํฉ ๋คํธ์ํฌ๋ก, IP(Internet Protocol) ๋ผ๋ ๋คํธ์ํฌ ํ๋กํ ์ฝ ์ฌ์ฉํ๋ ๋คํธ์ํฌ ์งํฉ์ฒด๋ค.
- UDP : ์์ฑ ํตํ๋ ๋์์ ์คํธ๋ฆฌ๋ฐ ๋ฑ ์ค์๊ฐ ํต์ ์ ์ฌ์ฉํ๋ค. ๋ถํ์คํ์ง๋ง ๋น ๋ฅด๋ฉฐ, ํ๋กํ ์ฝ(์ธํฐ๋ท์์ ์ฌ์ฉ๋๊ณ ์๋ ํต์ ์ ์ฐจ)์ ๋ช ์นญ์ด๋ค. TCP์ UDP๋ ์ ํ์ ๊ฐ์ ๊ด๊ณ์ด๋ค. TCP๋ ํต์ ์ํ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๊ฒ์ ํ์ธํ๋ฉด์ ๋ณด๋ด๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ํ์ค์ฑ์ ์์ง๋ง ํต์ ์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. ํํธ UDP๋ ํต์ ์๋์ ์์ ์ ํ์ธํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์ผ๋ก, ์ฐ์์ ์ผ๋ก ๋ณด๋ผ ์ ์์ง๋ง ์๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ค๋ ๋ณด์ฅ์ ์๋ค. UDP๋ ๋น์ฐํ ๋ฃ๊ณ ์์ผ๋ฆฌ๋ผ ์๊ฐํ๋ฉด์ ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค. ๋ถํ์คํ์ง๋ง ๋น ๋ฅด๋ค.
- ๋ ธ๋ : ๋ ธ๋๋ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋ ์์คํ ์ ๊ฐ์ฅ ์ผ๋ฐํํ ์ฉ์ด๋ก, ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ๋ชจ๋ ์์คํ ์ ํต์นญํ๋ค.
- ํธ์คํธ : ์ผ๋ฐ์ ์ผ๋ก ์ปดํจํ ๊ธฐ๋ฅ์ด ์๋ ์์คํ ์ผ๋ก, ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์์ด ์ฌ์ฉ์๊ฐ ๋คํธ์ํฌ์ ์ ์ํ๋ ์ฐฝ๊ตฌ ์ญํ ์ ํ๋ค.
- ํด๋ผ์ด์ธํธ : ํธ์คํธ๋ฅผ ์ธ๋ถํ ๋ ํธ์คํธ ์ฌ์ด์ ์ ๊ณต๋๋ ์๋น์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ก ๋๋๋๋ฐ ํด๋ผ์ด์ธํธ๋ ์๋น์ค๋ฅผ ์์ฒญํ๋ ์์คํ ์ด๋ค. ํธ์คํธ๋ ๋ค์ํ ์๋น์ค๋ฅผ ์๋ก ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์ ์์์ ํธ์คํธ๊ฐ ํ๋๋ก ๊ณ ์ ๋์ง๋ ์๋๋ค. ์ด์ฉํ๋ ์๋น์ค์ ์ข ๋ฅ์ ๋ฐ๋ผ ํด๋ผ์ด์ธํธ๊ฐ ๋ ์๋ ์๊ณ , ์๋ฒ๊ฐ ๋ ์๋ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํน์ ์๋น์ค ๊ธฐ์ค์ผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ผ๋ ์๋์ ์ฉ์ด๋ก ๊ตฌ๋ถํ๋ค.
- ์๋ฒ : ์๋ฒ๋ ์๋น๋ฅด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํธ์คํธ๋ค์ ๊ด๊ณ์์ ํน์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์์คํ ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ณด๋ค ๋จผ์ ์คํ์ํ๊ฐ ๋์ด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋๊ธฐํด์ผํ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ํ ์ข ๋ฃํ์ง ์์ผ๋ฉด์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์์๋๋ง๋ค ์๋น์ค๋ฅผ ๋ฐ๋ณตํด์ ์ ๊ณตํด์ผํ๋ค.
๐ ์ ๋ํฐ// Bullet using System.Collections; using System.Collections.Generic; using UnityEngine; public class Bullet : MonoBehaviour { public float speed = 8f; // ํ์ ์ด๋ ์๋ ฅ private Rigidbody bulletRigidbody; // ์ด๋์ ์ฌ์ฉํ ๋ฆฌ์ง๋๋ฐ๋ ์ปดํฌ๋ํธ void Start() { // ๊ฒ์ ์ค๋ธ์ ํธ์์ Rigidbody ์ปดํฌ๋ํธ๋ฅผ ์ฐพ์ bulletRigidbody์ ํ ๋น bulletRigidbody = GetComponent<Rigidbody>(); // ๋ฆฌ์ง๋ ๋ฐ๋์ ์๋ = ์์ชฝ ๋ฐฉํฅ (z๋ฐฉํฅ) * ์ด๋ ์๋ ฅ bulletRigidbody.velocity = transform.forward*speed; } //ํธ๋ฆฌ๊ฑฐ ์ถฉ๋ ์ ์๋์ผ๋ก ์คํ๋๋ ๋ฉ์๋ void OnTriggerEnter(Collider other){ //์ถฉ๋ํ ์๋๋ฐฉ ๊ฒ์ ์ค๋ธ์ ํธ๊ฐ Player ํ๊ทธ ๊ฐ์ง ๊ฒฝ์ฐ if(other.tag == "Player") { //์๋๋ฐฉ ๊ฒ์ ์ค๋ธ์ ํธ์์ PlayerController ์ปดํฌ๋ํธ ๊ฐ์ ธ์ค๊ธฐ PlayerController playerController = other.GetComponent<PlayerController>(); //์๋๋ฐฉ์ผ๋ก๋ถํฐ PlayerController ์ปดํฌ๋ํธ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฑ๊ณตํ๋ค๋ฉด if ( playerController!=null) { //์๋๋ฐฉ PlayerController ์ปดํฌ๋ํธ์ Die()๋ฉ์๋ ์คํ playerController.Die(); } } } // Update is called once per frame void Update() { } }
- ํ๋ฆฌํน : ์ธ์ ๋ ์ง ์ฌ์ฌ์ฉํ ์ ์๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ๊ฒ์ ์ค๋ธ์ ํธ ์์ ( ํ์ผ )
ํด๋น ๊ฒ์ ์ค๋ธ์ ํธ๋ฅผ hierarchy ์ฐฝ์์ project ์ฐฝ์ผ๋ก ๋๋๊ทธ & ๋๋กญ
'Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ TIL 221028 ] (0) 2022.11.20 [ TIL - 220928 ] (0) 2022.09.29 [ TIL 220922 ] THU (0) 2022.09.24 [ TIL 220921 ] (1) 2022.09.22 [ TIL 220920 ] (1) 2022.09.21