네트워크 계층에서는 IP 주소를 이용해 송수신지 대상을 지정하고, 다른 네트워크에 이르는 경로를 결정하는 라우팅을 통해 다른 네트워크와 통신한다.
- LAN에서 다루는 MAC 주소만으로는 부족하다.
- 패킷이 지구 반대편까지 날아가다.
- 다양한 경로가 있는데 패킷이 어떤 경로로 가야하는지 알려줘야 한다.
- 최적의 경로를 탐색하는 것이 라우터
- MAC 주소를 알아야 통신할 수 있는데 알 수가 없고, 미리 적어놓아야 한다.
- 이러한 이유로 MAC 주소만으로는 통신이 불가능하다.
- IP 주소 → 논리 주소
데이터 링크 계층의 한계
- 물리 계층과 데이터 링크 계층만으로는 LAN을 넘어서 통신하기 어려운 두 가지 이유
- 물리 계층과 데이터 링크 계층만으로는 다른 네트워크까지의 도달 경로를 파악하기 어려움
- 라우팅(routing) - 패킷이 이동할 최적의 경로를 결정하는 것
- 라우터(router) - 라우팅을 수행하는 대표적인 장비
- MAC 주소만으로는 모든 네트워크에 속한 호스트의 위치를 특정하기 어려움
- 네트워크에서 MAC 주소와 IP 주소를 함께 사용하고, 기본적으로 IP 주소를 우선으로 활용
인터넷 프로토콜 = IP
- IP 버전 4(이하 IPv4)와 IP 버전 6(이하 IPv6)
- IPv4를 대체로 사용, IPv6으로 바꾸려면 전세계적으로 동시에 장비를 바꿔야한다.
IP 주소 형태
- IP 주소는 4바이트(32비트)로 주소를 표현
- 숫자당 8비트로 표현되기에 0~255 범위 안에 있는 네 개의 10진수로 표기
- 각 10진수는 점(.)으로 구분되며, 점으로 구분된 8비트(0~255 범위의 10진수)를 옥텟(octet)
IP의 기능
- IP 주소 지정(IP addressing)
- IP 주소를 바탕으로 송수신 대상을 지정
- IP 주소 지정 → IP 주소를 바탕으로 송수신 대상을 지정
- IP 단편화(IP fragmentation)
- 전송하고자 하는 패킷의 크기가 MTU라는 최대 전송 단위보다 클 경우, 이를 MTU 크기 이하의
- 복수의 패킷으로 나누는 것
- MTU(Maximum Transmission Unit)
- 한 번에 전송 가능한 IP 패킷의 최대 크기
- IP 패킷의 헤더도 MTU 크기에 포함
- 일반적인 MTU 크기는 1500바이트, MTU 크기 이하로 나누어진 패킷은 수신지에 도착하면 다시 재조합
IPv4
- IPv4 패킷은 프레임의 페이로드로 데이터 필드에 명시
- IPv4 패킷의 핵심 필드
- 식별자
- 플래그
- 단편화 오프셋
- TTL
- 프로토콜
- 송신지 IP 주소
- 수신지 IP 주소
- 식별자
- 식별자(identifier)는 패킷에 할당된 번호
- 메시지 전송 과정에서 잘게 쪼개져서 수신지에 도착한 IPv4 패킷들이 어떤 메시지에서부터 쪼개졌는지를 인식하기 위해서 식별자를 사용
- IP 플래그
- 플래그(flag)는 총 세 개의 비트로 구성
- 첫 번째 비트는 항상 0으로 예약된 비트로 현재 사용되지 않음
- DF 비트(Don’t Fragment) - IP 단편화를 수행하지 말라는 표시
- 만일 이 비트가 1로 설정되어 있다면 IP 단편화를 수행하지 않고,
- 0으로 설정되어 있다면 IP 단편화가 가능
- 지정을 해도 결국 인터넷에 쪼개서 나감, 그래서 잘 안씀
- MF 비트(More Fragment) - 단편화된 패킷이 더 있는지를 나타냄
- 0이라면 이 패킷이 마지막 패킷
- 1이라면 쪼개진 패킷이 아직 더 있다는 것을 의미
- 예) 0 1 1 (X, D, M)
- 플래그(flag)는 총 세 개의 비트로 구성
- 단편화 오프셋
- 단편화 오프셋(fragment offset)은 패킷이 단편화되기 전에 패킷의 초기 데이터에서 몇 번째로 떨어진
- 패킷인지를 나타냄
- 단편화되어 전송되는 패킷들은 수신지에 순서대로 도착하지 않을 수 있음
- 따라서 수신지가 패킷들을 순서대로 재조합하려면 단편화된 패킷이 초기 데이터에서 몇 번째 데이터에 해당하는 패킷인지 알아야 함
- 패킷이 분할된 순서(어떤 것부터 붙여라, 받는 쪽에서 순서를 보장하지 않기 때문이다.)
- Offset - 어느 기준점을 기준으로 얼만큼 떨어져있냐?
- 첫번째 Offset - 0, 두번째 Offset 1500
- Offset - 어느 기준점을 기준으로 얼만큼 떨어져있냐?
- TTL
- TTL(Time To Live) - 패킷의 수명
- 멀리 떨어진 호스트끼리 통신할 때 패킷은 여러 라우터를 거쳐 이동할 수 있음
- 패킷이 하나의 라우터를 거칠 때마다 TTL이 1씩 감소하며, TTL 값이 0으로 떨어진 패킷은 폐기
- 홉(hop) - 패킷이 호스트 또는 라우터에 한 번 전달되는 것
- 즉, TTL 필드의 값은 홉마다 1씩 감소
- TTL 필드의 존재 이유는 무의미한 패킷이 네트워크상에 지속적으로 남아있는 것을 방지
- OS마다 TTL값이 다르다. TTL값을 통해서 OS를 판단하기도 한다.
- 프로토콜
- IP 패킷의 프로토콜은 상위 계층의 프로토콜이 무엇인지를 나타내는 필드
- 예) 전송 계층의 대표적인 프로토콜인 TCP는 6번, UDP는 17번
- 예) TCP, UDP, ICMP(대표적으로 Ping), IGMP
- 송신지 IP 주소와 수신지 IP 주소
- 송신지 IP 주소(Source IP Address)와 수신지 IP 주소(Destination IP Address)에서는 이름 그대로 송수신지의 IPv4 주소를 알 수 있음
- Total Length = 데이터 + IP 헤더의 크기
- IHL
- TOS 사용 안함 (DSCP) → 보통은 8개의 칸이 비워져있음
IPv6
- 이론적으로 할당 가능한 IPv4 주소는 총 232개로 약 43억 개
- 전 세계 인구가 하나씩 IP 주소를 가지고 있어도 부족한 숫자
- 주변의 IP 주소를 가질 수 있는 장치가 스마트폰, 데스크톱, 노트북, 냉장고, TV 등 여러 개
- 결국 약 43억 개라는 IPv4의 주소의 총량은 쉽게 고갈
- IPv6은 16바이트(128비트)로 주소를 표현할 수 있고, 콜론(:으로 구분된 8개 그룹의 16진수로 표기
- 할당 가능한 IPv6 주소는 이론적으로 2^128개로 사실상 무한에 가까운 개수를 할당
- IPv6 패킷의 핵심 필드
- 다음 헤더
- 홉 제한
- 송신지 IP 주소
- 수신지 IP 주소
- 홉 제한(hop limit)
- IPv4 패킷의 TTL 필드와 비슷하게 패킷의 수명을 나타내는 필드
- 송신지 IP 주소와 수신지 IP 주소
- 송신지 주소(source address)와 수신지 주소(destination address)를 통해 IPv6 주소 지정이 가능
ARP
- ARP(Address Resolution Protocol)는 IP 주소를 통해 MAC 주소를 알아내는 프로토콜
- 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아낼 수 있음
- 호스트 A와 B가 모두 동일한 네트워크에 속한 상태에서 A가 B에게 패킷을 보내고 싶다고 가정
- A는 B의 IP 주소(10.0.0.2)를 알고 있지만, MAC 주소는 모르는 상황에서 ARP가 동작
- ARP 요청
- ARP 응답
- ARP 테이블 갱신
- A는 B의 IP 주소(10.0.0.2)를 알고 있지만, MAC 주소는 모르는 상황에서 ARP가 동작
- ARP 요청
- 우선 A는 네트워크 내의 모든 호스트에게 브로드캐스트 메시지를 보냄
- 이 메시지는 ARP 요청(ARP Request)이라는 ARP 패킷
- ARP 요청은 ‘저 10.0.0.2와 통신하고 싶은데, 이 분의 MAC 주소가 무엇인가?’
- ARP 응답
- 네트워크 내의 모든 호스트가 ARP 요청 메시지를 수신하지만, B를 제외한 나머지 호스트는 자신의 IP 주소가 아니므로 이를 무시
- B는 자신의 MAC 주소를 담은 메시지를 A에게 전송
- 이 유니캐스트 메시지는 ARP 응답(ARP Reply)이라는 ARP 패킷
- B의 MAC 주소가 포함된 메시지를 수신한 A는 B의 MAC 주소를 알게 됨
- ARP 테이블 갱신
- ARP를 활용할 수 있는 모든 호스트는 ARP 테이블(ARP Table)이라는 정보를 유지합
- ARP 테이블은 IP 주소와 그에 맞는 MAC 주소 테이블을 대응하는 표
- A는 ①과 ② 단계를 통해 B의 MAC 주소를 알게 되면 다음 그림처럼 호스트 B의 IP 주소와 MAC 주소의 연관 관계를 ARP 테이블에 추가
- 이 ARP 테이블은 캐시(임시저장)이 되고 일정 시간이 지나면 삭제된다. 임의로 삭제할 수도 있다.
- 메모리 자원 아끼기 위해 삭제 → CDN(확장된 개념)
- 스위치도 MAC 주소를 캐시했다.
- 여기까지 이루어지면 앞으로 A는 B와 통신할 때 굳이 브로드캐스트로 ARP 요청을 보낼 필요가 없어짐
- 이제 알게 되어서 ping이나 메세지를 보낼 수 있다.
- 각각의 컴퓨터는 ARP 테이블을 가지고 있다.
- ARP 테이블 확인
- 윈도우 명령 프롬프트(CMD)나 맥OS 터미널에서 arp -a를 입력
통신하고자 하는 호스트 A와 B가 서로 다른 네트워크에 속해 있을 경우
- 만일 호스트 A가 라우터 A의 MAC 주소를 모른다면 ARP 요청
- ARP 응답 과정을 통해 라우터 A의 MAC 주소를 얻어 와서 이를 향해 패킷을 전송
- 호스트 A에서 패킷을 전달받은 라우터 A는 패킷을 라우터 B로 전달
- 만일 라우터 A가 라우터 B의 MAC 주소를 모른다면 한 번 더 ARP 요청 - ARP 응답 과정을 거쳐 라우터 B의 MAC 주소를 획득
- 라우터 B는 호스트 B에게 패킷을 전달
- 만일 라우터 B가 호스트 B의 MAC 주소를 모른다면 똑같이 ARP 요청 - ARP 응답 과정을 통해 B의 MAC 주소를 얻어와야만 비로소 호스트 B에게 패킷을 전달
- 디폴트게이트웨이
- 밖으로 나가는 첫 관문
- 같은 네트워크에 속해있을 때 ARP를 할 수 있다면 다른 IP주소에 대해서는 어떻게 가능한가?
- 모르는 IP 주소를 라우터에게 보낸다. 라우터의 MAC주소를 적는다.
- 자신의 네트워크 대역이 아니라면 라우터를 통해 밖으로 나간다.
- 해당 IP 주소를 아는 라우터가 나오면 그 라우터를 통해 받아온 값이 돌아온다.
- IP 단편화는 되도록 하지 않는 것이 좋음
- 불필요한 트래픽 증가와 대역폭 낭비
- 쪼개진 IP 패킷들을 하나로 합치는 과정에서 발생하는 부하도 성능 저하 요소
- IP 단편화 피하기
- IP 패킷을 주고받는 모든 호스트의 ‘처리 가능한 MTU 크기’를 고려
- ‘IP 단편화 없이 주고 받을 수 있는 최대 크기’만큼만 전송
- 경로 MTU(Path MTU) - 단편화를 피하는 방법은 경로 MTU만큼의 데이터를 전송
- 경로 MTU 발견(Path MTU discovery) - 경로 MTU를 구하고 해당 크기만큼만 송수신하여 IP 단편화를 회피
- ARP 패킷
- 송신자의 MAC 주소
- 수신자의 MAC 주소
- 헤더는 총 28바이트
- RARP - MAC 주소로 IP 주소를 알아온다.(리버스)
- 보통 예전에 사용한 기술
- 같은 네트워크 내의 컴퓨터의 MAC 주소를 아는데, IP 주소를 모를 때 사용했다.
- DHCP의 옛날버전, 예전에는 DHCP가 없어서 자신의 IP 주소가 뭔지 몰랐다.
- 명령어
- 스위치
- enable
- show mac address-table
- clear mac address-table dynamic
- PC
- arp -d
- arp -a
- 스위치
ICMP
- 네트워크 상태를 알리거나 오류 메세지를 전달하는 프로토콜
- ping이 대표적인 ICMP
- 제어 메세지를 주고 받아 통신이 잘 되었는지 확인
- Control Message
- 3 - Destination unreachable(목적지 도달할 수 없음, 세부 메세지로 누가 원인인지 파악 가능)
- 11 - TTL Exceed(TTL 초과)
- 8 - ping 요청
- 0 - ping 응답
- 대표 명령어 - ping, traceroute, tracert
- tracecert : 해당 주소를 찾기 위해 핑을 보내고 라우터에 대한 정보를 받음
- 이미 알고있는 테이블, 디폴트 게이트웨이 → 192.168.10.1
'네트워크' 카테고리의 다른 글
| [혼공네] 04. 전송 계층 (0) | 2026.09.26 |
|---|---|
| [혼공네] 03-2. IP 주소 (0) | 2026.09.26 |
| [혼공네] 02-4. 스위치(Switch) (0) | 2026.09.21 |
| [혼공네] 02-1. 이더넷(Ethernet) (0) | 2026.09.21 |
| [혼공네] 01-2. 네트워크 거시적으로 살펴보기 (0) | 2026.09.20 |