리눅스 네트워크 기반 패킷 흐름
- 이더넷이 전기적인 신호를 받아들입니다.
- 네트워크 인터페이스 카드(NIC)에 해당하는 네트워크 디바이스 드라이버가 비트를 바탕으로 프레임을 만듭니다. (Frame : 48bit)
- 이더넷 프레임 핸들러는 이 프레임의 헤더를 보고 MAC 주소(하드웨어 주소)를 확인하여 장치나 호스트를 식별합니다.
- 식별한 호스트가 맞을 경우 IP 로 보내고 해당 IP가 어떤 방식인지 확인하여 TCP 또는 UDP 로 전송하게 됩니다.
- 응용프로그램에서 소켓 인터페이스를 통해 각각의 데이터를 송/수신하게 됩니다.
2~4번의 과정이 OS에서 관리하는 부분입니다.
인터넷으로 기반으로 통신하기 위해서는 반드시 3가지 정보를 알아야 합니다
MAC Address,IP Address, Port
- MAC Address : 48비트 하드웨어 주소. 물리적인 네트워크 장치에 부여되며, L2에서 사용됩니다.
MAC 주소는 공장에서 NIC에 할당되며 전 세계적으로 고유합니다. (00:1A:2B:3C:4D:5E
)
- IP Address : L3에서 사용되며 데이터 패킷이 전송되는 경로를 결정하는데 사용합니다. IPv4는 32비트로 구성된 주소체계입니다. 주로 네트워크에서 사용되며 "x.x.x.x"로 표현됩니다.
- Port : 16비트로 구성되며 0~ 65535까지의 값으로 서비스나 응용프로그램이 특정한 네트워크 주소에서 통신할 수 있도록 식별합니다.
그렇다면 우리가 구글에 접속할 때 MAC Address(구글 서버 하드웨어 주소)는 모르는데 어떻게 접속할까요?
ARP 프로토콜
네트워크에서 IP 주소를 해당하는 MAC 주소로 매핑하기 위해 사용되는 프로토콜입니다.
ARP는 다음과 같은 주요 단계로 작동합니다:
- 호스트 A는 목적지 IP 주소에 대한 데이터를 전송하려고 할 때, 자신의 ARP 캐시 (ARP Cache)를 확인합니다. ARP 캐시는 이전에 요청한 IP 주소에 대한 MAC 주소 매핑을 저장하고 있습니다.
- 만약 ARP 캐시에 목적지 IP 주소에 대한 MAC 주소 매핑이 없다면, 호스트 A는 네트워크 상에서 ARP 요청 패킷을 브로드캐스트합니다. 이 ARP 요청 패킷에는 목적지 IP 주소가 포함되어 있습니다.
- 네트워크 상의 모든 호스트는 ARP 요청 패킷을 수신하고, 자신의 IP 주소와 비교하여 일치하는 경우에만 ARP 응답 패킷을 보냅니다. ARP 응답 패킷에는 MAC 주소가 포함되어 있습니다.
- 호스트 A는 ARP 응답 패킷을 수신하고, 이를 통해 목적지 IP 주소에 대한 MAC 주소를 알게 됩니다. 이후 호스트 A는 목적지 MAC 주소를 사용하여 데이터를 전송합니다.
ARP는 동일한 로컬 네트워크 상에서 동작하며, 네트워크 계층의 IP 주소와 데이터 링크 계층의 MAC 주소 간의 상호 변환을 수행합니다. ARP를 사용함으로써 호스트는 목적지 MAC 주소를 알고 효율적인 네트워크 통신을 할 수 있습니다.