웹 서버 접속 시 일어나는 모든 과정

Hoo-Sung.Lee·2023년 9월 28일
2

네트워크

목록 보기
5/16

0. 기본 개념

  • ARP(Address Resolution Protocol)
    네트워크 상에서 IP주소를 물리적 네트워크 주소(MAC 주소)로 대응시키기 위해서 사용되는 프로토콜이다. 즉, IP주소와 MAC 주소를 일대일 매칭시켜 LAN에서 목적지를 찾아갈 수 있도록 하는 프로토콜이다.

  • DHCP(Dynamic Host Configuration Protocol)
    IP주소, 서브넷 마스크, default Gateway, DNS 서버의 주소 등의 IP 파라미터들을 자동으로 설정하게 하는 서비스이다.

  • DNS
    접속하고자 하는 웹 서버의 도메인에 해당하는 ip주소를 알려준다.

1. ARP 프로토콜 필요한 이유

맨 오른쪽 host A(10.1.3.2)에서 맨 왼쪽에 있는 웹 서버 B(10.1.1.1)로 프레임을 보내는 상황을 생각해보자

네트워크 10.1.3에서 10.1.1인 다른 네트워크로 보내는 상황이다. 호스트 A가 보내는 프레임의 목적지 2계층 주소는 어디가 되어야 할까?

2계층 주소는 A와 같은 네트워크에 속한 장치여야 한다.(한 네트워크 안에서 통신에 MAC주소가 쓰인다)

B는 최종 목적지가 10.1.1.1인 다른 네트워크이기 때문에, 다른 네트워크에 대한 정보를 가진 장치인 default gateway(라우터 R2)에 요청을 보내야 한다.
하지만 현재 라우터 R2의 IP주소만 알고 있지, MAC 주소는 모르고 있다.

A가 프레임을 보내기 위해서는 도착 IP주소, 도착 MAC주소를 모두 넣어야하기 때문에 R2의 MAC주소를 알아오는 과정이 필요하다.

이 과정에서 ARP 프로토콜이 사용된다.!!

A는 라우터로 패킷을 보낼때 해더를 다음과 같이 작성하게 된다.

해더
목적지 MAC 주소: R2 1번 인터페이스의 MAC 주소
목적지 IP 주소: 10.1.1.1


ARP 프로토콜 동작 과정

  1. ARP request(브로드캐스트 프레임)
    호스트(A)가 gateway router(R2)의 MAC 주소를 모르므로, 브로드 캐스트를 통해서 연결된 모든 장치에 ARP request를 전달한다. R2의 IP 주소를 바탕으로 MAC주소를 알아낸다.

    ARP request 프레임(A->ALL)
    목적지 MAC 주소: FFFF.FFFF.FFFF.FFFF(Broadcast)
    출발지 MAC 주소: A 자신의 2계층 주소

    타깃 IP 주소: 10.1.3.1(R2의 IP 주소)
    송신자 IP 주소: 10.1.3.2(A)

    타겟 이더넷 주소: 0000.0000.0000.0000으로 되어 있음.(알아내고자 하는 R2의 1번 인터페이스의 MAC주소)

  • 타겟 장치를 제외한 나머지 장치들은 ARP request를 무시한다.
  1. ARP reply(Unicast 프레임)
    스위치에 연결된 다른 장치들은 이 요청을 무시하지만, 타깃 장치인 R2는 자신의 2계층 주소를 포함하는 ARP reply로 응답한다.

    ARP reply 프레임(R2->A)

    목적지 MAC 주소: A의 MAC 주소
    출발지 MAC 주소: R2의 MAC 주소

    송신자 IP 주소: 10.1.3.1(R2)
    목적지 IP 주소: 10.1.3.2(A)
    로 설정해서 응답한다.

  2. ARP 테이블

    • A는 ARP에 의해 알게 된 2계층 주소(MAC)와 3계층 주소(IP)에 대한 매핑 정보를 저장한다.
    • R2도 A의 MAC주소를 ARP 테이블에 저장해서, 나중에 요청에 대한 응답에서 A의 MAC 주소를 알 수 있게 된다.
      명령어
      arp -a(pc의 ARP 테이블 보는 명령어)
      show ip arp(라우터의 ARP 테이블 보는 명령어)
  • 이제 A는 완벽한 2계층 해더를 포함하는 프레임을 만들 수 있게 되고, 1계층에서 담당 역할을 진행 후 스위치에게 전송한다.
  1. R2의 동작
    1. R2는 A가 보낸 프레임을 받았다. R2가 프레임을 수신하면, 가장 먼저 입고 있던 2계층 옷을 버린다.
      그리고 라우팅 테이블을 참고해서 10.1.1.0/24 경로와 연결된 0/0 인터페이스(본인 꺼)에 해당하는 MAC주소로 2계층 옷을 갈아 입는다.
    2. 라우팅 프로토콜을 설정하면, connected된 네트워크와 다른 네트워크로부터 수신한 네트워크 정보를 교환해서 라우팅 테이블이 만들어져 있을 것이다.
      R2는 B로 요청을 보내기 위해서는 라우팅 테이블을 참고해서 R1으로 프레임을 보내야 하는데, R1의 IP주소(10.1.1.1)는 알 수 있지만 MAC주소는 모른다.
      이 과정에서 ARP 프로토콜이 또 동작해서 R1의 MAC주소를 알아내서 R1까지 프레임을 보낼 수 있게 된다
    • 라우터는 ARP에 의해 알게 된 3계층 주소와 2계층 주소를 포함하는 ARP 테이블을 만들어서 관리한다. ARP request를 보내기 전에 ARP 테이블에서 찾아보고, 매핑 정보가 존재하지 않으면 ARP request를 보내서 찾고, ARP 테이블을 갱신한다.

DHCP 과정(DORA)

  1. DHCP discover(클라->서버)
    클라이언트가 DHCP 서버를 찾기 위해서 보낸다.
    (브로드 캐스팅하여 찾는다.)

  2. DHCP offer(서버->클라)
    DHCP 서버가 클라이언트에게 할당 가능한 IP주소, 서브넷 마스크, 디폴트 게이트웨이, DNS 서버 주소 등의 IP관련 파라미터들을 포함한다.

  3. DHCP request(클라->서버)
    할당받은 IP 주소를 다른 장치가 이미 사용중인지 확인하기 위해서 ARP 패킷을 활용한다.
    ex) 1.1.1.1을 할당 받았다면, 1.1.1.1의 2계층 주소를 묻는 ARP requset를 보내서 ARP reply가 도착하면, 다른 누군가가 사용중이라는 뜻이다. 도착하지 않으면, 해당 IP주소를 사용하기 위해서 DHCP request를 보내 최종 할당을 요청한다.

  4. DHCP ACK(서버->클라)
    DHCP 서버가 클라이언트에게 IP 관련 파라미터들을 최종 할당하고, IP 풀에서 할당한 IP 주소를 제외한다.

실습에서 DHCP 기능을 사용하려면 DHCP 기능을 제공 받으려는 단말기가 연결된 gateway마다
명령어: ip helper-address [DHCP 주소]를 사용해서 등록해야 합니다. 그리고 DHCP서버에 gateway별로 등록을 해줘야 합니다.

DNS 과정

1.사용자 또는 애플리케이션은 도메인 이름을 지정하여 DNS 서버에 쿼리를 보냅니다.

2.로컬 DNS 클라이언트(일반적으로 컴퓨터 또는 라우터에 내장된)는 DNS 서버의 IP 주소를 알고 있으므로 해당 DNS 서버에 요청을 보냅니다.
DNS 서버로 요청을 보낼때, 각 네트워크마다 gateway 라우터의 2계층에서 ARP 프로토콜이 사용된다.

3.DNS 서버는 도메인 이름을 IP 주소로 해석하고 그 결과를 DNS 클라이언트에게 반환합니다.

4.DNS 클라이언트는 이제 해당 호스트의 IP 주소를 알고 있으며, 이를 사용하여 통신을 설정합니다.

실습에서 host들이 DNS 기능을 사용하려면, DHCP 서버에 DNS IP를 등록해주면, 자동으로 DHCP 서비스를 제공할때, DNS 서버 주소도 제공해줍니다.

처음 ping이 실패하는 이유

라우터는 프레임이 왔을때, 라우팅 테이블(목적지 IP주소 확인)과 ARP 테이블(IP주소에 해당하는 MAC 주소 확인)을 모두 참고해서, 프레임의 목적지에 대한 정보가 하나라도 내용이 없으면 요청을 버린다.
처음 전송할때, ARP 테이블에 목적지 IP주소에 해당하는 MAC주소가 없으므로 요청이 무시되어서 처음 핑은 무시된다.
그 이후는, ARP 테이블이 만들어졌으므로 요청이 잘 전송된다.

profile
Working towards becoming Backend-Developer

0개의 댓글