데이터 링크 계층의 한계점
LAN을 넘어서는 통신 한계
- 물리 계층과 데이터 링크 계층은 LAN 내에서의 통신을 주로 담당
- 따라서 다른 네트워크(LAN)로의 통신은 제한적이며, 다른 네트워크까지 도달하기 위해서는 네트워크 계층의 IP 주소와 라우터가 필요
다른 네트워크와의 통신 경로 설정 불가
- 다른 네트워크(LAN)에 속한 호스트끼리 통신할 때, 수많은 네트워크 장비를 통해 패킷이 이동할 최적의 경로를 설정하는 라우팅이 필요
- 물리 계층과 데이터 링크 계층의 장비로는 라우팅을 수행할 수 없음, 이는 네트워크 계층의 장비인 라우터가 담당
MAC 주소만으로 네트워크 전체 호스트의 위치 식별 불가
- MAC 주소는 장치마다 고유하지만, 로컬 네트워크 내에서만 유효하기에 다른 네트워크에 속한 호스트의 위치를 특정할 수 없음
- 따라서 MAC 주소와 IP 주소를 모두 활용해서 호스트의 위치를 특정
- IP 주소는 수신지 역할, MAC 주소는 수신인 역할
인터넷 프로토콜
네트워크 계층의 핵심적인 프로토콜, 일반적으로 IPv4를 의미
- IP(internet protocol)에는 IP버전4(IPv4)과 IP버전6(IPv6)이 있음
IP의 기능
- IP 주소 지정(IP addressing): IP 주소를 바탕으로 송수신 대상을 지정
- IP 단편화(IP fragmentation): 전송하고자 하는 패킷의 크기가 MTU라는 최대 전송 단위보다 크면, 패킷을 MTU 크기 이하의 여러 개의 패킷으로 나누는 것
- MTU: 한번에 전송 가능한 IP 패킷의 최대 크기를 의미
- IP 패캣의 헤더도 MTU 크기에 포함
- 일반적인 MTU 크기는 1500 바이트
- MTU 크기 이하로 나뉘어진 패킷은 수신지에서 다시 재조합됨
IPv4
IP 프로토콜 중 가장 널리 사용되는 버전
- IPv4 패킷은 프레임의 페이로드로 데이터 필드에 명시
- 식별자, 플래그, 단편화 오프셋 필드는 IP 단편화 기능에 관여
- 송신지 IP 주소, 수신지 IP 주소는 IP 주소 지정에 관여
IPv4 주소
- 4바이트(32비트)로 주소를 표현
- 숫자당 8비트로 표현되기에 0~255 범위 안에 있는 네 개의 10진수로 표기됨
- 10진수는 점으로 구분되며, 점으로 구분된 8비트를 옥텟(octet)이라고 함
IPv4의 주요 필드
식별자(Identification)
패킷에 할당된 번호
- IPv4 패킷이 여러 개로 쪼개져서 전송될 때, 수신지에 도착한 IPv4 패킷들이 어떤 메시지에서 쪼개졌는지 인식하기 위해 사용
플래그(Flag)
총 세 개의 비트로 구성된 필드
- 첫 번째 비트는 항상 0으로 예약된 비트 → 현재 사용하지 않음
- 두 번째 비트는 DF(Don’t Fragment)라는 이름이 붙은 비트로 IP 단편화를 수행하지 말라는 표시
- 해당 비트가 1로 설정되어 있으면 IP 단편화를 수행하지 않음
- 0으로 설정되어 있으면 IP 단편화 가능
- 마지막 비트는 MF(More Fragment)라는 비트로, 단편화된 패킷이 더 있는 지 여부를 나타냄
- 0이라면 해당 패킷이 마지막임을 의미
- 1이라면 쪼개진 패킷이 더 존재하는 것을 의미
단편화된 오프셋(Fragment Offset)
패킷이 단편화되기 전에 초기 데이터에서 몇 번째로 떨어진 패킷인지 나타내는 번호
- 단편화된 패킷들은 수신지에 순서대로 도착하지 않을 수도 있음
- 수신지에서 패킷들을 순서대로 재조합하기 위해서는 해당 패킷이 초기 데이터로부터 몇 번째 패킷인지 알아야하는데, 이때 단편화된 오프셋을 사용
TTL(Time To Live)
패킷의 수명을 의미
- 패킷은 여러 라우터를 거쳐 이동하는데, 패킷이 하나의 라우터를 거칠 때 마다 TTL이 1씩 감소하고, TTL이 0이되면 패킷을 폐기함
- 패킷이 호스트 또는 라우터에 한 번 전달되는 것을 홉(hop)이라고 함
- TTL 필드의 값은 홉마다 1씩 감소
- TTL 필드는 무의미한 패킷이 네트워크 상에 지속적으로 남아 있는 것을 방지하기 위함
프로토콜(Protocol)
상위 계층의 프로토콜이 무엇인지 나타내는 필드
- ex) tcp면 6번, udp면 17번
송신지 IP 주소와 수신지 IP 주소
송수신지의 IPv4 주소
IPv6
IPv4의 주소 부족 문제를 해결하기 위해 개발된 차세대 인터넷 프로토콜
- 이론적으로 할당 가능한 IPv4의 주소는 약 43억 개로 IPv4의 주소의 총량은 쉽게 고갈됨, 이러한 이유에서 IPv6가 등장
IPv6 주소
- IPv6는 16바이트(128비트)로 주소를 표현할 수 있음
- 콜론(:)으로 구분된 8개의 그룹의 16진수로 표기
- IPv6 주소는 이론적으로 무한에 가까운 개수를 할당할 수 있음
IPv6의 주요 필드
다음 헤더(Next Header)
상위 계층의 프로토콜을 가리키거나 확장 헤더를 가리킴
- IPv6의 기본 헤더는 IPv4에 비해 간소화 되어있는데, 특정 상황에서 더 많은 정보가 필요할 때 확장 헤더를 추가하여 유연하게 정보를 전달
- 기본 헤더와 페이로드 사이에 위치
- 다른 확장 헤더들과 꼬리를 물듯 연결될 수 있음
홉 제한(Hop Limit)
IPv4 필드의 TTL 필드와 동일하게 패킷의 수명을 나타냄
송신지 IP 주소와 수신지 IP 주소
송수신지 주소를 나타내는 IPv6 주소
IPv6의 단편화
IPv6에는 IPv4와 달리 기본 헤더에 단편화 관련 필드가 없고, 단편화 확장 헤더를 통해 단편화가 이루어짐
- 단편화 확장 헤더에도 다음 헤더 필드가 있음 또 다른 확장 헤더 혹은 상위 프로토콜을 가리키기 위함
- 예약(Reserved) 필드는 항상 0으로 설정되며, 사용되지 않음
- 단편화된 오프셋, M 플래그, 식별자 필드는 각각 IPv4의 단편화 오프셋, M 플래그, 식별자 필드와 같은 역할을 수행
ARP
IP 주소를 MAC 주소로 변환해 주는 네트워크 프로토콜
- 상대 호스트의 IP 주소는 알지만, MAC 주소는 모르는 경우에 사용
- 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아낼 수 있음
ARP의 특징
- 동일 네트워크에서만 사용: ARP는 IP 주소와 MAC 주소를 변환하기 때문에 동일 네트워크에서만 작동, 다른 네트워크와 통신할 때는 라우터가 ARP를 사용해 목적지 네트워크의 게이트웨이 MAC 주소를 알아냄
- IPv4 전용: ARP는 IPv4 네트워크에서만 사용, IPv6에서는 NDP(Neighbor Discovery Protocol)이라는 별도의 프로토콜을 사용
ARP 패킷
ARP 요청과 ARP 응답 과정에서는 ARP 패킷이 전송됨
- 오퍼레이션 코드(Operation): ARP 패킷의 유형
- 요청일 경우 1이고 응답일 경우 2로 설정
- 송수신지 하드웨어 주소(hardware address): 송수신지의 MAC 주소가 명시
- ARP 요청 시 이더넷 프레임의 수신지 MAC 주소에는 브로드캐스트 메시지를 의미하는 ff:ff:ff:ff:ff:ff가 명시
- ARP 요청 시 ARP 패킷의 수신지 하드웨어 주소에는 00:00:00:00:00:00이 명시
- 송수신지 프로토콜 주소(protocol address): 송수신지의 IP 주소가 명시
ARP의 동작 과정
1. ARP 요청
- 호스트 A가 IP 주소만 알고 있는 경우, 브로드캐스트로 "이 IP 주소를 가진 장치의 MAC 주소는 무엇인가요?"라는 메시지를 네트워크에 전송
- 이 메시지는 ARP 요청(ARP Request)이라는 ARP 패킷
2. ARP 응답
- 네트워크에 연결된 장치 중 해당 IP 주소를 가진 장치가 요청을 받고, 자신의 MAC 주소를 담은 메시지를 요청을 보낸 장치로만 유니캐스트로 전송
- 이 메시지는 ARP 응답(ARP Reply)이라는 ARP 패킷
3. ARP 캐시 테이블 갱신
- 호스트는 ARP가 변환한 IP와 MAC 주소 쌍을 ARP 캐시 테이블(ARP cache table)에 일정 시간 동안 저장
- 동일한 IP 주소로의 추가 요청 시 다시 ARP 요청을 하지 않고, 바로 MAC 주소를 가져옴
다른 네트워크에서의 ARP 동작과정
호스트들이 서로 다른 네트워크에 연결된 환경에서는 라우터의 MAC 주소를 알아내어 패킷을 전송
1. 라우터 A로 패킷 전송
- 호스트 A가 라우터 A의 MAC 주소를 모르는 경우 ARP 요청/전송 과정을 통해 라우터 A의 MAC 주소를 얻어오고, 패킷을 전송
2. 라우터 B로 패킷 전송
- 라우터 A가 라우터 B의 MAC 주소를 모르는 경우 ARP 요청/전송 과정을 통해 라우터 B의 MAC 주소를 얻어오고, 패킷을 전송
3. 호스트 B로 패킷 전송
- 라우터 B가 호스트 B의 MAC 주소를 모르는 경우 ARP 요청/전송 과정을 통해 호스트 B의 MAC 주소를 얻어오고, 패킷을 전송
참고:
혼자 공부하는 네트워크 - 예스24
혼자 해도 충분하다!1:1 과외하듯 배우는 네트워크 자습서『혼자 공부하는 네트워크』는 개발자의 필수 지식인 네트워크를 기본부터 제대로 학습할 수 있도록 돕는 입문서이다. 다수의 네트워
www.yes24.com
ZImyej1Hhf9pL_WkW6y_Gbdy9LnW6MJ8B36vaEgYcsMaAvsJEALw_wcB
https://velog.io/@octo__/IPv4와-Subnet-Mask
https://www.cloudns.net/blog/what-is-an-ipv6-address/
https://istrosec.com/blog/ipv6/
https://forum.vyos.io/t/ip6gre-and-fragmentation/11710/3
'CS > Network' 카테고리의 다른 글
[Network] 공인/사설 IP 주소, 동적/정적 할당, DHCP (0) | 2024.11.04 |
---|---|
[Network] IP 주소, 클래스풀 주소 체계, 클래스리스 주소 체계 (0) | 2024.11.02 |
[Network] 스위치 (0) | 2024.10.29 |
[Network] 허브 (1) | 2024.10.28 |
[Network] NIC와 케이블 (0) | 2024.10.25 |