컴퓨터 프로그래밍 공부/네트워크 서버 8

IP(Internet Protocol) 열기

으래 컴퓨터를 어려서부터 접한 세대이고,초딩 때 크아나, 바람의 시대 혹은 롤에서 키보드 배틀 좀 떠봤다 싶은 독자들이라면,나보다 나이 좀 많아 보이는 형아들이 너 IP따서 디도스 공격한다.라는 으름장에 맘을 졸여본 적이 있을 것이다.그렇다. 사실 필자의 얘기다. 필자는 막연하게 IP가 뭐냐고 형제에게 물어봤다.필자의 형제는 간단하게 말해서IP란, 인터넷에서 사용하는 가상의 주소라고 답해줬다.우리집에도 주소가 있듯, 컴퓨터에도 주소가 있다는 개념을 그 때 처음 알았다. 초딩 때 나를 발발 떨게했던 IP주소 딴다의 말의IP의 풀네임을 수십년이 흐른 지금에야 알게 되었다.인터넷 프로토콜 (Internet Protocaol)이다. 인터넷 프로토콜 네트워크 계층의 가장 핵심적인 프로토콜 하나를 꼽자면 단연 인터..

LAN을 넘어서는 네트워크 계층의 기능

LAN을 넘어서는 네트워크 계층 여태껏 포스팅한 네트워크의 범위는 일반적으로 LAN에 한정되어 설명하였다. 하지만 LAN을 넘어서 다른 네트워크와 통신하기 위해서는 네트워크 계층의 역할이 필수입니다. 네트워크 계층에서는 IP 주소를 이용해 송수신지 대상을 지정하고, 다른 네트워크에 이르는 경로를 결정하는 라우팅을 통해 다른 네트워크와 통신한다. LAN을 넘어 다른 네트워크와의 통신을 위한 네트워크 계층IP 주소를 통한 송수신지 대상을 지정라우팅을 통한 다른 네트워크와 통신 데이터 링크 계층의 한계물리 계층과 데이터 링크 계층만으로 LAN을 넘어서 통신하기 어려운 두 가지 이유 1. 다른 네트워크까지의 도달 경로를 파악하기 어려움 2. 모든 네트워크에 속한 모든 호스트의 위치를 특정하기 어려움 1. 물리 ..

스위치와 VLAN

전 포스팅 허브 요약  허브는 주소 개념이 없는 물리 계층 장비이다.전달바은 신호를 다른 모든 포트로 보내기만 할 뿐이다.그리고 반이중 모드로 통신하므로 허브에 연결된 모든 호스트가 충돌이 발생할 범위,즉 콜리전 도메인에 속한다.  CSMA/CD를 통해 충돌 문제를 어느 정도 완화할 수 있지만,사실 이보다 더 근본적인 해결 방법이 있다.전달밥은 신호를 수신지 호스트가 연결된 포트로만 보내고,전이중 모드로 통신하면 된다. 그러면 포트별로 콜리전 도메인이 나누어지기에 충돌 위험이 감소할 것이다.CSMA/CD를 이용할 필요도 없어진다.이러한 기능을 지원하는 네트워크 장비가 바로 데이터 링크 계층의 스위치이다.  스위치란? 즉, 스위치란스위치란 데이터 링크 계층의 네트워크 장비이다.2계층에서 사용한다 하여 L2..

허브

허브란?허브는 물리 계층 장비이다. 통신 매체를 통해 송수신되는 메시지는 다른 호스트에게 전달되는 과정에서 네트워크 장비를 거칠 수 있다. 대표적인 네트워크 장비로 물리 계층에는 허브가 있고, 데이터 링크 계층에는 스위치가 있다. 먼저 물리 계층에서 여러 대의 호스트를 연결하는 허브의 특징을 살펴보고, 이와 관련해 허브의 동작 방식인 반이중 모드 통신에 대해 알아보겠다. 아울러 이와 반대되는 개념인 전이중 모드 통신도 함께 학습해보자. 허브에서 발생하는 충돌이라는 문제와 이를 해결하기 위한 CSMA/CD도 학습해보자. 데이터 링크 계층에는 NIC와 스위치가 있다. 스위치는 전이중 통신과 VLAN이란 특징을 가진다. 물리 계층에는 트위스티드 페어 케이블, 광섬유 케이블, 허브 허브는 반이중 통신, CSMA..

물리 계층과 데이터 링크 계층 - 이더넷

물리 계층과 데이터 링크 계층은 통신이 이루어지는가장 근원적인 지점이다.하드웨어가 네트워크를 통해 메시지를 주고받고이해하는 방식은 대부분물리 계층과 데이터 링크 계층에 구현되어 있다.이더넷- 데이터 링크 계층과 물리 계층을 아우르는 기술인 이더넷 물리 계층과 데이터 링크 계층은 서로 밀접하게 연관되어 있다.오늘날의 두 계층은 이더넷이라는 공통된 기술이 사용되기 때문이다. 이더넷은 현대 LAN, 특히 유선 LAN 환경에서 가장 대중적으로 사용되는 기술이다.예를 들어서 두 대의 컴퓨터가 있다고 가정해보겠다.이 컴퓨터끼리 정보를 주고받으려면 가장 먼저 케이블과 같은 통신 매체가 필요하다.그리고 그 통신 매체를 통해 정보를 송수신하는 방법이 정해져 있어야 한다. 이더넷은 다양한 통신 매체의 규격들과 송수신되는 ..

네트워크 미시적으로 살펴보기

이번에 학습한 개념은 크게 세 가지 이다. 통신 과정에서 정보를 올바르게 주고받기 위해 합의된 규칙이나 방법을 의미하는 프로토콜통신이 일어나는 구조를 계층화한 네트워크 참조 모델통신 과정에서 이루어지는 캡슐화(역캡슐화)이다. 프로토콜네트워크에도 언어와 유사한 개념이 바로 프로토콜이다. 언어가 정보를 주고받기 위해 사회적으로 합의돈 의사소통 방식이라면,프로토콜은 노드 간에 정보를 올바르게 주고받기 위해 합의된 규칙이나 방법을 의미한다. 현대 인터넷은 호스트 간 패킷을 교환하는 방식으로 대부분 패킷 교환 방식을 사용한다.패킷은 택배와 유사한 개념으로,  1. 우선 페이로드를 담고2. 도착지 정보인 헤더를 작성하고 첨부3. 네트워크 장비를 통해 발송 과정을 거친다. 즉, 서로 다른 통신 장치들이 정보를 주고받..

네트워크 거시적으로 살펴보기

개발자와 네트워크에 대한 이야기를 조금 해보겠다.개발자가 네트워크를 이해하면 구체적으로 어떤 점에서 유리할까? 개발자의 업무는 크게 두 종류로 나뉜다.하나는 프로그램을 만드는 업무, 다른 하나는 만들어진 프로그램을 유지 보수하는 업무이다.네트워크 지식은 두 가지 업무에 모두 도움을 줄 수 있다. 따라서 채용 시 네트워크에 대한 지식을 강조하거나검증하는 기업이 존재한다. 프로그램을 만드는 업무에서 네트워크 지식을 활용하는 경우 먼저 프로그램을 만드는 업무에서 어떤 경우에 네트워크 지식이 활용될까?프로그래밍 언어나 웹 프레임워크 혹은 라이브러리를 사용할 때 네트워크에 대한배경지식이 있어야만 활용할 수 있는 기능들이 있다. 예를 들어 TCP/UDP와 같은 네트워크에 대한 지식이 없다면스프링 프레임워크의 기능을..

게임 서버 프로그래밍 입문 - (1)

게임 서버의 정의 우선 목적을 명확이 해야지 서버책 한 권이라도 잘 이겨나갈 수 있을 것이다.서버가 어떤 프로그램인지 먼저 생각해보자. 온라인 게임이라 하면, 다수와 접속해서 즐기는 MMORPG 온라인 게임도 있을 것이고,디아블로3 처럼 특정 몇 명만 같이 즐기는 게임도 있다. 이런 프로그램들을 만들고 관리하는 서버 프로그래머들은 어떤 일을 할까? 신규 게임이라면 당연히 게임 서버를 만들지 않을까? 기획자들이 이것저것 새로운 게임에 대한 콘텐츠 기획을 제안할 것이고그것에 맞게 프로그램 구조를 고려해 서버 프로그램을 작성할 것이다. 물론 신생회사가 아니거나, 기존 코드가 엉망인 아닌 이상 기존에 안전성을 검증받은코드를 계승해서 제작하게 될 것이다. 요약하면, 이미 돌아올 수 없는 강(가정을 고려한 코딩)을..