TCP/IP 스택 - 물리~네트워크

Byeonggwan Kang·2021년 8월 30일
0
post-thumbnail

TCP/IP 5계층

이 책에서는 게임 개발을 중점적으로 다루기 위해 네트워크 통신이 일어나는 과정을 5개의 계층으로 설명합니다.

TCP/IP 5계층에는 하드웨어로부터의 데이터 흐름 순으로 물리, 링크, 네트워크, 전송, 응용 계층이 있다.

저는 이 책에서 소개하는 내용을 제 방식대로 정리해보겠습니다.



물리 계층

물리 계층은 물리적인 연결에 필요한 계층입니다. 이 말은 즉슨 컴퓨터라기보단, 전자기학적으로 이루어진 계층이라는 뜻입니다. 랜선과 각종 케이블, 5GHz 전파등이 이에 속합니다.



링크 계층

링크 계층은 정보를 올바르게 송수신하기 위해 필요한 물리 계층에 가장 가까운 컴퓨터적 요소를 담당합니다. 데이터의 포맷, 길이, 보내는 곳, 받는 곳, 그리고 데이터를 물리 계층이 어떻게 변환할 것인지 등등이 필요합니다. 이더넷, 4G 등이 이에 속합니다.

링크 계층을 설명할때 중요한 것들 중 하나는 MAC 주소입니다.

MAC 주소

MAC 주소란 링크 계층에서 통신에 필요한 고유 식별자이다. 원칙적으로는 네트워크 장비마다 다른 값을 가지고 있다.

얼핏 본다면 링크 계층 만으로도 충분히 멀리 있는 컴퓨터들과 통신할 수 있는 것처럼 보입니다. 하지만 여기에는 몇 가지 문제가 따릅니다.

  1. MAC 주소는 네트워크 장비마다 있는 고유 식별자이기 때문에 서버 하나가 교체되면 모든 사용자가 교체된 MAC 주소를 알아내야만 합니다.
  2. 서로 다른 링크 프로토콜끼리 통신하기 어렵습니다.
  3. 데이터를 수신할 상대방 위치를 알기 어렵습니다. 이더넷은 연결되어 있는 모든 사용자의 MAC 주소를 비교해 수신자인지 확인하기 때문에 가용성이 부족합니다.

한 마디로, 우리는 논리적으로 상대방 위치를 더 잘 확인할 수 있는 방법이 필요합니다. 바로 그 방법이 네트워크 계층이죠.



네트워크 계층

네트워크 계층은 링크 계층에선 알 수 없었던 논리적인 주소를 표현하고, 데이터를 수신자에게 정확하게 줄 수 있도록 합니다. 대표적으로 IP(internet protocol)가 있습니다.

네트워크 계층의 모든 프로토콜은 중간에 정보가 누락될 수 있기 때문에 비신뢰성 프로토콜로 취급한다.

IPv4

IP는 말 그대로 인터넷에 필요한 프로토콜이다. IP 헤더에는 식별자, 플래그, TTL 등 여러 정보가 있지만 여기서는 설명을 생략하겠다.

위에 MAC 주소에서 인터넷을 구현하는데 MAC 주소만으로는 여러 문제가 생긴다고 했습니다. 그래서 IP에서는 서브넷과 라우팅을 이용해 네트워크를 여러 부분으로 나눕니다. 아래에서 예시를 들어 설명하겠습니다.

IP 주소와 MAC 주소 사이의 다리 역할을 하는 ARP(address resolution protocol)이 있다. 위키링크

위의 그림은 아무무의 집과 브라움의 집의 데스크탑, 노트북, 인터넷 TV를 도식화해서 나타냈습니다. 이더넷만 있다면 이 장비들을 모두 선으로 연결해야겠죠... 이런 상황에서 이 둘은 IP 주소와 라우터를 이용해서 빠르게 정보 교환을 할 수 있었습니다. 어떻게 이런 일이 가능했을까요?

라우팅

라우팅은 네트워크에서 데이터를 수신자에게 호다닥 신속 정확하게 갖다주는 기술입니다. 위 그림의 빨간 선은 아무무 노트북 IP 주소인 A.3이 브라움의 B.2에게 패킷을 전달하는 경로를 나타냅니다. 둘 사이에 연결을 중계해주는 호스트를 라우터(router)라고 하는데 밑에서 서브넷과 함께 설명하겠습니다.

서브넷

아파트 1, 2 라인에 101호, 102호, 201호, 202호, ...가 있는 것처럼 아무무 집에 있는 전자기기도 IP에 적당한 연관성이 있어야 정보를 전달받기 편할 겁니다. 이 적당한, 논리적 연관성으로 네트워크를 부분 부분 나누는데 필요한 기술이 서브넷팅입니다.

논리적으로 IP를 부분 부분 나누기 위해서 서브넷 마스크라는 이진수를 사용합니다. 이 이진수와 IP 주소를 AND 연산한 부분을 같은 서브넷 그룹에 있다고 표현합니다. 말이 어려워 보이지만 쉽게 설명하자면, 아무무 집의 세 기기가 1.2.3.2 (A.2)부터 1.2.3.4 (A.4)까지 있다고 한다면 이 1.2.3.x가 같은 서브넷 그룹에 있는 것입니다.

즉, 우리는 서브넷을 이용해 MAC 주소에 관계없이 비슷한 IP를 갖게 해서 논리적으로 서로 같은 네트워크에 있다고 표현합니다.

라우터

IP를 비슷하게 하기만 하면 네트워크를 부분적으로 나눴다고 할 수 없습니다. 아무무와 브라움의 모든 기기를 각각 연결하기에는 가용성이 너무 떨어질 것입니다. 이때 중요한 역할을 하는 것이 바로 라우터입니다.

라우터에는 게이트웨이라는 일종의 출입문을 가지고 있습니다. (위 그림에서는 A.1, 즉 1.2.3.1과 B.1를 뜻합니다.) 예시로 A.3이 B.2에게 패킷을 보내는 순서를 간략하게 설명하자면 다음과 같습니다.

  1. A.3의 라우팅 테이블에서 B.2가 있는지 찾아봅니다.
    1-1. 없다면 ARP를 이용해서 브로드캐스트로 B 서브넷의 위치를 찾는다. (설명 생략)
    1-2. 찾았으면 해당 B 서브넷으로 가는 게이트웨이 A.1으로 패킷을 보냅니다.
  2. 라우터는 패킷을 받아서 B.2에게 전해줄 수 있는지 라우팅 테이블에서 찾아봅니다.
  3. 찾았으면 게이트웨이 B.1으로 패킷을 전달합니다.
  4. B.1이 B.2에게 패킷을 보냅니다.



마치며

인터넷도 ISP에서 공인 IP와 게이트웨이를 지급받기 때문에 위의 예시로 이해하기 쉬울 거라고 생각합니다. 이 외에도 패킷 분열, IPv6등 책에는 도움되는 내용이 많기 때문에 찾아보면 좋을 것 같습니다.

0개의 댓글