전체적인 개요 및 정리

  • Application Layer

    • HTTP, SMTP, DNS

    • 데이터의 단위, Message 

  • Transport Layer

    • TCP, UDP

    • 데이터의 단위, Segment

    • 세그먼트에 데이터 부분이 Message 가 담기게 되며 부가적인 정보들은 헤더에 쓰인다. 헤더에 쓰이는 것들은 TCP Segment Structure 를 살펴보면 된다.

  • Network Layer
    • IP ( Internet Protocol )
    • 데이터의 단위, Packet
    • 세그먼트가 내려오면서 Packet 의 데이터 부분에 담긴다. 또한 부가적인 정보들은 패킷 헤더에 쓰인다.
현재 우리가 TCP / IP 기반의 네트워크 혹은 인터넷이라 부르는 이유는 TCP 를 주로 사용하면서 하부에 Network Layer의 프로토콜로 IP를 사용하기 때문이다. 레이어 계층을 하나씩 내려오면서 캡슐화되면서 감싸지게 된다. (encapsulation) 메세지의 크기는 크게하고 부가적인 헤더의 사이즈는 적게 하는게 지향되지만 항상 그렇게 될 수 없다고 한다.
  • Link Layer
    • 3G,WIFI
네트워크 레이어에서 핵심이 되는 구성요소는 라우터(Router)이다. 또한 IP 프로토콜에 대해서 이야기한다. 결과적으로 출발지에서 목적지까지 효과적으로 메세지를 전달할 것인가에 대해서 중점적으로 다루게 될 것이다. 


TCP 같은 경우는 양 끝단의 엔드 포인트끼리 신뢰성있는 정보를 어떻게 전달할 것인가에 대한 이야기를 하였다. Transport Layer 에서는 상대방에게 세그먼트를 보내고 다시 ACKs 를 받는 과정에서 라우터에게 어떻게 전달되고 라우터들은 어떻게 세그먼트를 목적지 까지 전달하는지에 대해서 알 필요성이 있다.


패킷이 전달될때마다 라우터를 거친다. 라우터들은 당연히 네트워크 레이어에 대한 동작이 있어야 한다. 현재 인터넷에 존재하는 라우터들은 트랜스포트 레이어와 애플리케이션 레이어가 구성되어 있지 않다. 네트워크 레이어까지만 구현되어 있다. 따라서 TCP 세그먼트를 처리할 수 없지만 네트워크 레이어는 구현되어 있으므로 패킷은 처리가 가능하다. 따라서 모든 라우터들은 네트워크 레이어의 기능이 있다. 


네트워크 레이어는 특정 패킷을 어느 목적지(호스트) 까지 전달하는 역할을 수행한다.


라우터의 중요 두가지 기능

(1) 포워딩

패킷을 받고, 패킷의 목적지를 확인하여 다음 라우터로 전달하는 것을 의미한다.

(2) 라우팅

라우터에서 패킷을 받는다. 라우터는 패킷의 목적지 주소를 보고 어떤 방향으로 보낼지 결정을 한다. 그 결정을 하는 기준은 포워딩 테이블을 보고 결정하며, 모든 라우터들은 포워딩 테이블을 지니고 있으며 이 테이블을 확인해서 목적지까지 전달하는 것을 의미한다. 특정 목적지까지 가기 위해서는 몇번 링크로 보내라는 의미를 지니고 있다. 결과적으로 이러한 포워딩 테이블을 만드는 것이 라우팅 알고리즘이다.


따라서 포워딩은 포워딩 테이블을 참조하여 다음 라우터로 패킷을 전달하는 것을 의미하는 것이며, 라우팅은 포워딩 테이블을 만듦을 의미한다. 라우팅 알고리즘을 사용하여 포워딩 테이블을 채우는 것을 말한다. 포워딩 테이블은 Address 범위로 구성되어 있다.


가장 구체적인 엔트리를 찾아서 목적 링크까지 보내는 것을 라우팅에서 하는 포워딩 작업이다.


라우터 아키텍처

라우팅을 담당하는 프로세서

Input Link & Output Link 가 존재한다.


라우터끼리 데이터를 주고받는다. 여기서 데이터를 보내고 받는 것은 사용자의 데이터이다. 포워딩 테이블을 참조해서 데이터들의 이동이 활발하게 움직이는 것을 데이터 plain이라고 말한다. 포워딩 테이블을 제대로 만들기 위해서는 라우팅이라는 작업이 필요하다.


라우팅 혼자서 포워딩 테이블을 만들 수 있을까? 없다. 주위의 노드(라우터)들과의 정보교환을 라우팅 알고리즘을 수행할 수 있다. 실제 유저의 데이터들을 통해서 정보 & 라우팅 알고리즘 상에서의 상대방 라우터와 교환하는 메세지 이 두 가지의 내용을 통해서 라우팅 알고리즘을 수행한다.


라우터는 위의 그림처럼 개념적으로 생겼다. 인풋 포트를 통해서 패킷을 받고, 인풋 포트에서 포워딩 테이블을 참조해서 아웃풋 포트로 전달한다. 하지만 인풋 포트가 다수가 하나의 라우터로 들어온다면 이 상태에서 Queueing Delay 가 발생한다. 


라우터는 다시 말하지만, 포워딩 테이블을 참조해서 다음 포트로 전달하는 포워딩과 포워딩 테이블을 만드는 라우팅이 있다.


IP Protocol

IP datagram format

  • IP version

  • Internet Header Length 

  • TOS

  • Time To Live (TTL)
    패킷이 출발지로부터 전송된 이후에 얼마만큼의 라우터를 거칠 수 있는지를 결정한다.따라서 TTL 이 10이면 하나의 라우터를 지나칠때마다 1씩 감소시키며 0이되는 순간 해당 패킷을 드랍한다. 왜 이렇게 하는 것일까?

    혹시 라우팅 알고리즘이 오작동으로 사이클이 생기는 경우, 무한대로 반복될경우를 미연에 방지하기 위함이다. 

  • Upper Layer (=protocol)
    리시버 측에서 IP 패킷을 받은 경우,해당 패킷을 디캡슐레이션을 실시하고 트랜스포트 레이어로 올려야한다. 근데 해당 프로토콜이 TCP 혹은 UDP 인지 알기 위함이다.

  • TL (Total Length)

  • checksum

  • Source Addresss (32 bit)

  • Destination Address (32 bit)
    32 비트의 주소공간을 사용해야 하기 때문에. 32비트 공간에 적혀있다.

애플리케이션 메세지에 헤더가 붙고 헤더가 붙어 패킷이 생긴다. 헤더의 오버헤드는 20byte ~ 40byte 이다. 실제 메세지에 40byte 의 오버헤드가 붙어서 전송된다. 
  • 20 bytes of TCP
  • 20 bytes of IP
  • 40 bytes + app layer overhead
IP Address (IPv4)
현재 사용하고 있는 32비트의 주소체계를 가지고 있다. 사람이 32비트씩 말하기 힘들기 때문에 8비트씩 4번씩 끊어서 10진수로 표현한다. 32비트 주소를 주고받아야 하는데 어떻게 소지하고 있을 것인가. 단순 10진수로 표현하게 된다면 포워딩 테이블의 크기가 늘어난다. 

따라서 체계를 가지고 계층화 시켜서 IP 주소를 만든다. 따라서 32비트의 앞의 24비트는 네트워크 주소(prefix), 그리고 이후 8비트는 호스트의 주소를 참조한다. 이와 관련된 내용은 여기에서 확인하자.

따라서 포워딩 테이블을 구성할 때, prefix 기준으로 잡게된다면 포워딩 테이블의 크기를 줄일 수 있다. 

prefix : 네트워크 주소
예전에는 네트워크 주소를 붙이는 엄격한 기준이 존재했다. 

CIDR
어떤 비트수에 상관없이 네트워크 prefix 를 사용할 수 있도록 하였다. 유연하게 네트워크 길이를 조절할 수 있도록 하였다.


포워딩 테이블은 네트워크 prefix 가 엔트리가 되어서 생성이 된다. 포워딩 테이블의 네트워크 값들은 네트워크 prefix이다. 따라서 값들은 모두 상이하다. 결과적으로 라우터들은 매우 바쁘다.


Subnets
IP 주소는 네트워크 주소와 호스트 주소로 나뉘었다. subnets은 중간에 라우터를 거치지 않고 갈 수 있는 호스트들의 집합이다. 그러한 서브넷에 있는 호스트들은 서브넷 파트에 있는 주소가 동일한다. IP 주소라는 것은 결국 호스트를 지칭하는 것이 아닌 인터페이스를 지칭하는 것이다. 인터페이스가 여러 개 있는 디바이스가 있는데 그러한 대표적인 예는 라우터이다. 라우터는 네트워크 인터페이스가 여러개 있는 것이다. 그리고 각각은 서로 다른 IP 주소를 가지고 있는 것이다. 


결국

인터페이스에 배정된 IP 주소는 다를 뿐만 아니러 서브넷 조차도 다르다. 서브넷은 라우터를 거치지 않고 갈 수 있는 집합이다. 라우터를 넘어가게 된다면 다른 서브넷 영역에 들어가게 된다. 라우터라는 것은 여러 개의 서브넷에 속한 교집합의 멤버로서 볼 수 있다.



정리 )

  • Network Layer 데이터 단위
  • 라우터의 주요 두가지 기능 설명 
    • 포워딩과 라우팅의 차이
  • IP Protocol
  • 서브넷


Posted by doubler
,