네트워크 계층

라우터를 통해 라우팅과 포워딩을 수행하여 호스트간의 논리적인 통신을 제공하는 계층

라우터는 forwarding table을 갖고 있어 이를 통해 데이터 전달 ( 헤더값과 출력 링크 맵핑한 table )

하는 역할을 크게 두가지 영역으로 나눌 수 있다.

  • 제어 영역 : routing ( 패킷의 전송 경로를 결정하는 것. 현재는 SDN 중심으로 외부 장치가 라우팅을 수행한다. )

  • 데이터 영역 : forwarding ( 패킷이 라우터에 도착했을때, 라우팅 경로에 맞게 적절한 출력링크로 전달 시키는 것)

    라우터밖에 수행하지 못한다.

데이터 그램 : 네트워크 계층의 패킷으로 세그먼트들을 캡술화 한 것 (세그먼트 + ip header)

IP

네트워크 계층 프로토콜로 각각의 컴퓨터나 장치를 구분하기 위한 고유한 주소

IPv4

32비트 길이를 갖는 IP로 0.0.0.0 ~ 255.255.255.255의 경우의 수로 약 43억개의 주소를 표현 할 수 있지만 현재는 ip주소가 고갈된 상황이다.

IPv4 데이터 그램 구조

  • ver : IP의 버전 : 4 or 6

  • Header length : 헤더 길이

  • TOS : Type Of Service (서비스 타입) 로 데이터그램을 처리할때 QOS에 대한 정보를 제공하기 위해 사용

  • length : 데이터그램의 전체 길이

  • identifier : 데이터그램을 보낸 호스트를 식별하기위한 식별자

  • flags : 단편화를 위한 데이터로, 데이터 그램이 쪼개어졌는지, 뒤에 올 데이터가 더이상 있는지 없는 지 판별

  • offset : 재결합시에 사용할 목적의 데이터로 잘려진 원래 데이터 블럭 주소

  • TTL : 라우터를 지날 수 있는 홉 수 ( DNS의 TTL필드와 개념이 다르다. )

  • protocol : 상위 계층의 프로토콜 ( ex : TCP/UDP )

  • header checksum : ip헤더 비트 오류 여부 확인

  • src ip : 출발지 ip

  • dest ip : 목적지 ip

  • option, data (tcp header, payload)

데이터그램 단편화와 재결합

데이터그램의 identifier, flags, offset 필드를 이용하여 긴 길이를 가진 패킷을 나누어 전달하는 것 (링크별로 MTU가 상이하기 때문에 처리해주어야 한다.)

  • IP 단편화 : 패킷의 payload를 링크의 MTU - 헤더길이만큼 씩 나누고 나눈 payload에 각각 데이터 그램의 헤더정보를 복사하여 전달 하는 것 (라우터가 이루어진다.)

  • IP 재결합 : 나누어진 IP 데이터 그램을 순서에 맞게 결합 시키는 것 (PC에서 이루어진다.)

데이터그램 필드 사용 방법

  • Identifer : 각각의 패킷을 구별하기위한 구별 식별자 (일종의 seq)

  • flag : 내뒤의 패킷 여부를 나타내는 필드로 1이면 뒤에 패킷이 더 존재한다는 뜻이고, 0이면 뒤에 패킷이 더이상 없다는 뜻

  • offset : 나누어진 각 패킷의 데이터 시작 주소 / 8 이 저장되며, 재결합시 이 값의 *8을 해주면 데이터의 위치 주소가 된다.

위 3가지의 필드를 바탕으로 쪼개진 데이터그램을 재결합 시킨다.

클래스

IP주소는 대역에 따라 크게 5가지 영역으로 나눌 수 있다.

공인 주소사설 주소사이더 블럭

클래스 A

0.0.0.0 ~ 127.255.255.255

10.0.0.0 ~ 10.255.255.255

/8

클래스 B

128.0.0.0 ~ 191.255.255.255

172.16.0.0 ~ 172.31.255.255

/16

클래스 C

192.0.0.0 ~ 223.255.255.255

192.168.0.0 ~ 192.168.255.255

/24

클래스 D (멀티 캐스트)

224.0.0.0 ~ 239.255.255.255

클래스 E (연구/개발용)

240.0.0.0 ~ 255.255.255.255

  • 클래스 A는 네트워크 수가 128(2^7)개 , 호스트 수가 256^3개의 대역을 가질 수있다.

  • 클래스 B는 네트워크 수가 64(2^6)x256개, 호스트 수는 256^2개의 대역을 갖는다.

  • 클래스 C는 네트워크 수 32(2^5)x256^2개, 호스트 수는 256개의 대역을 갖는다.

이를 통해 어떤 주소가 다른 주소와 동일한 물리 네트워크에 속해 있는지를 판단할 수 있다.

분할하는 이유는 운영중인 서비스의 규모에 맞게 분할하여 사용하여 낭비되는 ip주소 자원을 최소화 하기 위해서이다.

서브넷

클래스 단위로 물리 네트워크를 분리하기에 적절한 네트워크 크기로 전부 할 수 없기 때문에 호스트 주소를 분할하여, 만든 부분망.

네트워크 규모를 줄여 브로드 캐스팅으로 인한 부하를 줄이기 위해서 분할한다. (송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식)

하나의 네트워크가 분할된 작은 네트워크이며 이렇게 네트워크를 분할하는 것을 서브네팅이라고 하고 이를 서브넷 마스크를 통해 분할 한다.

  • 서브넷 마스크 : 위에서 설명한것처럼 서브넷을 만들기 위해 호스트 주소를 분할한 영역을 표시하는 값. (네트워크 주소를 나타내는 비트 수를 명시한 값)

    204.0.1.129 의 ip가 있을때 서브넷 마스크가
    255.255.255.0 이라고 한다면 204.0.1까지가 네트워크 주소이라는 뜻으로
    204.0.1.0 ~ 204.0.1.255 까지 256개의 ip가 같은 네트워크라는 소리로 204.0.0.129는 그 사이의 129번째 컴퓨터
    
    서브넷 마스크가 255.255.255.128이라고 한다면, 204.0.1.129~ 204.0.1.255까지가 같은 네트워크라는 소리이다.

한마디로 서브넷 마스크 값은 현재 내가 속한 네트워크가 어디까지 네트워크 주소를 표현하는지 명시하는 값.

  • CIDR 표기법 : 서브넷 주소 체계 표기를 일반화 한 것으로 a.b.c.d/x 와 같은 방식의 표기

    여기서 x는 네트워크 주소의 비트 수이다.

    예를 들어 255.255.255.0의 서브넷 마스크를 갖는 주소는 a.b.c.d/24로 표기할 수 있다.

    서브넷 마스크의 각각 255의 값은 8비트이기 때문에 8*3 = 24 bit이기 때문이다.

    사이다 표기서브넷 마스크

    /1

    128.0.0.0

    /2

    192.0.0.0.0

    /3

    224.0.0.0

    /4

    240.0.0.0

    /5

    248.0.0.0

    /6

    252.0.0.0

    /7

    254.0.0.0

    /8

    255.0.0.0

    /9

    255.128.0.0

    /10

    255.192.0.0

    /11

    255.224.0.0

    /12

    255.240.0.0

    /13

    255.248.0.0

    /14

    255.252.0.0

    /15

    255.254.0.0

    /16

    255.255.0.0

    /17

    255.255.128.0

    /18

    255.255.192.0

    /19

    255.255.224.0

    /20

    255.255.240.0

    /21

    255.255.248.0

    /22

    255.255.252.0

    /23

    255.255.254.0

    /24

    255.255.255.0

    /25

    255.255.255.128

    /26

    255.255.255.192

    /27

    255.255.255.224

    /28

    255.255.255.240

    /29

    255.255.255.248

    /30

    255.255.255.252

    /31

    255.255.255.254

    /32

    255.255.255.255

구조

한개의 IP주소는 크게 보면 3가지 영역으로 나눌 수 있다.

  • 네트워크 주소 : 라우터가 받아들이는 주소 (현재 ICANN이 관리하며, 그 역할을 각 나라기관별로 분담)

  • 서브넷 주소 : 하나의 로컬 주소 범위를 가르키는 주소

  • 호스트 주소 : 각각의 컴퓨터를 구분/관리하기 위한 주소

IPv6

128비트 길이의 주소로 최대 3.4*10^38개의 주소를 표현할 수 있으며 , 이는 주소 한개를 콩으로 표현했을때 지구 전체를 5cm두께정도 뒤덮을 수 있을 정도의 개수라고 한다.

고정된 40byte크기의 헤더를 갖고 단편화 사용 금지이고 처리와 전송속도를 증가 시킨 프로토콜이다.

하지만 현재 여전히 IPv4주소 체계를 대부분 이용하는 데 그 이유는 IPv4의 라우터와 IPv6라우터는 서로 달라 같은 장치로 이용할 수 없어 모든 라우터를 교체하는데 천문학적인 비용이 들기 때문에 아직도 쉽사리 IPv6으로 전체 변경을 하지 못하고 있다.

IPv6을 이용한 통신을 하기 위해선 상대방도 IPv6을 사용 하고있어야 한다.

터널링

현재 IPv6의 라우터가 부족하기 때문에 중간에 IPv4라우터를 이용하기 위한 방법으로, IPv6 통신 중에 IPv4 라우터가 존재한다면 이를 터널이라 부른다.

터널을 경유하기 위해 IPv6데이터그램을 캡슐화하여 IPv4 데이터그램으로 전환해서 IPv4 라우터를 경유해 전송하는 방법이다.

Last updated