대한민국을 IT강국이라고 부릅니다.
외국 여행을 하면 크게 실감하는데
와이파이가 안 된다거나
인터넷 속도가 속터지거나 등등
여러모로 한국 IT서비스가 대단하다는 걸 다시끔 느낍니다.
그런데 여러분은, 네트워크에 대해서 얼마나 알고 계신가요?
오늘은 쉽게 간단하게
네트워크의 기본적인 것 몇가지만 집어보겠습니다.
네트워크를 이해하는게 가장 먼저
이더넷이 뭔지 알아야합니다.
"인터넷이겠죠, 오타 수정좀요"
아니요. 이.더.넷 입니다.
영어로는 Ehternet이고요.
발음이 비슷하고 한글로도 비슷해보여서 헷갈리실 겁니다.
네트워크가 이뤄질려면
컴퓨터들끼리 서로 연결되어있어야합니다.
지금이야 무선인터넷이 보편화되어있지만
예전에는 유선으로 선을 꼳아 쓰는 것이 일반적이었습니다.
그 중에 LAN,WAN을 사용했고
거기서 가장 많이 사용되는 규격이 바로 이더넷입니다.
이더넷에 대해서 머리가 아프시다고요?
그럼 딱 간단하게
통신할 때 서로간의 약속이라고 이해하자고요.
각 컴퓨터를 연결하는 동안에 라우터를 만나고
컴퓨터의 어떤 포트를 들어가서 연결하는데
이걸 어떤 식으로 연결할지에 대한 약속이라고 쉽게 넘어갈게요.
(자세히 알고싶으신 분들은 아래 첨부한 링크를 활용해주세요)
https://bentist.tistory.com/33
이제 연결을 했으니
데이터를 전송해야겠죠?
데이터 전송방식은
TCP와 UDP로 나뉩니다.
둘의 차이는 데이터 전송에 신뢰성을 보장하느냐입니다.
쉽게 말해, TCP는 전송한 후 "나 잘 받았다"라는 대답을 듣고
UDP는 전송만 하고 확인하지 않습니다.
그림을 보면 TCP쪽은 정확하게 물을 마시지만
UDP쪽은 물을 맞고 있습니다.
TCP같은 경우에는 연결 후 "hand Shake"라는 과정을 통해
서로 연결이 잘 되어있는지 확인하는 과정을 거칩니다.
일반적으로 TCP는 신뢰성 보장을 하기 떄문에
더 좋은 통신방식이다 라는 인식이있는데
UDP방식도 생각보다 많이 쓰입니다.
여러분들이 많이 이용하시는 유튜브도 UDP방식으로 통신합니다.
워낙에 데이터가 많아졌고 통신기술이 좋아져서
굳이 잘받았는지 확인하지 않아도 되고
워낙의 많은 영상들을 내보내야하기 때문에
다량의 정보들을 "뿌려내는"UDP방식을 활용합니다.
이밖에도 광고같은 "일단 많이 뿌리는"게 좋은 곳에 많이 활용됩니다.
다음으로 살펴볼 것은 OSI7계층입니다.
통신쪽 공부를 하신 분들이라면 지겹게 봤을 그림입니다.
하나하나 외운다기보다는
각각의 layer에서 어떤 역할이 이뤄지는지 이해하기에 좋습니다.
물리적으로 통신은 두 회로를 연결해
전류,전압을 주는 행위를 의미합니다.
그런데 사람이 직접 컴퓨터 회로에 전류를 바꿔준다면
롤 한판도 절대 못돌립니다.
그래서 프로그램적으로 application layer부터 통신프로토콜을 활용해
물리단계인 physical Layer까지 통신을 이룬다고 이해하시면 됩니다.
우리가 요청하는 쪽을 클라이언트
데이터를 처리하고 응답하는 쪽을 서버라고 합니다.
여러분이 게임을 한다면
여러분이 보고있는 게임화면이 클라이언트
그 데이터를 처리하는 것이 서버입니다.
클라이언트와 서버의 연결상태는 "stateless",
즉, 무상태라고 합니다.
여러분이 게임에 로그인을 했다하면
서버는 "로그인했다"라는 응답을 보내고
서버에 여러분이 로그인했다는 걸 까먹습니다.
만약에 서버에 일일이
"누구누구가 로그인을 했다"라는 걸 저장한다면
서버가 과부하가 되어 특이점이 올 것입니다.
그렇다면 누가 로그인을 어떻게 했는지 어떻게 알아?
그걸 표시하기 위해서
데이터를 주고 받을 때 표시를 해줍니다.
위의 그림은 일반적으로 통신할 때 주고받는
JSON데이터입니다.
일반적으로 header부분에 쿠키,토큰 등을 저장하여
"로그인을 했다"라는 걸 알려줍니다.
이 토큰은 기간이 지나면 만료가 되어
시간이 지나면 알아서 로그아웃이 됩니다.
혹시나 다른 사람이 해킹으로 정보를 빼와도
서버에서 한번 ID와 일치여부를 보기 때문에
해킹에 빠질 위험도 적습니다.
비트연산자는 왜 사용해야하는걸까? (0) | 2023.08.16 |
---|---|
파일시스템은 왜 쓰는 걸까? 파일시스템과 DB의 관계는?? (0) | 2023.08.02 |
git은 왜 쓰는 걸까?? (0) | 2023.07.29 |
비동기식 프로그래밍이 필요한 이유 (0) | 2023.07.25 |
프로세스 관리는 어떻게 이뤄질까? (0) | 2023.07.21 |
댓글 영역