Computer Network-04. Network Layer(IP, Forwarding, MiddleBoxes)

CHO WanGi·2023년 12월 8일
0

Network

목록 보기
5/11

IP : Internet Protocol

IP는 네트워크 레이어의 프로토콜

IP Datagram format


각 줄은 32bit = 4 byte.
IP datagram의 필수 항목은 5줄, 헤더로 20바이트를 차지한다.

  • overhead : (TCP 20 bytes + IP 20 bytes = 40bytes) + app의 오버헤드

IP addressing

IP 주소는 호스트나 라우터 인터페이스(연결부)의 32-bit 식별자(ex> 801.12.~)
각 인터페이스는 각각 IP 주소를 부여받는다

subnet

서브넷은 전체 망의 일부분(부분망) -> 라우터 없이 통신 가능한 섬
각 서브넷은 네트워크의 IP 주소를 가짐

  • 서브넷의 있는 호스트의 아이피 주소가 223.1.1.1/24,
    /24는 앞에서 24개 비트는 서브넷을 나타내는 비트(subnet part)임을 의미,
    나머지 8비트는 서브넷 안의 호스트를 나타내는 비트(host part)

따라서 223.1.1.0 ~ 223.1.1.255(2^8)사이 256개의 아이피 주소를 사용할 수 있다.
다만 첫번째 주소인 223.1.1.0은 어떤 서브넷을 나타내는 네트워크 아이피,
마지막 주소인 223.1.1.255는 broadcast IP(예약 주소)로
실질적으로 호스트들이 사용 가능한 IP주소는 1~ 224 구간의 224개

IP체계

1. class

32-bit-IP는 5개 클래스로 분류 가능

  • A: 1 byte 네트워크 부, 3 byte 호스트 부, 첫 옥텟 0~127
  • B: 2 byte 네트워크 부, 2 byte 호스트 부, 첫 옥텟 128~191
  • C: 3 byte 네트워크 부, 1 byte 호스트 부, 첫 옥텟 192~223
  • D: 0 byte 네트워크 부, 4 byte 호스트 부, 첫 옥텟 224~239(멀티캐스트 용)
  • E: 0 byte 네트워크 부, 4 byte 호스트 부, 첫 옥텟 240~255(연구용)

외부와 분리된 서브넷을 사설망이라고 하며, 이 안에 있는 호스트들인 Private IP부여가 가능
A : 1.0.0.0 ~ 10.255.255.255
B : 172.16.0.0 ~ 171.31.255.255
C: 192.168.0.0 ~ 192.168.255.255

  • CIDR : Classless Inter Domain Routing
    클래스에 구애받지 않고, 네트워크 부분과 호스트 부분을 분할하여 사용하는 것
    예를 들어 22.22.22.5/24라는 IP의 앞 24비트는 네트워크 부분, 나머지 8비트는 호스트 부분

2. DHCP

Dynamic Host Configuration Protocol,
호스트가 어떤 네크워크로 참여하면, 그 안 DHCP 서버로부터 동적으로 IP주소를 할당

  1. 호스트 -> DHCP : DHCP discover
  2. DHCP -> 호스트 : DHCP offer
  3. 호스트 -> DHCP : DHCP request
  4. DHCP -> 호스트 : DHCP ack

이외에 첫번째 hop라우터의 IP 주소, DNS 서버 이름 & IP주소, 서브넷 마스크를 얻을 수 있다.

3.Hierarchical Addressing

IP 주소 구간의 할당은 ICANN 아래의 IANA가 담당,
5개의 Regional Registries(RR)에게 IP 구간을 주면, RR은 다시 지역 Registry에게 할당,
이 주소는 그 아래 고객들에게 할당

네트워크가 자신의 IP를 부여 받으려면, ISP로부터 주소 공간을 할당 받아야 함.(망이 계층적으로 구성되어 있기 때문)

  • route aggregation : ISP, 인터넷에게, 특정 숫자로 시작하는 IP주소로 가는 패킷은 나한테 다 줘! 같이 경로를 알려야 하며, 이후 ISP에서 각 네트워크로 패킷 전달

만약 기관이나 회사가 ISP 회사를 바꾸어도 네트워크 IP주소는 보통 그대로 가져감,
이경우 옮겨온 ISP가 인터넷에 advertising 하여, 원래 갖고 있던 특정 숫자와, 그 회사(기관)으로 가는 패킷도 달라고 함.

NAT

Network Address Translation
공인IP 주소(인터넷)와 사설 IP주소(내부망)를 서로 변환 시켜주는 기능

사설망 내 100대의 컴퓨터, 이 100대 컴퓨터에 각각 공인 IP주소를 주는게 아니고,
하나의 공인 IP(10.0.0.4)만 주고 외부망과 통신 하여, IP주소를 아끼면서 보안상 이점을 가져갈 수 있다.

동작 과정

  • outgoing datagram
    • 출발지 IP주소를 NAT의 IP주소로 변경(replace)
    • 출발지 포트를 NAT가 송신측 호스트와 1:1 대응되는 임의의 포트로 변경
    • NAT translation Table에 기록(remember)
  • ingoing datagram
    • NAT translation Table을 확인하여 해당하는 내부 호스트로 전달

그러나 IP 주소 고갈에 대한 근본적 해결책이 아님.
NAT은 네트워크 계층에서 동작하는데, Transport 계층에서 하는 포트지정을 여기서 다 해버림,
또 이 NAT 없이는 외부에서 내부 호스트로 접근할 방법도 없음
근데 많이 쓰이기도 하고 아직까지 쓸만 해서 사용함.(가정/기관용, 4G/5G망)

IPv6

32-bit 짜리 IPv4는 이미 고갈,
이에 대한 해결책으로 표현 가능한 주소의 범위를 넓이고 네트워크 성능 개선 목적을 위한 IPv6가 제안됨.

  • IPv4와 차이점
  1. checksum 없음(라우터의 처리과정의 속도 증가 목적)
  2. fragmetation/reassembly info 없음
  3. option 항목 없음(상위 계층과 라우터의 다음헤더 프로토콜을 가능하게 함)

IPv4 -> IPv6, 어떻게 할까?

  • Tunneling 사용
    IPv4 패킷의 Payload에 IPv6 패킷을 통째로 집어넣어 전송하는 것.

라우터는 크게 3가지로 분류 가능한데
1. IPv4 만 이해하는 라우터
2. IPv6 만 이해하는 라우터
3. 둘다 이해하는 라우터

IPv6 - 둘다 - IPv4 - 둘다 - IPv6 로 크게 뭉뚱그릴 수 있다.

Forwarding

라우터의 input port에선 두가지 forwarding 방식을 사용한다.

1. destination-based Forwarding

Longest Prefix matching 이라는 방법 사용하여 IP주소를 이용해 나갈 포트를 결정

https://velog.io/@yiwonjin/%EC%BB%B4%ED%93%A8%ED%84%B0%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-04-Network-Layer#ip--internet-protocol

2. Generalized Forwarding

match + action, 들어오는 패킷과 그에 대한 액션을 매칭,

  • match : 패킷 헤더의 값과, 어떤 값이 일치하는지 확인
  • action : match된 패킷에 대해 할일
  • prority: overlapping 패턴을 명확하게 함
  • counters

Open Flow - Flow Table


일반적인 포워딩의 예시가 Open Flow.
여기서 flow table의 엔트리는 사진과 같이 구성되어있음

즉 Open flow는 match/action에 다른값을 주어 4가지의 역할을 수행할 수 있다.

Middleboxes

NAT, 방화벽, 캐시, 로드 밸런서 등이 여기에 속함
초기 블랙박스 하드웨어 솔루션에서 Open API구현에 따라 화이트박스 하드웨어로 전환

  • SDN : 중앙 제어와 형상관리(변경사항 추적)
  • NFV : virtualization

IP Hourglass

네트워크의 지능부는 중간보단 끝단에 구현되는 것이 좋다.

그러나 현재는 중앙과 끝단 모두 네트워크의 지능부가 존재한다.

profile
제 Velog에 오신 모든 분들이 작더라도 인사이트를 얻어가셨으면 좋겠습니다 :)

0개의 댓글