카테고리 없음

CCNA (8) - Packet

yingtao 2025. 2. 3. 15:03

DNS

패킷이 7계층에서 계층별로 캡슐화되어 3계층에 도달하면 -> 출발지, 목적지 IP 주소를 입력해야 한다.
이때, 실제 IP 주소보다는 전체 주소 도메인 이름 (FQDN)을 사용한다.

DNS는 FQDN을 IP주소로 변환하는 역할을 수행한다.
내부 DNS 서버는 인터넷의 모든 정보를 알 수 없으므로, 외부에 관한 정보를 요청할 때는 공공 DNS 서버에 요청하게 되고 53번 UDP 포트를 통해 전송된다. (TCP로도 대체 가능하나, 보통은 UDP로)

 

Cisco 라우터 상의 DNS

라우터를 DNS 클라이언트로 설정하는 명령어

라우터가 자체적으로 FDQN을 변환할 수 있도록 하기 위함

라우터를 DNS 클라이언트로 설정하지 않고 DNS 트래픽을 통과하기 위해서는, 라우터가 자체적으로 FQDN을 호스트명으로 변환할 수 있는 경우에 해당된다. (일반적x)

 

라우터를 DNS 서버로 사용하는 명령어

변환하고자 하는 모든 주소 기록을 입력하기 위해 ip host 와 호스트명, 호스트 주소를 입력한다.

하지만 일반적으로 Cisco 라우터를 DNS 서버로 사용하지는 않는다. 외부 Windows나 리눅스/유닉스를 사용한다.   

 

ARP (Address Resolution Protocol)

발신자는 바로 IP 주소로 보낼 수 있고, FQDN으로도 보낼 수 있다. 이때, DNS가 IP 주소로 변환하여 목적지 IP 주소를 찾게 되면, 패킷이 2계층까지 내려와서 발신자는 목적지 MAC 주소도 알고 있어야 한다.
즉, 패킷을 전송하기 위해서는 IP 주소와 MAC 주소를 모두 알아야 한다.

하지만 MAC 주소는 논리적인 주소가 아니기 때문에 유저가 직접 목적지의 MAC 주소 입력이 불가하고, 따라서 자동으로 MAC 주소를 찾기 위한 방법(프로토콜) 이 필요하다. 

ARP는  목적지 IP 주소를 통해 목적지 MAC주소를 찾아낸다. 

 

ARP 회신은 호스트 ARP 캐시 내로 저장되기 때문에 통신을 위해 매번 ARP 요청을 보낼 필요는 없다.
다음과 같은 명령어로 ARP 캐시를 열람할 수 있다.

 

라우팅 된 트래픽을 위한 ARP

서로 다른 서브넷끼리 통신하기 위해서는 라우터를 거쳐야 한다.
이때는 두 호스트가 동일한 서브넷에 있을 때 처럼 ARP가 작동할 수 없다.


따라서 sender는 최종 목적지에 대한 ARP 요청을 보내는 것이 아닌, 기본 게이트웨이에 대한 ARP 요청을 보낸다.
이때, 라우터는 원래 ARP 요청에 있던 src MAC을 통해 목적지를 알고 있고, 
sender는 원래 목적지의 MAC주소를 라우터로부터 알게 된 뒤 최종 목적지에 대한 IP 패킷을 다시 보내게 된다.



... 이해안돼서 GTP 통해 다시 정리한 내용 

 

같은 서브넷 내에서의 ARP 작동 방식

  • Host A(192.168.1.10)가 같은 서브넷 내의 Host B(192.168.1.20)와 통신하려고 한다.
  • Host A는 ARP 요청을 브로드캐스트(FF:FF:FF:FF:FF:FF)로 보내며, “192.168.1.20의 MAC 주소를 알려줘!”
  • Host B가 응답하며 자신의 MAC 주소를 알려줌.
  • Host A는 MAC 주소를 ARP 테이블에 저장한 후, Host B에게 직접 패킷을 보냄.

같은 서브넷 내에서는 ARP를 사용하여 목적지의 MAC 주소를 직접 찾는다.

 

다른 서브넷과 통신할 때 ARP 작동 방식

Host A(192.168.1.10/24)가 다른 서브넷(예: 192.168.2.10/24)의 Host C와 통신하려고 할 때,
이때 ARP 요청 방식이 다르다!

  • Host A는 Host C의 IP(192.168.2.10)에 대한 MAC 주소를 직접 ARP 요청하지 않는다!
  • 대신, 게이트웨이(라우터)의 MAC 주소가 필요하므로, 기본 게이트웨이(예: 192.168.1.1)에 대한 ARP 요청을 보냄.
    “내 기본 게이트웨이(192.168.1.1)의 MAC 주소가 뭐야?”
  • 라우터(기본 게이트웨이)가 자신의 MAC 주소를 응답.
  • Host A는 라우터의 MAC 주소를 사용하여 IP 패킷을 보냄.
  • 라우터는 목적지 IP(192.168.2.10)에 대한 다른 서브넷에서 ARP 요청을 수행하고, Host C의 MAC 주소를 알아낸 후 패킷을 전달.

즉, 다른 서브넷과 통신할 때는 라우터의 MAC 주소를 사용하여 데이터를 보낸다!

 

Cisco 라우터에서 ARP 캐시 확인 명령어


IP 네트워킹 이해하기 

 

호스트A가 www.flashbox.com으로 HTTP 웹 트래픽을 보내는 상황

1) 트래픽을 보내기 위해 FQDN을 사용한다.
-> DNS를 사용하여 FQDN을 IP주소로 변환한다.

  • Layer 7 : 애플리케이션 정보로 패킷을 구성
  • Layer 6 : 헤더에 캡슐화
  • Layer 5 : 헤더에 캡슐화
  • Layer 4 : 웹 트래픽으로 TCP에 전송될 것이며, 목적지 포트는 80번
  • Layer 3 : Sender가 웹 트래픽을 구성할 때, 3계층 헤더를 만들어야 하며 목적지 IP 주소를 입력해야 한다. 하지만 사용자는 FQDN을 이용했기 때문에 IP 주소를 모르고, 이를 위해 DNS를 사용한다. (DNS 요청을 보낸다.)

호스트는 이미 자신의 IP 주소, 서브넷마스크, 기본 게이트웨이, DNS 서버를 알고 있으므로,
호스트는 자신의 IP주소와 서브넷마스크를 DNS 서버의 목적지 주소와 비교하고 다른 서브넷에 존재함을 알게된다.

따라서 DNS 요청기본 게이트웨이를 통해 보낸다.

이때, 호스트 A는 요청을 보류하고, 기본 게이트웨이인 10.10.10.1에 대한 브로드캐스트 ARP 요청을 보낸다.

ARP 요청은 왼쪽의 스위치1 에서 수신된다. 
스위치1은 호스트 A의 MAC 주소 1111.2222.3333을 포트 1에 매핑하여 MAC 주소 테이블에 항목을 추가한다.

스위치1은 수신된 포트를 제외한 모든 포트로 브로드캐스트 트래픽을 채운다. 따라서 포트2로 나가게 된다.

라우터 A는 ARP 요청을 처리하고 자신을 위한 것임을 확인한다. 
호스트 A에게 유니캐스트 ARP 응답을 보내고, 라우터A는 호스트A의 IP주소 10.10.10.10을 MAC주소 1111.2222.3333에 매핑하여 ARP캐시에 추가한다.

그런다음 ARP 응답을 보내고, 스위치 1은 이를 수신하고 라우터A의 MAC주소 4444.5555.6666을 포트 2에 매핑하여 MAC주소 테이블에 추가한다.
스위치 1은 ARP응답이 유니캐스트 응답이기 때문에 호스트A가 연결된 포트인 포트1에만 ARP응답을 전송한다.

호스트 A는 www.flashbox.com에 대한 DNS 요청을 전송한다. 이는 호스트 A의 src MAC 1111.2222.3333에서 나온다.
이는 호스트 A의 기본 게이트웨이 MAC주소인 4444.5555.6666으로 이동하며, 소스 IP는 호스트 A의 10.10.10.10이고, 목적지 IP는 10.10.100.10의 DNS 서버이다. 

이는 유니캐스트 트래픽이므로, 스위치 1은 포트 2에만 DNS 요청을 전송한다.
이는 라우터 A가 연결된 포트이며, 스위치는 이미 MAC 주소 테이블을 가지고 있다.
따라서 DNS요청은 ..

 

듣다가 머리아파져서 ...... 다시 GPT 정리..

 

FQDN(도메인 네임) → IP 주소 변환 (DNS 요청) 

호스트 A는 www.flackbox.com으로 접속하려 하지만, IP 주소를 모르기 때문에 먼저 DNS 서버에 질의(DNS Query)를 보내야 합니다.

 문제점

  • 호스트 A는 www.flackbox.com의 IP를 모르지만, DNS 서버(10.10.100.10)의 IP는 알고 있음.
  • DNS 서버(10.10.100.10)는 다른 서브넷에 있기 때문에 라우터(기본 게이트웨이)를 통해야 함.

해결 과정

  • 호스트 A는 DNS 요청 패킷을 만들어야 하지만, DNS 서버의 MAC 주소를 모름.
  • 따라서 DNS 서버가 아닌, 기본 게이트웨이(10.10.10.1)의 MAC 주소를 먼저 알아야 함.
  • ARP 요청을 사용하여 10.10.10.1의 MAC 주소를 확인.

 

 기본 게이트웨이(라우터 A)의 MAC 주소 찾기 (ARP 요청 & 응답)

1. 호스트 A는 “10.10.10.1의 MAC 주소가 뭐야?“라는 ARP 브로드캐스트 요청을 보냄.

  • 출발지 MAC: 1111.2222.3333 (호스트 A)
  • 목적지 MAC: FF:FF:FF:FF:FF:FF (브로드캐스트)

2. 스위치1이 ARP 요청을 모든 포트로 전달.

3. 라우터 A(10.10.10.1)가 ARP 요청을 받고, 자신이 대상임을 인식.

4. 라우터 A는 “내 MAC 주소는 4444.5555.6666이야!“라고 ARP 응답을 유니캐스트로 보냄.

5. 호스트 A는 라우터 A(10.10.10.1)의 MAC 주소를 ARP 캐시에 저장.

이제 호스트 A는 DNS 요청을 보낼 수 있음!

 

DNS 요청 전송 (유니캐스트)

1. 호스트 A가 DNS 요청을 보냄.

  • 출발지 MAC: 1111.2222.3333 (호스트 A)
  • 목적지 MAC: 4444.5555.6666 (라우터 A, 기본 게이트웨이)
  • 출발지 IP: 10.10.10.10 (호스트 A)
  • 목적지 IP: 10.10.100.10 (DNS 서버)

2. 스위치1은 목적지 MAC(4444.5555.6666)이 라우터 A에 해당됨을 알고, 포트 2로 전달.

3. 라우터 A는 패킷을 받아보고, 목적지 IP(10.10.100.10)가 다른 서브넷임을 인식.

라우터 A가 다음 단계(다른 서브넷으로의 라우팅)를 수행해야 함!

 

라우터 A → DNS 서버로 패킷 전달

1. 라우터 A는 패킷을 보고, 목적지 IP(10.10.100.10)를 확인.

2. 라우터 A는 자신이 10.10.100.0/24 네트워크에 연결된 인터페이스(10.10.100.1)를 통해 전송해야 함을 인식.

3. DNS 서버(10.10.100.10)의 MAC 주소를 모르면, 다시 ARP 요청을 보냄.

4. DNS 서버(10.10.100.10)가 자신의 MAC 주소 3333.4444.5555를 응답.

5. 라우터 A는 DNS 요청을 DNS 서버로 전달.

DNS 요청이 최종 목적지인 DNS 서버에 도착함!

 

DNS 응답 & 웹 트래픽 (HTTP 요청)

1. DNS 서버(10.10.100.10)는 응답을 생성하여 호스트 A에게 전송.

2. DNS 응답 패킷도 라우터 A를 거쳐 전달됨.

3. 호스트 A는 www.flackbox.com의 IP 주소를 알게 됨.

4. 이제 웹 트래픽(HTTP 요청)을 보낼 수 있음!

 

HTTP 요청 전송

1. 호스트 A는 이제 www.flackbox.com (10.10.12.10)로 HTTP 요청을 보낼 준비가 됨.

2. 마찬가지로, 목적지 MAC을 모르면 ARP 요청을 통해 기본 게이트웨이(라우터 A)의 MAC 주소를 확인.

3. 라우터 A가 패킷을 받아보고, 10.10.12.10이 있는 네트워크(10.10.12.0/24)로 전달.

4. 라우터 A는 다시 ARP 요청을 사용해 10.10.12.10(www.flackbox.com)의 MAC 주소를 알아냄.

5. HTTP 요청이 최종 목적지인 www.flackbox.com 서버로 전달됨!

이제 웹페이지가 로드될 준비 완료! 🎉