network L3에 대해서 알아보자
IPv4주소의 기본 구조
IP에 의해 캡슐화되는 패킷을 IP패킷이라고 부릅니다. IP패킷은 다양한 제어 정보를 저장하는 IP헤더, 데이터 자체를 나타내는 IP 페이로드로 구성되어 있습니다.
IP 헤더 중 가장 중요한 필드는 송신지 IP 주소와 수신지 IP 주소입니다.
IPv4 주소는 IPv4 네트워크에 접속된 단말을 식별하는 IP입니다. 32비트로 구성되어 있고, 8비트씩 점으로 구분해서 10진수로 표현합니다. IP 주소는 네트워크 부분과 호스트 부분 2개로 구성되어 있습니다. IP = Network ID + Host ID
Network ID는 '어떤 IPv4 네트워크에 있는가'를 나타냅니다. Host ID 부분은 '어떤 단말인가'를 나타냅니다.
IPv4 주소와 서브넷 마스크를 조합해서 봄으로써, '어떤 IPv4 네트워크에 있는 어떤 단말인가'를 식별할 수 있습니다.

Subnet Mask
IP 주소와 Subnet Mask를 and 연산 수행하면, Network ID를 확인할 수 있다.
and 연산 결과가 Network ID가 컴퓨터 IP의 Network ID와 동일하면, 제대로 전송되었다고 판단합니다.
CIDR
서브넷 마스크에는 CIDR 표기법이 있는데, CIDR 표기는 IPv4 주소 뒤에 '/'와 서브넷 마스크의 1의 비트 수를 표기합니다. 예를 들어,, '192.168.0.10'이라는 IPv4 주소 뒤에 '255.255.255.0'이라는 서브넷 마스크가 설정된 경우 CIDR 표기에서는 '192.168.0.10/24'가 됩니다.
Broadcast IP 주소
브로드캐스트 주소는 Host ID의 비트가 모두 '1'인 IPv4 주소이며, 같은 네트워크에 존재하는 모든 단말을 나타냅니다. 예를 들어, '192.168.0.10'이라는 IP wnthdp '255.255.255.0'이라는 서브넷 마스크가 설정되었다면, '192.168.0.255'가 브로드캐스트 주소가 됩니다.
루프백 주소
Host 자신을 가리키는 IP 주소를 말합니다. 127.0.0.1이 이 IP주소입니다.
TTL과 단편화
TTL(Time to Live)는 패킷의 수명을 나타내는 1바이트 필드입니다. IP 세계에서는 IP 패킷의 수명은 '경유하는 라우터의 수'를 의미합니다. 경유하는 라우터의 수를 '홉(hop) 수'라 부릅니다.
TTL 값은 라우터를 경유할 때마다 1씩 감소하며, 값이 '0'이 되면 패킷이 파기됩니다.
패킷을 파기한 라우터는 'Time-to-live exceed'라는 ICMPv4을 반환하고, 패킷을 파기한 것을 송신지 단말에 전달합니다.
아래의 그림에서 패킷이 라우터 1 -> 3 -> 4 -> 6을 거칩니다. 이때 라우터 4의 MTU는 다른 라우터와 달리 1400bytes입니다. 패킷의 크기가 1500bytes이면, 이 라우터를 거칠 수 없기 때문에, 이때 패킷을 MTU이하의 조각으로 분할합니다. 이를 단편화라고 합니다.
단편화된 패킷은 최종 수신지에 재조립됩니다.
인터넷 설정 자동화를 위한 DHCP
우리는 인터넷 사용 전에 다음의 주소를 설정해주어야 합니다.
- IP 주소
- Subnet mask
- Gateway IP 주소
- DNS 주소
DHCP(Dynamic Host Configuration Protocol) 는 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜을 말합니다. DHCP 체계는 주소를 할당하는 서버와 할당 받으려는 클라이언트로 구성됩니다.
PC 전원이 켜지면, DHCP Server가 있는지 확인하기 위해서 Broadcast를 보냅니다. DHCP Server에 자신의 PC을 위한 IP주소를 요청하고, DHCP Server로부터 IP주소를 부여받으면 TCP/IP 설정은 초기화되고 다른 호스트와 TCP/IP를 사용해서 통신을 할 수 있게 됩니다.
ARP
MAC 주소는 NIC 자체에 내장되어 있는 물리적인 주소입니다.(데이터링크 계층)
IP주소는 OS상에서 설정한 논리적인 주소입니다.(네트워크 계층)
이 두 가지 주소를 접속해 데이터링크 계층과 네트워크 계층의 다리 역할을 하는 프로토콜이 ARP입니다.
어떤 단말이 데이터를 송신할 때, 네트워크 계층에서 받아들인 IP 패킷을 이더넷 프레임으로 캡슐화하여 케이블로 보내야 합니다. 하지만, IP 패킷을 받아들이는 것만으로는 이더넷 프레임을 만들기 위해 필요한 정보가 부족합니다. 송신지 MAC 주소는 자신의 NIC에 내장되어 있으므로 알 수 있지만, 수신지 MAC 주소에 관해서는 알 방법이 없습니다. 그래서 실제 데이터 통신에 앞서 ARP에서 수신지 IPv4 주소로 부터 수신 MAC 주소를 구합니다. 이를 주소 결정이라 부릅니다.
송신지 PC는 수신지 PC를 찾기 위해 ARP request로 같은 네트워크에 있는 모두에게 브로드캐스트로 패킷을 송신합니다. 수신지 PC가 이에 응답하는데, 이 패킷은 ARP Reply라고 합니다. ARP reply는 1:1 유니캐스트로 송신됩니다. 이때 프레임의 수신지 MAC 주소에는 Gateway의 MAC 주소를 기입합니다.
해당 게시물은 널널한 개발자TV 강사님의 강좌와 그림으로 공부하는 TCP/IP 구조 서적을 참고하여 작성하였습니다.
이해가 되지 않는 부분이 있거나, 틀린 내용이 있다면, 말씀해주세요. 😄