[네트워크] 통신에 필수적인 프로토콜

diveintoo·2024년 3월 11일
0

📑 본 글은 <그림으로 배우는 네트워크 프로토콜>을 읽고 정리한 글입니다.

1. 이더넷

이더넷(Ethernet)

  • 현재 가장 주류인 데이터 링크 계층 프로토콜
  • 직접 연결된 장치나 동일한 네트워크 안에서 이루어지는 통신을 담당한다.
  • MAC 주소나 물리적인 규격(케이블이나 신호 등)을 정의한다.
  • 특히 LAN에서 주요한 프로토콜
  • 동일한 네트워크 내에서 같은 것을 사용해야 한다. → 이더넷을 사용하는 네트워크에 있는 각 장치는 이더넷으로 통신해야만 한다.

프레임(frame)

  • 데이터 링크 계층에서 다루는 PDU
  • 패킷(네트워크 계층 PDU) + 데이터 링크 헤더
  • 이더넷 프레임 = 데이터 링크 계층에서 이더넷 헤더가 추가된 경우

이더넷의 프레임 형식

TCP/IP에서 다루는 프레임은 대부분 이더넷 II 구격을 사용한다.

  • 페이로드
    • 상위 계층에서 전달되는 데이터 부분
    • MTU(Maximum Transmission Unit) : 데이터 링크 계층에서 정의하는 페이로드 크기의 최댓값
  • 프리앰블
    • 프레임의 시작을 알리는 8바이트의 특수한 비트 열
  • 목적지/출발지 MAC 주소
    • 데이터 링크 계층에서 사용하는 단말기 식별 주소
  • 타입
    • 한 계층 위에서 사용하는 프로토콜을 나타내는 2바이트 값
  • FCS(Frame Check Sum)
    • 프레임이 손상되지 않았는지 확인하기 위한 4바이트 필드
    • CRC(Cyclic Redundancy Check) 알고리즘으로 프레임의 각 필드를 계산하고 송수신 개체 각각이 비교한다.

MAC 주소

  • 데이터 링크 계층에서 단말기를 식별하기 위한 주소 정보
  • PC의 NIC나 네트워크 장치에 제조 시 할당된다.
  • 전 세계에서 고유한 값이다.
  • 6바이트(48비트) : 8비트씩 16진수로 변환하여 표기한다.
    • 상위 3바이트 : OUI(Organizationally Unique Identifier) / 제조 벤더별 식별자
    • 하위 3바이트 : 벤더 내에서 중복되지 않게 할당한 숫자

2. IPv4와 IPv6

2-1. IP의 기본

네트워크 계층 프로토콜 ← IP

  • 다른 네트워크와 통신하는 규칙을 정의한다.
  • 데이터의 출발지부터 최종 목적지까지의 통신에 대한 규칙(End-to-end)
  • 통신 경로 상의 데이터 링크 계층 프로토콜이 달라도 네트워크 계층 프로토콜이 그 차이를 흡수

IP의 세 가지 역할

  • IP 주소 정의
    • 네트워크 계층의 NIC는 각각 IP 주소를 가진다.
    • IP 주소는 네트워크 상의 단말기를 식별한다.
  • 라우팅(Routing)
    • 목적지 IP 주소까지 패킷을 전송
    • Hop-by-Hop : 다음 목적지까지만 파악해 라우팅하는 방식
    • 라우팅 테이블
      • 네트워크의 정보 - 가려면 어디로 가야하는지
      • 정보 기재 방식 : 정적 라우팅 / 동적 라우팅
  • IP 프래그멘테이션
    • 데이터 링크 계층에서 규정하는 MTU는 프로토콜마다 다르다.
    • MTU가 더 작은 구간을 지날 경우 IP 패킷을 분할해서 보내고, 후에 재구축한다.
    • BUT! 이 과정은 부하가 많이 걸려서 IP 헤더 플래그에서 DF(Don’t Fragment) 비트를 설정할 수 있다.

2-2. IPv4의 패킷 형식

패킷(packet)

  • 네트워크 계층의 PDU
  • IP 패킷은 IP로 캡슐화된 패킷 : IP 헤더를 붙인 것

IP 패킷의 형식

  • 버전
    • IP 버전을 나타내는 4비트 필드 ex) IPv4 ⇒ 4
  • 헤더 길이
    • IP 헤더 자체의 크기를 나타내는 4비트 필드
  • ToS(Type of Service)
    • 패킷의 우선순위를 나타내는 8비트 필드
    • QoS에서 이용된다.
  • 패킷 길이
    • IP 헤더와 IP 페이로드를 더한 길이
  • 식별자
    • IP 프래그멘테이션에 사용되는 2바이트 필드
    • 쪼개진 패킷은 같은 값을 가지고 있다.
  • 플래그
    • IP 프래그멘테이션에 사용되는 3바이트 필드
    • DF(Don’t Fragment) 비트
      • 분할하지 마라
    • MF(More Fragment) 비트
      • 분할된 패킷이 뒤에 더 있는지
  • 프래그먼트 오프셋
    • IP 프래그멘테이션에 사용되는 13비트 필드
    • 패킷을 분할할 때, 그 패킷이 분할되기 전 원래 패킷의 어느 위치에 있었는지
  • TTL(Time To Live)
    • 패킷의 수명, 생존 시간을 나타내는 8비트 필드
    • 패킷이 경유하는 라우터 등 L3 장치의 수
    • if TTL == 0: 패킷 폐기
    • 루프가 발생했을 때 패킷이 계속 남아있지 않게 하는 역할
  • 프로토콜
    • 페이로드 부분이 어떤 프로토콜로 구성되었는지 8비트
  • 헤더 체크섬
    • IPv4 헤더의 무결성을 확인 16비트
    • like 이더넷의 FCS
  • 출발지/목적지 IP 주소
  • 옵션
    • IP 패킷의 확장 기능..
  • 패딩
    • IPv4 헤더 길이를 맞추기 위함
    • 0으로 채워서 4바이트 채움

2-3. IPv4의 주소

IP 주소

  • 네트워크 상의 주소 : 통신을 하고 싶으면 필수로 설정해야한다.
  • 32비트 값 ⇒ 8비트씩 10진수로 변환한 뒤 .으로 구분한다.
  • 인터페이스마다 IP 주소를 할당한다. 여러 IP 주소도 할당 가능!
    • MAC 주소는 단말기당 하나를 할당한다.
  • 네트워크부(어떤 네트워크 소속인지) + 호스트부(네트워크 내 단말기)
    • 서브넷 마스크로 구분한다.

서브넷 마스크

  • IP 주소와 세트로 구성
  • 32 비트로 구성
    • 1인 비트 → 네트워크부
    • 0인 비트 → 호스트부
  • 10진수 표기
    • IP 주소처럼 10진수로 표기
    • ex) 192.168.100.1 255.255.255.0
  • CIDR 표기
    • ‘/’ 뒤에 1인 비트 수 기재
    • ex) 192.168.100.1/24

2-4. IPv4의 주소 분류

IP 주소는 역할에 따라 여러 가지로 분류할 수 있다.

클래스에 의한 분류

클래스 A~E까지 총 5개로 분류한다.

  • 클래스풀 어드레싱(classful addressing)
    • 클래스에 따라 IP주소를 할당하는 방식
    • 서브넷 마스크가 알아보기 쉬운 값(24,16,8) → IP 주소를 관리하기 편하다
    • BUT! IP 주소가 낭비되기 쉽다.
  • 클래스리스 어드레싱(classless addressing)
    • 서브넷 마스크를 자유롭게 설정해 IP 주소를 할당!
    • 낭비가 적은 주소 설계 가능
    • = CIDR(Classless Inter-Domain Routing)

프라이빗 주소와 글로벌 주소

네트워크상에서 IP 주소를 사용하는 장소를 기준으로 한다.

  • 프라이빗 주소
    • 기업이나 가정에서 자유롭게 할당할 수 있는 IP 주소
    • 중복이 가능하여, 인터넷 상의 장치와 통신할 때에는 글로벌 주소로 바꿔서 통신한다.
      • 라우터의 NAT(Network Address Translation) 기능
  • 글로벌 주소
    • 인터넷 상에서 고유한 주소로 정의되며, 중복되지 않는다.
    • ICANN에서 관리한다.

예약된 주소

특수한 용도를 가진 주소는 장치에 설정할 수 없다.

  • 네트워크 주소
    • 개별 네트워크 자체를 나타내는 주소
    • 호스트부 비트가 모두 0인 주소
    • ex) 192.168.1.1/24의 네트워크 주소 → 192.168.1.0
  • 브로드캐스트 주소
    • 네트워크 내 모든 장치를 나타내는 주소
    • 호스트부 비트가 모두 1인 주소
    • ex) 192.168.1.1/24의 브로드캐스트 주소 → 192.168.1.255
    • 브로드캐스트(broadcast)
      • 네트워크 내 모든 장치에 전송하는 통신
      • like DHCP
  • 멀티캐스트
    • 네트워크 내 특정 그룹에 속한 장치들과 통신
    • 멀티캐스트(multicast)
      • 네트워크 내 여러 장치를 대상으로 하는 통신

2-5. IPv6의 기본

IPv4 주소 고갈 문제로 등장!

IPv6의 특징

  • IP 주소의 확대
    • IP 주소가 128비트!
  • 성능 향상
    • 헤더 길이 고정, 프래그먼트 금지 → 라우터에 걸리는 부하 감소
  • IP 주소 자동 설정
    • DHCP를 사용하지 않고 IP 주소를 자동으로 설정
  • Mobile IP 지원
    • 접속 네트워크가 자주 바뀌는 이동 단말기에 네트워크 기능을 제공
  • 보안 기능 제공

IPv6의 패킷 형식

  • 버전
    • IP version = 6
  • 트래픽 클래스
    • IPv4의 ToS와 같은 기능
  • 플로우 레이블
    • 통신 흐름을 식별하는 데 사용됨 20비트
    • QoS에 활용
  • 페이로드 길이
  • 넥스트 헤더
    • IPv4의 프로토콜과 같은 기능
  • 홉 제한
    • IPv4의 TTL과 같은 기능
  • 출발지/목적지 IPv6 주소

2-6. IPv6의 주소

IPv6의 주소

  • 128비트
    • 16비트씩 ‘:’으로 구분하고 16진수로 표현
  • 표기 생략 규칙
    • 각 필드 선두에 오는 모든 0은 생략 가능
    • 0으로만 구성된 필드 연속되면 ::로 나타낼 수 있다.
    • 프리픽스와 인터페이스 ID
      • 프리픽스 → 네트워크부
      • 인터페이스 ID → 호스트부

IPv6의 주소 분류

  • 유니캐스트 주소
    • 일대일 통신에서 사용한다.
    • 글로벌 유니캐스트 주소
      • IPv4의 글로벌 주소
    • 유니크 로컬 주소
      • IPv4의 프라이빗 주소
    • 링크 로컬 주소
      • 하나의 네트워크에서만 사용할 수 있는 IPv6 주소
  • 멀티캐스트 주소
    • 멀티캐스트 주소도 특정 그룹에 대해서 통신할 때
    • 브로드캐스트 포함
  • 애니캐스트 주소
    • 여러 대의 단말기 중 네트워크 경로 상에서 가장 가까운 단말기가 응답한다.

0개의 댓글