[바미] OSI 7계층에 대해
·
Networking
안녕하세요. 많은 분들이 의외로 OSI 7계층에 대해 이해를 못하고 있는 것을 확인하게 되었고, 때 마침 제 블로그엔 OSI 7계층에 대해 다루는 글이 없어 (있는 줄 알았습니다.) 겸사겸사 개발 커뮤니티나, 후배들에게 OSI7계층에 대해 설명한 걸 포스팅하면 좋을 것 같아 이번 기회에 초보자 입장에서 쉽게 게 설명해볼까 합니다. 저는 무언가를 설명할 때 비유로 설명하는 데 입문자 입장에서 봤을 때 쉽게 이해되도록 쓴 것이기 때문에 혹여나 비유가 적절하지 않거나 설명이 부적절한 경우 댓글로 말씀해주시면 감사하겠습니다.OSI 7계층?OSI (Open Systems Interconnection) 7계층 모델은 네트워크 통신을 계층별로 나누어 설명하는 모델입니다.이를 통해 복잡한 네트워크 통신 과정을 단순하게..
[바미] HTTP status code
·
Networking
HTTP에서 클라이언트 요청에 대한 서버의 응답 코드에 관한 포스팅 입니다. HTTP 상태 코드란? 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로, 상태 코드에 따라 요청의 성공/실패 여부를 판단합니다. HTTP 상태 코드 분류 상태 코드의 첫 번째 숫자에 따라 크게 5가지로 분류 됩니다. 1xx (Informational) : 조건부 응답 2xx (Successful) : 성공 3xx (Redirection) : 리다이렉션 완료 4xx (Client Error) : 요청 오류 5xx (Server Error) : 서버 오류 HTTP 상태 코드 상세 자주 사용되는 HTTP 상태 코드 위주로 정리하였습니다. 모든 HTTP 상태 코드를 알고 싶다면, MDN이나 위키백과를 참고해 주세요. 1xx ..
[바미] 쿠키, 세션이란?
·
Networking
웹의 기초중 하나인 쿠키와 세션에 대해 알아봅니다.쿠키와 세션에 대해 알아보기전, HTTP의 특징을 알아보고 쿠키와 세션이 필요한 이유를 알아봅시다.HTTP의 특징 HTTP 통신의 특징은 Connectionless와 Stateless라고 할 수 있습니다.Connectionless(비 연결지향) 클라이언트에서 서버에 요청을 보내면 서버는 클라이언트에 응답을 하고 접속을 끊는 특성이 있습니다. (HTTP1.1에서 Connection 헤더에 keep-alive라고 설정하면 컨넥션을 유지할 수 있습니다)Stateless(상태 정보 유지 안함) HTTP 통신은 요청을 응답하고 접속을 끊기 때문에 클라이언트의 상태정보를 알 수 없습니다. 이를 Stateless하다고 합니다.만약 로그인을 하고 그 상태를 유지한 채로..
[바미] 3 - Way Handshake 와 4 - Way Handshake를 알아봅시다.
·
Networking
안녕하세요. TCP의 3-Way Handshake 와 4-Way Handshake에 대해 알아보기 전에, 우선 아래의 내용에 대해 알아보도록 하겠습니다. Transport Layer OSI 7 레이어에서 Transport Layer에는 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해줍니다. 전송 계층은 인터넷의 기반인 TCP/IP 참조 모델과 일반적인 네트워크 모델인 개방형 시스템 간 상호 접속 (Open Systems Interconnection, OSI) 모두 포함하고 있죠. 전송 프로토콜 중 잘 알려진 것이 바로 TCP와 UDP입니다. Transport Layer VS Network L..
[바미] RTMP(Real Time Messge Protocol)란?
·
Networking
RTMP?RTMP(Real Time Message Protocol)이란 어도비 회사에서 독점 프로토콜로 비디오나 오디오등을 인터넷 상에서 실시간으로 스트리밍 데이터를 전송해서 불특정 다수들이 받아 볼 수 있도록 하는 기술의 규격을 말합니다.RTMP는 기본 1935포트를 사용하지만 통신에 실패하면 RTMPS(434)나 RTMPT(80)포트를 사용하여 통신하도록 시도합니다. RTMP 패킷 구조RTMP의 패킷 구조는 아래와 같습니다.위 이미지를 통해 RTMP 규격을 거쳐 다른 기기에 전송 되는 구조 라는 것을 알 수 있습니다.대부분 실시간 방송 서비스는 RTMP를 이용해서 스트리밍하게 됩니다. RTMP를 사용하는 서비스대부분이 알고 계시는 방송 플랫폼이 RTMP를 사용하고 있습니다.피드백프로토콜프로그램최대 프..
[바미] WebRTC, STUN서버, TURN서버에 대해
·
Networking
오늘은 WebRTC, STUN서버, TURN서버에 대해서 포스팅하겠습니다.WebRTCWebRTC란 웹 브라우저간에 플러그인의 도움 없이 서로 통신할 수 있도록 설계된 API를 말합니다. 대표적으로 사용하는 회사는 Discord가 있죠.일반적인 통신은 이런 식으로 서버를 거쳐서 클라이언트에 전송하는 방식을 사용합니다.하지만 WebRTC의 기본적인 통신과정은 다음과 같습니다.  대략 이런 식으로 작동한다. 본래 첫 태생 자체는 P2P를 위한 통신방식 입니다. 그러나 아무래도 WebSocket을 이용하기 때문에 직접적으로 IP를 연결하는 방식을 차용하여 방화벽이 존재하거나 허브를(또는 라우터를) 사용하는 NAT환경에서는 연결이 불가능합니다. NAT환경이란 간단하게 말하자면 Wifi 환경과 같이 퍼블릭 IP가 ..
[바미] MMORPG 서버 구조에 대해 알아보자.(完)
·
Networking
지난번에 싱글프로세스 vs 멀티프로세스를 했었는데 이번에는 싱글 쓰레드 vs 멀티 쓰레드 를 다뤄보겠습니다. 싱글 쓰레드는 하나의 프로세스에 Work Thread가 하나인 경우를 말하고, 멀티 쓰레드는 하나의 프로세스에 Work Thread가 여러개인 경우를 말합니다. 싱글 프로세스이면서 멀티 쓰레드를 쓸 수 있고, 멀티 프로세스이면서 싱글 쓰레드를 쓸 수 있고, 멀티 프로세스이면서 멀티 쓰레드를 쓸 수 있습니다. 싱글 프로세스이면서 싱글 쓰레드를 쓸 수 있지만 현재 시점에선 공짜점심이 끝난 상황에서 싱글 프로세스로 가려면 서버 머신이 좋아야 하는데 이미 서버 클럭수는 한계에 부딫혔기 떄문에 클럭 수가 더 늘어나기에는 기대하기 힘들고, 코어 수만 늘어나고 있고, 16개 코어까지도 가능한데 이 코어들의 성..
[바미] MMORPG 서버 구조에 대해 알아보자.(2)(싱글프로세스 vs 멀티프로세스)
·
Networking
저번에 이어서 싱글프로세스 구조와 멀티 프로세스 구조의 차이에 대해 좀 더 알아보도록 하겠습니다. 싱글 프로세스 구조를 알아봅시다. 싱글프로세스 구조는 프로세스가 하나 즉 프로그램 하나가 돌아가는 걸 의미하는데 이게 개념적으로 이렇다는 얘기지 꼭 싱글 프로세스 구조라고 해서 프로그램이 무조건 하나다. 라고 볼 수는 없습니다. 단순히 봐서 싱글 프로세스 구조면 게임서버 하나다. 라고 보면 됩니다. 하나의 게임 서버로 어떤 서비스가 게임이 서비스 된다라고 봤을 때 이걸 싱글 프로세스라고 보면 됩니다. 예를 들어 봅시다. WOW라는 게임이 있는데 WOW의 월드가 여러가지가 있는데 각 월드가 하나의 프로세서로 돌아간다면 싱글 프로세스로 볼 수 있고, 여러 게임 프로세스들이 하나의 월드를 구성한다면 멀티 프로세스..
[바미] MMORPG 서버 구조에 대해 알아보자! (1)
·
Networking
MMORPG서버 구조에 대해 알아보기 전에 MMOPRG에서는 어떤 요구사항이 있기 때문에 이런 서버 구조가 필요한지 부터 알아보도록 하겠습니다. MMORPG의 서버쪽에서 가장 큰 문제점은 유저가 많다는 점입니다. 이 말은 동시 접속자 수가 많다는 이야기고, 서버가 감당해야 될 작업량이 많다는 것이죠. 그래서 작업량의 기준을 보면 게임에서는 Actor라고 보면 되는데요. 예를 들면 Player, NPC(몬스터 포함) 그리고 컨트롤 존(Control Zone)이라고 해서 조종되는 영역을 의미하는건데 예를 들면 이런 것이죠. 필드에 독이 깔려있을 때 Player나 NPC가 그 영역에 들어가면 도트 데미지를 받는 것인데 도트 데미지를 어떻게 주는지, 독 우물이라는 Actor가 있고, 그 독 우물이 매번 다른 A..
Bami