packet 은 L3 에서의 데이터 전송 단위이다.
L3통신 단위에 맞게 패킷의 헤더에 담긴 Source와 Destination의 주소는 ip주소이며
이외에 헤더는 IP 버전, 패킷의 총 length, 패킷의 수명인 TTL(Time To Live), payload에 있는 L4 데이터의 타입(UDP / TCP) 등의 정보를 담고있다.
위는 구글 메인페이지 요청을 보낸 패킷(from wireshark)으로 destination의 ip 주소는 실제 구글 주소를 가리킨다.
frame은 L2 통신의 데이터 전송 단위로, 목적지 Mac 주소, 출발지 Mac 주소, payload에 담긴 패킷의 IP version 정보를 담는다.
같은 요청에 쓰인 Frame
위 사진을 보면 Frame와 Packet 의 헤더에 각각 목적지 정보를 담고 있다.
그렇다면 Frame 헤더의 목적지 주소와 IP헤더의 목적지 주소가 모두 google의 주소를 가리킬까?
그렇지 않다.
IP 헤더는 네트워크 계층의 일부로, 인터넷 프로토콜(IP)를 사용하여 데이터를 전송하는 데 사용되므로 IP 헤더의 목적지 주소로 최종 목적지의 IP 주소를 담아 전체 인터넷을 통해 데이터 패킷을 올바른 목적지로 라우팅되도록 한다.
반면에 프레임 헤더는 데이터 링크 계층의 일부로, 로컬 네트워크 상에서 데이터를 전송하는 데 사용되므로 프레임 헤더의 목적지 주소로 다음 라우터의 MAC 주소를 담아 특정 네트워크 내에서 데이터 패킷을 올바른 디바이스로 전달하는 데 사용된다.
IP 헤더의 목적지 주소는 먼 거리를 건너 최종 목적지까지 데이터를 전송하는 데 중점을 두는 반면, 프레임 헤더의 목적지 주소는 가까운 거리의 로컬 네트워크 내에서의 전송에 초점을 맞추는 것이다.
위와 같이 IP 주소와 Mac 주소를 이용하여 패킷이 목적지로 잘 향하도록 돕는 것이 Address Resolution Protocol, ARP이다.
ARP는 IP 주소를 물리적 주소인 Mac 주소로 대응시키기 위해 사용되는 프로토콜이다.
ARP 과정은 다음과 같다.
1. ARP 요청: 송신 컴퓨터는 목적지 IP 주소를 포함하는 ARP 요청 패킷을 네트워크 상에 브로드캐스트한다.
이 요청은 네트워크 상의 모든 장치에 전달된다.
2. ARP 응답: 목적지 IP 주소를 가진 장치는 자신의 MAC 주소를 포함하는 ARP 응답을 송신 컴퓨터에게 유니캐스트한다.
3. ARP 테이블 갱신: 송신 컴퓨터는 받은 ARP 응답을 통해 얻은 MAC 주소를 자신의 ARP 테이블에 저장한다.
이후 같은 IP 주소로 데이터를 전송할 때, 저장된 MAC 주소를 사용하여 통신할 수 있다.
네트워크에 연결하고 외부 서버에 요청하는 과정에서 ARP를 이용하여 패킷이 최종 목적지까지 도달하는 과정은 다음과 같다.
1. 나의 desktop이 네트워크에 연결된다. (DHCP로부터 ip를 할당받는다.)
2. 구글 메인 페이지(google.com) 요청을 보내 DNS로부터 구글의 ip정보를 받는다.
3. 나의 요청이 닿을 Router 의 Mac 주소를 알기 위해 ARP 요청을 보낸다.
1) 로컬 네트워크에 브로드캐스트하여 라우터 호스트를 찾는 요청을 보낸다.
2) 라우터가 이 요청을 받으면, 요청을 보낸 호스트에 자신의 Mac 주소가 담긴 응답을 보낸다.
3) 호스트는 자신이 보내야 할 라우터의 Mac 주소를 알았으니 모든 준비는 끝
4. 구글의 IP를 목적지로 한 패킷을 생성한다.
5. 패킷을 감싸는 Frame을 생성. 이 때 Frame의 목적지로 라우터의 Mac 주소 정보를 가지고 있다.
6. 패킷이 라우터에 닿으면, 이 때 부터 외부 네트워크를 통해 목적지까지 이동하게 된다.
7. 목적지로 이동하는 과정에서 라우터를 거칠 때마다, 그 다음 라우터의 Mac 주소를 가진 Frame 헤더로 교체된다.
8. 7의 과정을 반복하여 목적지에 다다른다.
참고로, 엔드포인트의 호스트가 자신이 연결된 네트워크의 라우터 Mac 주소를 모르는 경우, 위와 같이 브로드캐스트를 통해 자신의 로컬 네트워크 내의 라우터의 Mac 주소를 알아낸다.
그러나 외부 네트워크끼리는 브로드캐스트를 통해 서로의 Mac 주소를 알아내는 것이 아니라, 라우터가 신규로 설치되는 시점에 주변의 다른 라우터들과 통신하여 서로의 Mac 주소 정보를 교환한다고 한다.