안녕하세요! 제이덥입니다. "혼자 공부하는 네트워크" 도서를 통해 네트워크에 대해 학습하고, 공부한 내용을 공유하는 3주차입니다. 이번 섹션에서는 네트워크 계층의 필요성에 대해 설명하고, 그 필요성을 충족시켜주는 IP 프로토콜(IPv4, IPv6)에 대해 다룹니다. 이번 섹션을 통해 어떻게 먼 통신이 가능하게 되었는지 이해할 수 있어서 매우 유익했다고 생각합니다. 함께 들어가 보시죠.
*이 도서는 제가 직접 구매하여 작성한 글이며, 혼공단 11기 활동의 일환으로 학습 내용을 공유하고자 합니다. 도서와 활동에 대한 자세한 내용은 아래 Reference에서 확인하실 수 있습니다.
1️⃣ 데이터 링크 계층의 한계, 네트워크 계층의 필요성
데이터 링크 계층
- 데이터 링크 계층은 같은 LAN안에 호스트끼리 통신할 수 있는 MAC주소를 알 수 있는 기능을 지원함
- 다만, LAN선을 넘어서는 다른 네트워크와의 통신, 즉, 다른 도시나 국가간의 네트워크끼리 통신은 지원하기 어려움
데이터 링크의 한계점 :: 다른 네트워크와 통신할 수 없는 2가지 이유
첫 번째 이유
: 물리 계층+데이터 링크 계층을 이용해도 여전히 다른 네트워크까지의 도달 경로 확인이 불가능- 물리계층+네트워크 계층의 목적: LAN만을 취급 → 다른 네트워크와 통신하기 위해서는 라우팅이 필요하나 해당 기능을 지원하지 않음
- 라우팅이란? 패킷이 이동하는 최적의 경로를 결정하는 것
- 라우터(router) : 라우팅을 수행하는 장비로 네트워크 계층만 가지고 있음
- 정리 : 통신을 할 때 필요한 패킷은 지구 반대편으로 전달하기 위해서는 수많은 네트워크 장비를 이용함으로 라우팅을 통해 최적의 경로를 선택해야함. 하지만, 물리계층+데이터 링크 계층의 기능으로는 라우팅을 지원할 수 없으므로, 라우터를 가지고 있는 네트워크 계층이 필요
2 번째 이유
: MAC주소만으로도 모든 네트워크의 호스트의 위치를 특정하기 어려움- 모든 호스트, 모든 네트워크에 속한 MAC주소를 서로 알고 있기 어려움 → MAC주소로 모든 호스트를 특정하기 어려움
- 네트워크의 수신지를 특정할 수 있는 논리적 주소인 IP주소를 이용함으로써 해당 기능을 서포트 할 수 있음
구분 MAC 주소 IP 주소 계층 물리 계층, 데이터 링크 계층 네트워크 계층 역할 NIC마다 할당된 고정된 주소 DHCP와 같은 프로토콜을 통해 자동으로 할당 및 직접 할당 가능 개수 한 호스트가 복수의 MAC주소를 가질 수 있음 한 호스트가 복수의 IP주소를 가질 수 있음
- 결론 : 물리 계층과 데이터링크 계층으로만은 경로 설정과 수신지를 지정하는 것이 불가능하기 때문에 해당 기능을 지원하는 네트워크 계층이 필요
2️⃣ 인터넷 프로토콜
인터넷 프로토콜(IP 프로토콜)
- 정의: 데이터 패킷이 네트워크를 통해 이동하고 올바른 대상에 도착할 수 있도록 데이터 패킷을 라우팅하고 주소를 지정하기 위한 프로토콜 또는 규칙의 집합으로
- 네트워크 계층의 핵심적인 프로토콜로 IP 버전 4(IPv4), IP 버전 6(IPv6) 2가지 존재
- 일반적으로는 IPv4를 사용하기에 IPv4를 의미하는 경우가 많음
IPv4 주소 형태
- 크기 : 4바이트(32비트)
- 숫자당 8비트임으로 0~255 범위의 10진수로 표기하여 .으로 구분
ex) 128.27.1.1 - 구분된 숫자(0~255범위의 10진수)를 옥텟(octet)이라고함
IP의 기능
- RFC 791 : IP의 역할은 IP주소 지정과 IP 단편화 크게 2가지 기능을 가지고 있음
- IP 주소 지정(IP Addresing)이란 : IP주소를 바탕으로 송수신 대상을 지정하는 것
- IP 단편화(IP fragmentation) : 전송하고자 하는 패킷의 크기가 MTU라는 최대 전송 단위보다 클 경우 이를 MTU이하의 복수의 패킷으로 나눈것
- MTU(Maximum Transmission Unit) : 한 번에 전송 가능한 패킷의 최대 크기. 헤더가 포함되며 일반적으로 1500 바이트이고 수신지에서 재조합되어 사용
- 💡 RFC(Request for Comments) 문서
- 정의 : 네트워크/인터넷 신기술 제안 등을 남긴 문서로 오늘날까지 표준이됨
- RFC ### 형태로 적혀있으며, 수정/폐지가 되지 않으므로 찾고 싶은 내용은 RFC + RFC번호를 통해 쉽게 살펴보고 싶은 문서를 찾을 수 있음
IPv4
- IPv4의 패킷의 구성
- 옵션이나 패딩 필드는 헤더에 포함되어 있는 정보이지만 선택적으로 존재, 헤더 길이는 가변적
- 헤더에 핵신 기능인 IP 단편화, IP 주소 지정과 같은 데이터 필드 존재
- IP 단편화 기능 : 식별자, 플래그, 단편화 오프셋 필드
- IP 주소 지정 기능 : 송신지 IP주소, 수신지 IP 주소
- 중요 필드 해체 분석하기
- 식별자 :
- 정의 : 패킷에 할당된 번호
- 용도 : 재조합하기 위해 어떤 메시지로부터 나뉘어졌는지 인식하기 위함
- 플래그
- 정의 : 플래그를 통해 단편화 관련 정보를 제공하기 위함
- 세개의 비트로 구성됨
- 첫 번째 비트 : 0으로 예약된 비트(사용 X)
- 두 번째 비트 : DF(Don’t Fragment) 비트
- 값이 1 : 단편화 수행 X / 값이 0 : 단편화 가능
- 세 번째 비트 : MF(More Fragment) 비트
- 단편화 된 패킷이 더 있는지 나타내는 비트
- 값이 1 : 쪼개진 패킷이 더 있음 / 값이 0 : 마지막 패킷임을 의미
- 단편화 오프셋 :
- 정의 : 패킷이 단편화 되기 전 패킷의 초기 데이터에서 몇 번째로 떨어진 패킷인지 의미
- 용도 : 순서대로 도착하지 않을 수도 있어, 순서대로 조합하기 위해 해당 정보로 사용
- TTL(Time To Live) :
- 정의 : 패킷의 수명을 의미
- 동작원리 : 하나의 라우터를 거칠 때 마다 1씩 감소되며 0으로 떨어진 패킷은 폐기
- 홉(hop): 호스트 또는 라우터에 한번에 전달되는 되는 것을 말함
- 이 홉을 단위로 하나씩 감소함
- 용도 : 무의미한 패킷이 네트워크 상에 존재하는 것을 방지
- 프로토콜
- 정의 : 상위 계층의 프로토콜이 무엇인지 나타내기 위함
- 예) TCP 6번, UDP 17번 등이 표기
- 송신지 IP 주소 & 수신지 IP 주소
- 송수신지의 IPv4 주소를 특정할 수 있게 해줌
- 식별자 :
- IPv4의 패킷의 구성
IPv6
IPv4의 태생적 한계
- IPv4의 주소는 4바이트로 표현이 되고, 0~255사이의 숫자 4개로 이루어져있기 때문에 이론적으로 43억개의 주소를 할당할 수 있음 ⇒ 2011 모든 IP주소가 할당된 상황(위키백과)
- IP주소를 가질 수 있는 장치가 컴퓨터 뿐만이 아니라 스마트폰, TV, 냉장고, 노트북 등 다양해졌고, 1인당 1~2개의 IP주소는 가질 수 있게 되어 상당히 부족해졌음
- IPv4의 부족한 주소 수를 보충하기 위해 IPv6가 고안됨
- IPv4의 주소는 4바이트로 표현이 되고, 0~255사이의 숫자 4개로 이루어져있기 때문에 이론적으로 43억개의 주소를 할당할 수 있음 ⇒ 2011 모든 IP주소가 할당된 상황(위키백과)
IPv6 주소
- 크기 : 16바이트(128비트)
- 표현방식: 콜론(:)으로 구분된 8개 그룹의 16진수
- 표현 범위 : 이론적으노 2의 128으로 거의 무한에 가까운 수
- 예시 ) :
- 2001: 0230:abcd:ffff:0000:0000:ffff:1111
IPv6의 패킷
- IPv4보다 간소화된 형태, 40바이트로 고정적 크기를 가짐
- 핵심 필드 4가지
- 다음 헤더(next header) : 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가르킴
- 확장 헤더(extension header)란?
- IPv6의 헤더는 기본 헤더를 말하는데, 이 때 추가적인 헤더 정보가 필요할 때 추가적인 정보를 추가한 헤더를 확장헤더라고 부름
- 확장 헤더는 기본 헤더와 페이로드 사이에 위치
- 연결리스트처럼 또 다른 확장 헤더를 추가할 수 있음
- 확장 헤더의 종류
- 홉 갑 옵션(Hop-by-Hop Options) : 송신지에서 수신지에 이르는 모든 경로의 네트워크 장비가 패킷을 검사
- 수신지 옵션(Destination Options) : 수신자에서만 패킷을 검사하도록 하는 옵션
- 라우팅(Routing): 라우팅 관련 정보를 운반
- 단편화(Fragment) : 단편화를 위한 정보 저장
- ESP(Encapsulating Security Payload): 암호화 정보
- AH(Authentication Header) : 인증 정보
- 확장 헤더(extension header)란?
- 다음 헤더(next header) : 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가르킴
- 홉제한(hop limit)
- 역할 : 패킷의 수명을 나타내는 필드
- 송신지 IP 주소 & 수신지 IP 주소
- 송수신지의 IPv4 주소를 특정할 수 있게 해줌
- 단편화 확장 헤더를 이용해 이루어짐
- 단편화 확장 헤더의 구성
- 다음 헤더 필드 : 또 다른 확장 헤더 혹은 상위 프로토콜을 가르키기 위함
- 예약됨(reserved)/예약(reserve) : 0으로 설정, 사용되지 않음
- 단편화 오프셋(fragment offset) : 전체 메시지에서 현재 단편화된 패킷의 위치
- M 플래그(M flag): 1일 때 더많은 패킷이 존재함 / 0일 때 마지막 패킷
- 식별자(Identification): 동일한 메시지에서 단편회되었는지 아닌지 식별
2️⃣ ARP(Address Resolution Protocol)
- 정의 : 상대 호스트의 IP주소는 알지만, MAC주소를 알지 못하는 상황에서 쓰는 프로토콜로 동일 네트워크 내에 송수신 대상의 IP주소를 통해 MAC 주소를 알아냄
- 단계
- 1단계 : ARP 요청(ARP Request)
- 동일 네트워크내에 모든 호스트에게 브로드캐스트 메시지를 보냄
- 2단계 : ARP 응답(ARP Reply)
- 같은 IP주소를 가진 호스트는 자신의 MAC 주소를 다은 ARP 패킷을 보냄 → 보내고 싶은 호스트의 MAC 주소를 특정할 수 있게됨
- 3단계 : ARP 테이블 갱신(ARP Table)
- MAC주소 테이블을 대응하는 표
- ARP 패킷을 통해 얻은 호스트의 주소를 추가함 → 이를 통해 매번 ARP 요청을 보낼 수 있는 필요가 없게됨
- 시간이 지나면 삭제되고, 임의로 삭제 가능
- 1단계 : ARP 요청(ARP Request)
- 💡 ARP 패킷의 구성
- 오퍼레이션 코드(Opcode: Operation Code) : ARP 패킷의 유형 / 요청은 1, 응답은 0
- 송신지 하드웨어 주소, 수신지 하드웨어 주소 : 송수신지의 MAC 주소
- 송신지 프로토콜 주소, 수신지 프로토콜 주소 : 송신지 수신지의 IP 주소
- 다른 네트워크 일 경우 : 외부로 나가기 위한 장비(라우터)의 MAC주소를 알아내 전달, ARP 프로토콜 외에 다른 프로토콜도 사용
4️⃣ IP 단편화에 대한 깊은 이해
- IP 단편화는 되도록 하지 않는 것이 좋다
- 이유:
- 불필요한 패킷의 헤더 증가 → 트래픽 증가 / 대역폭 낭비
- 쪼개진 패킷을 하나로 합치는 과정에서 성능 저하 야기 할 수 있음
- 이유:
- 단편화를 피할 수 있는 방법
- 모든 호스트의 처리 가능한 MTU크기를 고려 → 경로 MTU(송수신 호스트와 거쳐가는 라우터의 MTU)의 크기만큼 전송
- 경로 MTU 발견(Path MTU discovery) :경로 MTU를 구할 수 있는 기술
- 모든 네트워크에서 이를 지원하고, 최대 MTU크기도 균일해 단편화가 자주 실행되지는 않음
- DF플래그를 통해 경로 MTU를 알아가게됨
- 모든 호스트의 처리 가능한 MTU크기를 고려 → 경로 MTU(송수신 호스트와 거쳐가는 라우터의 MTU)의 크기만큼 전송
Reference :
'혼공 학습단 > 혼자 공부하는 네트워크' 카테고리의 다른 글
[혼자 공부하는 네트워크] DNS와 우리가 사용하는 인터넷 주소 (0) | 2024.08.09 |
---|---|
[혼공 학습단] 혼공 네트워크 3주차 과제 (0) | 2024.07.21 |
[혼공 학습단] 혼공 네트워크 2주차 과제 (0) | 2024.07.14 |
[혼자 공부하는 네트워크] 스위치 (0) | 2024.07.14 |
[혼자 공부하는 네트워크] 허브 (0) | 2024.07.14 |