본문 바로가기
📝Computer Science/network

네트워크 계층(2) _ IP, IP Address, CIDR, Subnet, NAT

by haegomm 2023. 7. 13.

 IP Datagram format 

  • ver: IP 프로토콜 버전
  • length: 패킷 총 길이
  • source IP address, destination IP address: sender IP 주소, receiver IP 주소
  • time to live: 라우터를 거칠때마다 -1씩 감소하다가 0이 되는 순간 패킷은 버려짐
    • 왜 time to live 필드를 만들었을까?
      • 포워딩 테이블이 잘못되었을 경우에 패킷이 무한루프를 돌 수 있다. 네트워크 자원을 소모하면서 무한으로 돌아다니게 되는데 이러한 경우를 방지하기 위해 time to live 필드가 만들어 졌다.
        한정된 시간동안만 네트워크 상에 존재하다가 사라져라 === time to live
  • upper layer: 올려 보낼 상위 계층의 프로토콜 명시 (TCP 또는 UDP)
    • receiver측에서 패킷을 어디로 올려보낼지 결정할 때 사용한다
  • data: TCP 혹은 UDP 세그먼트

 

IP 패킷 헤더의 크기는 20byte, TCP 세그먼트의 크기도 20byte이다. 어플리케이션에서 메시지가 전송되게 되면 원 메시지 크기에 부가적 크기 +a가 덧붙여져서 크기가 (40+a)byte가 되어 네트워크 상을 돌아다니게 된다. 대부분의 패킷 중 가장 비중이 큰 크기는 의외로 40byte인데 이건 ACK 패킷이다.

 


 IP Address (IPv4) 

  • NIC(네트워크 인터페이스)를 지칭하는 주소
  • 인터페이스 자체를 지칭하는 주소이고 현재 32bit 체계를 사용하면서 사람이 읽기 좋게 8bit씩 끊어서 10진수로 읽고 있다.

 

 Grouping Related Hosts 

  • Internet이란 Inter-Network 이다. 즉, 두 개 이상의 네트워크가 연결되어 있는 상태를 의미한다.
  • 호스트끼리 연결하는 것이 아니라 네트워크끼리 연결한다 따라서 네트워크 주소를 정해주어야 한다.

 

 Scalability Challenge 

  • 막무가내로 배정하게 되면 라우터안에 들어있는 포워딩 테이블이 커지게 된다. 호스트 별로 아웃풋 방향이 다르게 되는데 규칙 없이 배정하게 된다면 검색이 어렵게 되기 때문에 막무가내로 배정하지 않는다.

 

 Hierarchical Addressing : IP Prefixes 

그러면 어떻게 주소를 정할까?

 

  • IP 주소 계층화 → 32bit IP주소를 두 개념상으로 나눔
    • 네트워크 아이디 / 네트워크 안에 속한 호스트 아이디
    • 같은 네트워크에 해당하는 호스트들은 같은 네트워크 아이디를 가진다.
      • 같은 네트워크 안에 들어가있는 호스트들은 앞자리 24bit가 같도록 하고, 하위 8bit에서 고유함을 나타낼 수 있게 한다.
  • Subnet Mask
    • 네트워크 ID를 기계가 이해할 수 있도록 비트맵으로 표현한 것
    • 어디까지가 네트워크ID인지 호스트ID인지 나타냄

 

  • 따라서 포워딩 테이블 크기가 커지지 않을 수 있다.
  • 새로운 호스트 추가가 용이하다.

 

  • forwarding table은 prefix 단위로 엔트리가 나뉘어있음

 Classful Addressing 

인터넷은 네트워크의 집합이다. 각각의 네트워크는 각각의 prefix를 갖고 있다. 이 prefix의 규모는 네트워크 규모에 따라 달라져야하나 예전에는 class로 나눠서 배정하는 방식을 사용하였다.

 

⚡ Class A

  • /8 blocks
  • prefix로 8비트 사용
  • 2^24개의 호스트 주소 사용 가능
  • 2^7(128)개의 기관만 배정 가능

⚡ Class B

  • /16 blocks
  • prefix로 16비트 사용
  • 2^16개의 호스트 주소 사용 가능
  • 2^15개의 기관만 배정 가능

⚡ Class C

  • /24 blocks
  • prefix로 24비트 사용
  • 2^8개의 호스트 주소 사용 가능
  • 2^23개의 기관 배정 가능

 

  • Class A의 경우에는 128개의 기관만이 배정이 가능하고 배정되어도 많은 호스트를 다 사용하지 않는다 Class B의 경우에는 많은 기관에게 배정이 가능하나 최대 255개의 호스트만 배정할 수 있다
  • 비효율적이기 때문에 클래스의 개념이 없어지게 된다.

 

 Classes Inter-Domain Routing (CIDR) 

  • 8비트씩 고정해서 끊는 것이 아니라 네트워크 크기에 맞게 유동적으로 끊음
    prefix(subnet)은 유연하게 계층화 되어있음
  • 계층화된 네트워크 기반으로 라우터는 longest prefix matching을 한다.


 Subnets 

그림 1                                                                                                                그림 2  

서브넷

  • 같은 prefix를 가진, 인터페이스를 가진 디바이스 집합
  • 라우터를 거치지않고 접근이 가능한 호스트들의 집합(그림 1)
  • 라우터는 여러 개의 IP주소를 가지고 있음(그림 2)
    → 라우터는 하나의 서브넷에만 포함되어 있는 것이 아니라 여러 개의 서브넷에 걸쳐있음을 의미

 Network Address Translation (NAT) 

  • Network Address Translation
  • IPv4의 아이피 부족 문제를 해결하기 위해 고안된 기술
IPv4는 약 40억개이다. 전 세계적으로 고유한 숫자가 이만큼 뿐인데 이를 보완하기 위해서 IPv6을 출시했지만 모든 router를 교체해야하는 어려움으로 쉽게 옮겨가지 못하고 있다.

 

  • 내부 네트워크 주소라는 가상 주소 개념을 도입
  • 내부 네트워크에서 사용하는 고유 IP를 각 호스트에게 제공
  • 외부로 데이터를 보낼 때는 NAT로 내보냄 내부로 데이터가 들어올 때는 헤더 정보가 NAT을 거쳐 내부에서 통용되는 IP로 바뀜 이후 원하는 호스트로 데이터 전달

 

⚠️ 부작용

1️⃣ 내부 호스트의 서버 구축 어려움

  • 외부에서 특정 포트(웹서버 80)지칭하여 데이터를 전달하는 것이 어려울 수 있다
  • 서버의 역할이면 요청을 기다리고 있는 입장이다. 따라서 NAT table에 나의 고유한 주소가 없다.. 클라이언트 입장에서는 10.0.03 서버랑 통신하고 싶은데 NAT table에 내부 호스트(서버역할)의 고유 주소가 없기 때문에 1번이 나올지 2번이 나올지 3번이 나올지 알 수 없는 것이다.

2️⃣ 계층화 규칙의 무너짐

  • 네트워크 계층까지만 담당하는 라우터가 TCP 계층의 포트번호를 변경
    • NAT가 내외부 호스트를 연계하기 위해 네트워크 계층에서 packet 내부 세그먼트 header의 IP번호를 열람 packet header의 IP주소를 바꿈
    • → Network Layer 역할 규칙 위반
    • port번호는 전송계층에서 애플리케이션 계층으로 올라갈 때 socket을 구분하는 용도로 사용되고 있는데 IP를 구분하는 용도로 변질됨

참고자료

네트워크 계층 2

 

네트워크 계층 2

10. 네트워크 계층 2

velog.io

컴퓨터 네트워크 04 네트워크 계층 | KOCW 한양대 이석복

 

컴퓨터 네트워크 04 네트워크 계층 | KOCW 한양대 이석복

KOCW | 컴퓨터네트워크 | 한양대학교 | 2015-2 | 이석복 KOCW | 컴퓨터네트워크 | 한양대학교 | 2018-2 | 이석복 네트워크 계층을 Top-Down 방식으로 위에서부터 한 겹씩 까보면서 디테일하게 알아보는 강의

velog.io

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

 

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

※kocw에서 제공하는 이석복 교수님의 컴퓨터네트워크 수업을 듣고 필기한 내용입니다. 출처를 따로 밝히지 않는 한 전부 해당 수업에서 제공한 자료들이며 제가 작성한 부분에 있어 틀린 부분

broship.tistory.com