오늘의 인기 글
최근 글
최근 댓글
Today
Total
04-29 01:41
관리 메뉴

우노

[보안] 패킷 전송 개념 및 방법 본문

Network & Security/Concept

[보안] 패킷 전송 개념 및 방법

운호(Noah) 2020. 9. 11. 15:26

패킷

  • 패킷이 LAN과 WAN에서 어떻게 전달되는지 설명하지 못하는 경우가 많다.
  • 이 과정을 이해하면 네트워크 보안의 많은 부분을 이해할 수 있다.
  • 컴퓨터 네트워크에서 패킷은 어떻게 전달되는지 그림을 통해 살펴보자

인터넷 구조

  • 먼저 간단한 구조로 인터넷을 이해해보자

  • 위 그림은 인터넷을 극단적으로 간단하게 그린 것이다.

    • 왼쪽과 오른쪽에 구름형태로 LAN(Local Area Network)이 있다.
      • 왼쪽 LAN
        • PC0의 IP는 192.168.161.230
        • PC1의 IP는 192.168.161.235
        • PC2의 IP는 192.168.161.240
      • 오른쪽 LAN
        • PC3의 IP는 192.168.162.230
        • PC4의 IP는 192.168.162.235
        • PC5의 IP는 192.168.162.240
    • 가운데의 파란색 네모난 장비는 스위치, 파란색 동그란 장비는 Router라는 통신 장비이다.
      • 왼쪽과 오른쪽의 LAN에는 각각 컴퓨터 3대와 통신장비인 스위치가 있으며
      • 컴퓨터들은 LAN 카드에 선을 연결해 스위치를 유선으로 연결해서 쓰고 있다.
      • 가정집에서 사용하는 무선 공유기는 스위치와 라우터가 합쳐진 하나의 장비 형태이다.
        • 이러한 모델은 집 밖으로 나가는 회선과 연결 돼 있다.
      • 통신 모뎀(라우터)은 왼쪽과 오른쪽에 LAN 카드가 있다.
        • 왼쪽 LAN 카드의 IP는 192.168.161.1
        • 오른쪽 LAN 카드의 IP는 192.168.162.1
        • IP주소에서 처음 24비트까지가 네트워크 주소이다.
    • 양쪽의 통신 장비(라우터)가 구성하고 있는 가운데의 네트워크도 LAN이라고 볼 수 있다.
      • 즉, 라우터와 라우터 사이에도 LAN이 존재한다.
      • 이 LAN은 10. 대 주소를 사용하고 있다.
    • 따라서 그림에는 총 3개의 LAN(C Class network)이 존재한다.

컴퓨터의 ip 주소를 확인할 수 있는 방법은?

  • ipconfig 명령을 통해 컴퓨터의 ip 주소를 확인할 수 있다.

    • 컴퓨터가 가지고 있는 LAN 카드들이 나타난다.
    • 위 그림에서 컴퓨터가 인터넷을 쓰기 위한 IP 주소는 192.168.35.190 이며
    • 앞에서부터 24비트까지인 192.168.35 까지가 네트워크 주소이다.

컴퓨터의 네트워크 라우팅 테이블을 확인할 수 있는 방법은?

  • Window의 PowerShell에서 라우팅 테이블을 보기 위한 명령어는 netstat -rn 이다.

  • r은 라우팅 테이블을 의미하고, n은 숫자로 보여짐을 의미한다.

  • 위 그림의 IPv4 경로테이블이 바로 라우팅 테이블이다.

  • 라우팅 테이블은 네트워크 대상, 네트워크 마스트, 게이트웨이, 인터페이스, 메트릭으로 구성 돼 있다.

  • 이를 통해 패킷이 어떻게 전달되는지를 알아볼 것이다.

    • 패킷은 Client PC에서 생성된다.
    • 이 때, 인터넷 프로토콜에서는 항상 목적지 IP 주소와 라우팅 테이블을 이용해
    • 어떻게 패킷을 전달할 것인지 결정해야한다.

동일한 LAN에서의 통신

  • 자 이제 동일한 LAN에서 Client(PC0)와 Server(PC1)가 통신할 때, 통신이 어떻게 전달되는지에 대해서 알아 볼 것이다.

  • 다음 그림은 동일한 LAN 안에서 Client(PC0),Server(PC1)의 위치와 Client(PC0)의 라우팅 테이블을 정리한 표이다.

    • 인터넷 프로토콜에서 라우팅 테이블은, 보통 netmask가 높은 순으로 정렬된다.
    • 위 그림에서 PC0(Client)은 패킷을 목적지 주소(PC1)로 보내야하는데, 목적지 주소(PC1)는 192.168.161.235이다.
    • 그렇다면 클라이언트는 라우팅 테이블의 7가지 규칙 중, 몇 번째 규칙을 이용해서 패킷을 보낼지 결정해야한다.
    • 이 때, 사용하는 알고리즘을 longest prefix matching이라고 한다.
  • longest prefix matching이란?

    • Netmask 주소와 목적지 IP 주소를 bitwise AND 연산하고
    • 결과 주소가 Network Destination과 동일하다면 해당 규칙을 선택하는 알고리즘이다.
      • bitwise AND 연산이란, 같은 자리의 두 비트가 모두 1일 때만 1을 도출하는 방법이다.
      • Netmask 주소와 목적지 IP 주소를 bitwise AND 한 값이 Network Destination 값과 다르다면, 다음 규칙으로 넘어간다.
    • 라우팅 테이블의 4번째 규칙에서, 목적지 주소(192.168.161.235) 와 Netmask(255.255.255.0)를 bitwise AND 연산하면 192.168.161.0 이라는 결과가 나오며,
    • 이는 Network Destination과 동일하므로, 해당 규칙으로 패킷을 전송하게 된다.
    • netmask가 0.0.0.0 인 값은 default netmask라고 부른다.
  • 사용할 라우팅 테이블 규칙을 골랐다면, 이제 Gateway 주소로 패킷을 보내야한다.

    • GateWay란 최종 목적지 IP 주소까지 가는 중간 단계이다.
      • 4번 규칙의 GateWay에는, 클라이언트 주소와 동일한 IP 주소가 적혀져 있는 것을 볼 수 있다.
      • 만약 Gateway 주소에 본인의 IP 주소가 적혀져 있다면, 본인이 속해있는 LAN의 모든 장비에게 패킷을 던지라는(broadcast) 의미이다.
      • 이를 이더넷 방식이라고 한다.
      • 따라서, 해당 Gateway로 패킷을 던진다면, 패킷을 받은 장비들은 패킷의 목적지 ip 주소가 본인의 ip 주소라면 받고 아니면 버린다.
      • 만약 7번 규칙이 당첨된다면 클라이언트는, 패킷을 해당 Gateway에게만 전달한다.
    • Gateway를 통해 패킷을 보낼 목적지를 확인했다면, 이제 보낼 패킷을 생성해야한다.
  • 패킷 구조

    • 위 그림 상단 부분의 Ether Header가 패킷이다.
    • Gateway 주소로 보내야하는 패킷은 아래와 같은 정보로 이루어져 있다.
      • S Mac ( 출발지 Mac 주소 )
      • D Mac ( 목적지 Mac 주소 )
        • Mac 주소란, LAN 카드의 물리적 주소라고도 하며, 통신기기 하드웨어 자체에 부여된 고유한 식별번호이다.
        • 6 octet 은 48비트라는 뜻이다.
      • Payload (IP패킷)
        • S IP ( 출발지 IP 주소 )
        • D IP ( 목적지 IP 주소 )
        • 패킷을 전달함에 있어서 가장 중요한 것은 출발지 IP와 목적지 IP이며, 32비트이다.
    • 패킷을 전달할 땐, 위의 4가지(S Mac, D Mac, S IP, D IP)가 가장 중요하다.
    • S IP와 D IP는 고정되어 있으며, S Mac과 D Mac은 목적지까지 가는 단계마다 바뀐다.
    • 클라이언트는 S Mac, S IP, D IP 만 알고 D Mac을 모르기 때문에
    • 우선, D Mac을 비워둔다.
    • 이후, D Mac을 알아내기 위해 특별한 프로토콜을 사용하는데,
    • 그게 바로 ARP 프로토콜이다.
  • ARP(Address Resolution Protocol)란?

    • D Mac 주소를 찾아낸다는 의미로, Resolution이라고 부른다.
    • 클라이언트는 패킷을 보내고 싶지만, D Mac 주소를 모르기 때문에, 이더넷 통신에서 다음과 같은 약속을 한다.
    • D Mac 주소의 48비트를 다 1로 채운 패킷을, ARP Request packet이라 부르기로 약속한다.
    • 따라서, ARP Request 패킷을, 속해있는 LAN의 모든 기기에 broadcast로 전달한다.
    • 그러면 LAN 안의 모든 기기가 ARP Request packet을 받게 되고
    • 받은 패킷의 D Mac 부분이 다 1이라면, 해당 패킷은 누군가의 D Mac을 찾는 ARP Request packet이구나 라고 생각한다.
    • 따라서, 패킷의 목적지 IP 주소가 본인인지 확인한 뒤
    • 목적지 IP 주소가 본인 IP 주소와 같다면, ARP Request packet에 대응되는 ARP reply packet에 본인의 D Mac을 채워서 클라이언트에게 보내게 된다.
    • 그렇다면 클라이언트는 ARP reply 를 받았기 때문에, 서버의 D Mac을 알게 되어 완벽한 이더넷 패킷을 만들 수 있게 된다.
      • Window에서는 Window Powershell의 arp -a 명령어를 통해 현재 ARP 를 알 수 있다.
        • 컴퓨터가 그 동안 local LAN에서 패킷을 주고 받았던 장비들의 MAC 주소들을 cashing 해두고 있는 것이다.
        • 이제 MAC을 알기 위해서 매번 ARP request/reply를 보낼 필요가 없다.

다른 LAN에서의 통신

  • 위의 예제는, 클라이언트와 서버가 같은 LAN에 있을 때의 패킷이 전달되는 예제였다.

  • 이제 패킷이 동일한 LAN 구간을 벗어난 곳으로 전달 돼야 할 때는, 어떤식으로 전송되는지 알아보자.

  • 위 그림에서 Client(PC0)는 왼쪽 LAN이고, Server(PC3)는 오른쪽 LAN이다.

  • 아래 표는 Client의 라우팅 테이블이며, 알고리즘은 동일하다.

  • 우선 클라이언트는 본인의 라우팅 테이블을 보게 된다.

  • 라우팅 테이블에서 몇 번째 규칙을 사용할건지는, longest prefix matching 알고리즘을 사용하게 된다.

    • 목적지 ip 주소는 192.168.162.230 이므로
    • 첫번째 규칙의 Netmask부터 목적지 ip 주소(192.168.162.230)와 bitwise AND 연산해 NetworkDestination과 비교한다.
    • 그럼 결국 7번 규칙을 따르게 된다.
      • 7번 규칙의 Netmask(0.0.0.0)와 목적지 ip 주소(192.168.162.230)의 bitwise AND 연산 결과는, 목적지 IP 주소와 상관없이 무조건 0.0.0.0 이다.
      • 따라서, Network Destination과 동일하게 된다.
      • 이를, default Gateway라고 부른다.
      • 7번 규칙의 Gateway 주소는 192.168.161.1이다.
      • Client가 속해있는 LAN의 기기들중 하나의 주소인걸 확인할 수 있다.
  • 라우팅 테이블 중 7번 규칙을 정했으니, 이제 클라이언트는 Gateway 주소로 보낼 패킷을 만들어야한다.

    • 클라이언트는 S MAC, S IP, D IP를 다 알고 있지만, 정작 D MAC은 모르고 있다.
    • Gateway IP 주소에 해당하는 장비의 Mac 주소를 알아야 이더넷 패킷을 만들 수 있다.
  • 따라서, 다른 WAN으로 패킷을 보내기 전에 Client에서 모뎀에 패킷을 먼저 보낸다.

  • 클라이언트는 ARP request/reply를 통해 Gateway의 D Mac 주소를 알아온 뒤 전송한다.

    • 그럼 패킷은 통신장비까지는 전달이 된다.
  • 그럼 이제 왼쪽 라우터는 해당 패킷을 어디로 전달할까?

  • 원리는 동일하다.

    • 라우터는 본인의 라우팅 테이블을 확인한다.
    • 또 다시 longest prefix matching을 통해 규칙을 정한다.
    • 결정된 규칙의 Gateway에 해당하는 Mac 주소를 알아내 패킷을 만든 뒤, 전송한다.
  • 결론

    • 패킷은 한 단계 한 단계 씩 라우팅 테이블을 통해 전달 되며
    • longest prefix matching을 통해 라우팅 테이블 규칙을 찾고
    • Gateway 기기에 보낼 패킷 생성시, Gateway의 D Mac 주소를 모르면 ARP Request/Reply 를 통해 알아낸다.
      • Gateway 기기의 Mac 주소를 알면, 그냥 이더넷 패킷 만들어서 Gateway에게 보내면 된다.
    • 따라서, 클라이언트로부터 서버로 가는 패킷의 단계마다, S Mac, D Mac은 변하지만 S IP, D IP는 변하지 않는다.
Comments