본문 바로가기

CS ﹒ Algorithm/(new)Network

TCP/IP (4) 네트워크 계층

 

TCP/IP의 네트워크 계층

기본적인 역할은 트랜스포트 계층에서 Datagram(UDP) 혹은 Segment(TCP)를 받아 IP패킷으로 캡슐화하거나, 수신 시에는 캡슐화를 해제하는 역할이다.

이더넷이나 무선 LAN에서 만들어진 네트워크를 함께 연결해 다른 네트워크에 있는 단말과의 연결성을 확보하는 것이 주 목적이며, 사용되는 프로토콜은 대부분의 경우 IP다.

 

 

 

1. IPv4

1981년 발행된 RFC791 Internet Protocol에 표준화된 Connectionless 타입의 프로토콜로 캡슐화 방식, 필드 등이 정의되었다.

 

1-1. IPv4 패킷 포맷

 

 

IP에 의해 캡슐화된 패킷을 IP 패킷이라고 부른다.

IP 패킷은 제어 정보를 설정하는 IP 헤더와 데이터 자체를 나타내는 IP Payload로 나뉜다.

 

(1) Version

IP 버전을 나타내는 4바이트 필드

 

(2) Header Length

헤더 길이를 나타내는 4바이트 필드

 

(3) ToS (Type of Sevice)

패킷의 우선도를 나타내는 1바이트 필드

우선 제어, 대역 제어, 혼잡 제어 등 QoS(Quality of Sevice)에서 사용한다.

ToS에 따라 어떻게 처리할지 미리 설정 가능하다.

6비트의 DSCP(Differentiated Sevices Code Point)드로 우선 제어, 대역 제어 설정과 2비트의 ECN(Explicit Congestion Notification, 혼잡 제어)으로 구성되어 있다.

 

(4) Total Length

헤더와 페이로드를 합친 패킷 전체 길이를 나타내는 2비트 필드.

패킷을 수신한 단말이 식별하기 위해 사용한다.

MTU(Maximum Transmission Unit)은 1500.

 

(5) Identification

패킷 교환 중 IP Fragmentation된 패킷을 식별하여 재결합하게 하기 위한 2바이트 패킷 식별자.

Identifier, Flag, Fragment Offset에 정보들이 저장되어 있다.

 

(6) Flag

3비트 필드로 1번째 필드는 비어있다.

IP 패킷을 Fragementation해도 될지 나타내는 역할을 한다.

 

(7) Fragement Offset

Fregmentation한 이후, 해당 패킷이 분열 이전 패킷의 몇 번째 패킷인지 의미한다.

 

(8) TTL Time To Live

패킷의 수명을 나타내는 필드로, 경유하는 라우터 1개당 1씩 차감된다.

마지막으로 패킷을 받고 파기한 라우터는 송신지로 Time to live exeed라는 패킷을 송신한다.

 

(9) Protocol

패킷의 구성 프로토콜을 나타내는 1바이트 필드

 

(10) Header Checksum

헤더의 정합성 체크를 위해 사용되는 2바이트 필드, 1의 보수 연산을 이요하는 방식

 

(11) source address/ destination address

네트워크에 연결되어 있는 단말을 나타내는 4바이트 식별 패킷.

NIC, Router, L2 Switch, Firewall 등 네트워크 통신 단말은 모두 IP 주소를 가져야 한다.

 

(12) Option

패킷 송신에 대한 확장 기능을 저장한 가변 필드.

 

(13) Padding

헤더가 4바이트의 정수 배가 되지 않는다면 패딩을 추가해 4바이트의 정수가 되도록 한다.

 

 

1-2. IPv4 / SubnetMask

 

 

(1) Subnetmask / Nework - Host

IPv4 주소는 network와 host로 파트가 나뉘어져 있다.

서브넷 마스크는 이를 구분하는 표시 역할로 1은 네트워크, 0은 호스트를 나타낸다.

 

(2) 10진수 표기법 & CIDR 표기법

- 10진수 표기법 : 32비트를 8비트씩 4개 그룹으로 나눠 10진수로 변환하고 점으로 구분해서 표기하는 IPv4 주소와 같은 방법.

ex ) 192.168.100.1 / 255.255.255.0

- CIDR 표기법 : IPv4 주소 뒤에 슬래시와 서브넷 마스크의 비트수를 표기하는 방식.

ex ) 192.168.100.1 / 192.168.100.1/24

 

 

 

1-3. IPv4 주소 분류

 

(1) 사용 용도에 따른 분류

 

클래스 A부터 클래스 E까지 5개 주소 그룹으로 분류되나, 일반적으로 사용되는 것은 A~C이다.

 

(2) Classful Addressing

위의 클래스에 기반해 주소를 할당하는 방식, 1옥텟 단위로 서브넷 마스크를 준비하여 네트워크 부분과 호스트 부분은 8비트 16비트 24비트 중 하나가 된다.

관리가 쉬우나 주소의 낭비가 심하다. 

 

(3) Classless Addressing

1비트 단위로 서브넷 마스크를 적용하는 방식이다.

서브네팅(subnetting)혹은 CIDR(Classless Inter-Domain Routing)이라고 한다.

네트워크/호스트 부분 외에 서브넷 부분이라는 개념을 도입하였다.

IP 주소를 최대한 효율적으로 사용할 수 있기 때문에 현재 주로 사용된다.

 

(4) 사용 장소에 따른 분류

- 글로벌 IPv4 주소

ICANN(Internet Coperation For Assigned Names and Numbers)라는 비영리 법인의 기능인 LANA와 하부 조직에 따라 계층적으로 관리된다.

또한 현재 IPv4 주소는 거의 고갈되어 할당에 제한이 있다.

 

- 프라이빗 IPv4 주소

조직 내에서만 유효한 주소로 인터넷 접속 시에는 NAT(Ntework Address Translation)을 이용해 글로벌 IPv4로 변환한다.

일반적으로 가정에서는 모뎀이 해당 역할을 수행한다.

 

- 예외 주소

> 네트워크 주소

호스트 부분의 비트가 모두 0인 IP주소

ex> 192.168.9.1이라는 IPv4 주소에 255.255.255.0이라는 서브넷 마스크가 설정된다면 192.168.100.0이 네트워크 주소.

 

> 브로드캐스트 주소

호스트 부분의 비트가 모두 1인 주소, 같은 내트워크에 존재하는 모든 단말.

192.168.100.1이라는 IP 주소에 255.255.255.0이라는 서브넷 마스크가 설정된다면, 192.168.100.255가 브로드캐스트 주소.

 

> 루프백 주소

자기 자신을 나타내는 IPv4주소, RFC1122로 표준회되었다.

1 옥텟이 127인 주소로, 통상 127.0.0.1/8을 사용한다

 

 

 

2. IPv6

IPv4의 주소 길이는 32비트이므로 최대 43억개 IP주소를 할당 가능하나 세계 인구수에 비해서는 턱없이 부족하고, 현재 거의 고갈된 상태이다.

따라서 IPv6이 등장했으며 RFC8200에서 표준화되었다.

 

2-1. IPv6의 패킷 포맷

 

 

(1) IPv4 헤더와의 차이

 

- 헤더 길이를 40바이트로 고정하여 이전처럼 가변으로 사용하지 않아 성능이 향상되었다.

- 의미 없는 필드를 최대한으로 줄여 처리 부하가 줄어 성능이 향상되었다.

 

(2) Version

IP 버전을 나타내는 4비트 필드

 

(3) Traffic Class

IPv6 패킷의 우선도를 나타내는 1바이트 필드.

IPv4의 ToS에 해당한다.

 

(4) Flow Label

통신 흐름을 식별하는 20비트 필드.

 

(5) Payload Length

페이로드의 길이를 나타내는 2바이트 필드.

헤더 길이가 고정이므로 페이로드 길이만 나타낸다.

 

(6) Next Header

헤더 바로 뒤에 이어지는 헤더를 나타내는 피륻로 확장 헤더가 있다면 나타내고, 없다면 프로토콜 번호를 나타낸다.

 

(7) Hop Limit

홉 수(라우팅 가능한 수)를 나타내는 1바이트 필드

 

(8) Source Address / Destination Address

기존과 같다.

 

 

 

2-2. IPv6 Address / Subnet prific

 

 

IPv6 주소는 128비트로 총 340간 (340조 * 1조 * 1조)의 IP 주소를 할당할 수 있다.

128비트를 16비트씩 콜론을 이용해 8개로 구별해 16진수로 표현한다.

 

(1) subnet prefix, interface ID

subnet prefix는 네트워크를 식별하고, interface ID는 단마릉ㄹ 식별한다.

CICDR 표기와 같다.

ex ) 2001:db8::1/64

 

(2) 표기 규칙

IPv6 주소는 길이가 너무 길기 때문에, RFC4291과 RFC5952로 표기 규칙이 표준화되었다.

 

- 각 필드 맨 앞 연속한 0은 생략할 수 있다.

ex ) 2001:0db8:0021:0001:0001:0001 -> 2001:0db8:21:1:1:1

- 여러 필드에 걸쳐 0이 이어질 때는 ::으로 생략할 수 있다.

ex ) 2001:0db8:0000:0000:0000:1 -> 2001:0db8::1

 

단, :: 생략에는 조건이 있다.

1. ::으로 생략할 수 있는 필드가 여러 번 있어도 단 한 번만 생략 가능하다.

2. 하나의 필드만 0000인 것은 생략할 수 없다.

3. 적용할 수 있는 곳이 여러 위치일 경우 가장 많이 생략 가능한 부분을 생략한다.

4. 생략할 수 있는 여러 위치의 길이가 같다면 가장 첫 위치에서 생략한다.

5. 소문자로 표기한다.

 

 

 

 

2-3. IPv6 주소 종류

(1) 유니캐스트 주소

1:1 유니캐스트 통신에서 사용하는 IPv4 주소이며, 일반적인 클라이언트와 서버간의 패킷 교환은 모두 유니캐스트 통신이다.

 

- 글로벌 유니캐스트 주소(2000:/3)

IPv4의 글로벌 IPv4 주소와 동일한 개념이다.

인터넷상에서 고유한 IPv6 주소로, 앞의 3비트가 001인 주소로 16진수 표기시 2000:/3이 된다.서브넷 프리픽스는 ISP에서 할당한 글로벌 라우팅 프리픽스와 조직 내에서 할당하는 서브넷 ID로 구성되어 있다.

 

- 유니크 로컬 주소(fc00::/7)프라이빗 IPv4 주소(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)와 동일한 개념으로 조직 내 유일한 주소이다.클러스터 서비스에서서 사용하는 Heartbeat용 네트워크나 Strorage용 등 내부에서만 통신하는 경우 사용한다.앞의 7비트가 1111110인 주소로, 16진수 표기시 fc00::/7이 된다.8비트째는 로컬에서 관리되는지를 나타내는 비트로 0번은 미정의, 1은 로컬을 나타낸다.글로벌 ID는 사이트를 식별하는 40비트 필드로 고유성 보장을 위해 RFC4193에 정의된 계산 방법을 사용한다.이후 16비트의 서브넷 ID와 64비트의 인터페이스 ID가 이어진다.

 

- 링크 로컬 주소(fd80::/10)링크 로컬 주소는 같은 IPv6 네트워크에서만 통신할 수 있다.IPv4의 ARP에 해당하는 NDP와 라우팅 프로토콜인 OSPFv3에서 사용한다.

 

(2) 멀티캐스트 주소

IPv4 주소의 클래스 D에 대응하는 주소로, 특정 그룹에 대한 통신에 사용한다.동영상 송신, 주식 거래, 라우팅 프로토콜, NDP에서 사용된다.IPv4의 브로드캐스트도 멀티캐스트의 일부로 포함된다.앞 8비트가 모두 1이고, 16진수로는 ff00::/8이다.이어지는 4비트는 멀티캐스트에 도달하는 범위, 112비트는 멀티캐스트 그룹을 식별한다.

 

(3) 애니캐스트 주소

여러 단말에 공유되어있는 글로벌 유니캐스트 주소로, 일반 글로벌 유니캐스트 주소와 겉으로 식별할 방법이 없어 명시적으로 설정해야 한다.경로상 가장 가까운 서버로 전송되기 때문에 부하 분산과 DDoS 공격 국소화에 이점이 있다.

 

 

 

3. 라우팅

 

Router와 L3 Switch는 수신지 IP 주소, 수신지 네트워크 정보, 네트워크 홉 정보를 관리하여 전송 대상지를 변경한다.이 때 변경하는 기능을 라우팅, 수신지를 관리하는 표를 Routing Table이라고 한다.

 

3-1. 라우팅의 작동 순서

 

(1) A가 IP주소에 A의 IP(192.168.2.1) 주소, 수신지 IP 주소에 B의 IP 주소(192.168.2.1)를 설정하고 헤더를 캡슐화한다.(2) B의 IP주소는 알고 있으나 MAC 주소를 모르기 때문에 ARP 과정을 거친다. 그러나 당연히 B의 MAC 주소는 내부망에 존재하지 않는다. 따라서 게이트웨이의 MAC 주소를 등록하게 된다.(3) 게이트웨이(ISP)에 해당 패킷(Ethernet Frame)을 보낸다.(4) 게이트웨이가 목적지 IP 주소를 검색하고, 찾지 못하면 다른 라우터에 전파한다.(5) 각 라우터는 설정된 경로에 따라 목적지 게이트웨이에 패킷을 전송한다.(6) 수신자의 게이트웨이 라우팅 테이블에서 IP 테이블을 확인한다.(7) 게이트웨이는 연결된 인터페이스로 송출하고, 연결된 스위치에서 MAC 주소를 검색하여 B에게 전달한다.

 

3-2. 라우팅 테이블

 

(1) 정적 라우팅

수동으로 테이블을 만드는 방법으로, 사용자가 수신지와 홉을 직접 설정한다.소규모 네트워크 환경에서는 더 적합할 수 있다.

 

(2) 동적 라우팅

근접한 라우터끼리 경로 정보를 교환해 자동으로 라우팅 테이블을 만든다.규모가 커질수록 동적 라우팅이 유리하며, 수신지에 장애가 발생해도 자동으로 우회 경로를 탐색하기 때문에 장애 내성이 향상된다.

 

3-3. 라우팅 알고리즘

 

(1) Distance Vector Time

거리와 방향에 기반해 경로를 계산하는 라우팅 프로토콜로 거리는 홉 수(라우터 수) 방향은 출력 인터페이스를 나타내며, 라우터 경유 횟수가 최적 경로의 판단 기준이다.

 

(2) Link State Type

링크 상태에 기반해 최적 경로를 계산하는 라우팅 프로토콜로, 각 라우터가 자신의 링크 상태, 대역폭, IP 주소 등 다양한 정보를 교환해 DB를 만들고 그것을 기반으로 라우팅 테이블을 만든다.

 

(3) Metric

수신지 네트워크까지의 논리적 거리를 나타낸다.

 

 

3-4. 라우팅 프로토콜

 

AS(Autonomous System)을 기준으로 IGP/EGP로 나뉜다.AS는 특정 기관이나 단체(인터넷 사업자, 기업 등)이 운영하는 독립적인 네트워크를 의미한다.

 

(1) IGP

AS 내부에서 사용하는 라우팅 프로토콜로 RIP/OSPF/EIGRP가 있다.

 

- RIP (Routing Information Protocol)

: 디스턴스 벡터 타입의 라우팅 프로토콜이나 현재는 거의 사용되지 않는다.

라우팅 테이블 자체를 정기적으로 교환하기 때문에 대규모 네트워크에서는 비효율적이다.

메트릭으로는 홉 수를 사용하며, 이 때문에 경로 도중 대역폭이나 기타 요건을 고려하지 않는 문제가 있다.

 

- OSPF(Open Shortest Path Fast)

: 링크 스테이트 타입의 라우팅 프로토콜이다.

중규모 ~ 대규모 네트워크 환경에서 자주 사용되며 각 라우터가 링크 상태, 대역폭, IP 주소, 서브넷 마스크 등 정보를 교환하며 Link State Database(LSDB)를 만든다.

RIP와 달리 변경이 있을 때만 업데이트하며 작은 패킷으로 작동을 확인하여 대역 낭비를 줄였다.

핵심 개념은 Area로, LSDB가 너무 커지지 않도록 Area로 나눠 각 Area끼리만 DB를 공유하도록 한다.

메트릭은 비용을 사용하며 기본적으로 100(대역폭)/Mbps의 결과를 기준으로 한다.

ECMP(Equal Cost Multi Path)라고 하며 장애 내구성 향상 및 대역 확장에 유리하다.

 

- EIGRP(Enhanced Interior Gateway Routing Protocol)

: 디스턴스 벡터 타입 프로토콜을 확장한 형태로, 최초 테이블 생성 과정은 RIP와 비슷하나 패킷으로 장애 여부를 판단하고 매트릭은 대역폭과 지연을 사용한다.

10,000/최소 대역폭(Mbps)으로 대역폭을 계산하고, 지연은 ms/10으로 계산하여 이 둘을 더한 값에 256을 곱한 것이 EIGRP의 매트릭이 된다.

기본 동작은 ECMP로 매트릭이 동일하다면 경로를 모두 사용해 부하를 분산한다.

 

(2) EGP

AS와 AS를 연결할 때 사용하는 Routing protocol이다.

BGP(Border Gateway Protocol)을 사용한다.

 

- AS Number

인터넷에 전송된 패킷은 라우터가 BGP를 교환하는 것으로 만들어진 전 세계의 경로 정보를 사용해 수신지 IP 주소를 가진 단말로 전송된다. 이 때 AS를 식별하는 번호를 AS번호라고 하며 ICANN과 하부 조직이 관리하며, 프라이빗 AS 번호는 조직 내에서 자유롭게 사용 가능하다.

 

- Routing Algorithm

디스턴스 벡터 타입 프로토콜을 사용하며, 평소에는 KeepAlive로 생사 여부를 감지하여 최선 경로로 전파한다.

 

- 최선 경로 선택 알고리즘

경로 제어에 Attribute라는 속성값을 사용한다..

NEDT_HOP, WEIGHT, LOCAL_PREF, AS_PATH, ORIGI, MED 등의 속성을 이용해 최선 경로를 계산한다.

 

 

3-5. 라우팅 테이블 규칙

 

(1) Longist Match

수신지 IP 주소 조건에 맞는 경로가 몇 가지 있을 때, 서브넷 마스크가 가장 긴 경로를 사용한다.

 

(2) 경로 집약

라우터가 매번 테이블에 등록된 경로를 체크하면 라우터의 부하가 늘어나기 때문에, 넥스트 홉이 같은 여러 경로를 모아 경로 수를 최소화한다.

넥스트 홉이 같은 경로의 네트워크 주소를 비트로 변환해, 공통 비트까지 서브넷 마스크를 이동시키는 방식이다.

대표적인 예시가 0.0.0.0/0으로 수신지 IP 주소에 합치하는 경로가 없는 경우 모두 Default Gateway로 통일해버린다.

 

(3) AD(Administrative Distance)

라우팅 프로토콜별로 정렬된 우선도가 같으면, 값이 작을수록 우선도가 높다.

완전 동일한 경로에 여러 라우팅 프로토콜을 적용할 수 없기 때문에 우선도가 높은 경로만 라우팅 테이블에 등록한다.

 

3-6. VRF (Virtual Routing and Forwarding)

 

1대의 라우터에 독립된 여러 라우팅 테이블을 갖도록 가상화하는 기술이다.

VRF로 만들어진 테이블은 완전히 독립되어 같은 IP 서브넷을 사용해도 문제가 없다.

하드웨어 성능에 의존하나 최근 라우터는 성능이 높아져서 VRF로 관리 라우터 수를 최대한 줄이는 추세이다.

 

 

3-7. 정책 기반 라우팅

 

라우팅 테이블에 의존하지 않고 송신지 네트워크나 특정 포트번호 등 다양한 조건에 기반해 대상지를 전환한다.

폭 넓고 유연한 전송 처리가 가능하나 지연 발생이 쉽고 처리 부하가 걸리기 쉽다.

 

 

 

 

 

4. IP 주소 할당 방식

 

4-1. 정적 할당

 

단말별로 수동으로 IP 주소를 설정하는 방식으로, 서버나 네트워크 기기는 대부분 이 방식을 택하며 사무실 네트워크 등 소규모 환경에서도 사용한다.

단말 수가 늘어나면 관리가 불가능할 정도로 복잡해진다.

 

 

4-2. 동적 할당

 

단말에 자동으로 IP를 설정한다.

DHCP(Dynamic Host Configuration Protocol) 외 몇가지 프로토콜을 이용하여 자동화한다.

 

(1) IPv4

DHCPv4를 사용하며 DHCPv4 서버에서 단말에 대해 네트워크에 필요한 IPv4 주소, 디폴트 게이트웨이, DNS 서버 IP 주소 등을 배포한다.

DHCPv4는 브로드캐스트와 유니캐스트 양쪽을 사용하며 UDP로 교환한다.

DHCPv4 클라이언트는 설정을 요청하고, DHCPv4 서버는 설정을 응답한다.

 

(2) IPv6

- SLAAC (Stateless Address Auto Configuration)

라우터에서 배포되는 네트워크 정보를 기반으로 IPv6 주소를 자동 설정하는 기능으로, RFC4863으로 표준화.

멀티캐스트와 유니캐스트 양쪽을 사용하며 ICMPv6으로 교환하고, Router Solicitation이라고 부르는 멀티캐스트 패킷을 사용해 네트워크 정보를 요청하고, SLAAC 서버는 Router Advertisement라는 패킷을 이용해 정보를 응답한다.

 

- DHCPv6

DHCPv6 서버에서 단말에 네트워크 설정을 배포한다는 점은 DHCPv4와 같으나 두 프로토콜은 호환성이 없고 사용하는 UDP 번호도 다르다.

라우터와 RS/RA를 교환한 후 멀티캐스트 DHCPv6 패킷을 사용해 DHCPv6 서버를 찾는다.

statless mode은 경우 DHCPv6 서버가 옵션 설정만 배포하고 주소는 SLAAC에서 생성한다.

디폴트 게이트웨이는 RA 정보를 기반으로 설정한다.

 

 

4-3. DHCP 릴레이 에이전트

 

 

모든 네트워크 서버에서 DHCP 서버를 준비할 수 없기 때문에 제공하는 기능이다.

DHCP 패킷을 유니캐스트로 변환하는 기능으로 DHCP 클라이언트로부터 첫 번째 홉에 있는 라우터에서 유효하다.

 

 

 

 

5. NAT

 

 

IP 주소를 변환하는 기술로 부족한 글로벌 IP를 절약할 수 있고, 같은 네트워크 주소를 가진 시스템 사이에서 통신할 수 있는 등의 기능을 제공한다.

변환 전후의 IP 주소 및 포트 번호를 NAT 테이블에서 관리한다.

 

5-1. 정적 NAT

 

내부와 외부의 IP 주소를 1:1로 묶어서 변환하며, 좁은 의미의 NAT은 정적 NAT을 뜻한다.

NAT 테이블에 내부/외부 IP 주소를 묶는 NAT entry를 가지고 있어서 해당 엔트리에 따라 변환한다.

서버를 공개할 때, 특정 단말이 특정 ip 주소로 인터넷과 데이터를 교환할 때 사용한다.

 

5-2. NAPT (Network Address Port Translation)

 

내부와 외부의 주소를 n:1로 연결하여 변환한다.

내부 IP주소/포트번호 , 외부 IP주소/포트번호를 묶는 NAT 엔트리를 NAT 테이블에 동적으로 추가/삭제한다.

내부에서 외부에 애게스할 때 송신지 IP 뿐 아니라 포트까지 변경하고, 어떤 단말이 어떤 포트를 이용하는지는 패킷으로 구별한다.

가정에서 사용하는 모뎀, 스마트폰 테더링 등에서 사용하는 것이 NAPT이다.

모든 단말에 글로벌 IP를 할당할 수 없기 때문에 NAPT를 사용한다.

 

5-3. CGNAT (Carrier Grader NAT)

 

NAPT를 통신 사업자 및 ISP에서 사용할 수 있도록 확장한 것이다.

스마트폰 패킷은 통신사업자의 네트워크에서 글로벌 IPv4 주소에 CGNAT되어 인터넷으로 송출된다.

 

(1) 포트 할당 기능

통신 사업자는 개인과 달리 외부 IPv4 주소를 하나만 가지지 않는다.

외부의 IP 주소를 여러 IP 주소 테이블로 묶어 n:n으로 연결한다.

 

- 정적 할당

: 가입자에게 미리 정한 수의 포트를 정적으로 할당하는 방법으로, PBA나 동적 할당에 비해 집약 효율이 낮으나 로그가 필요 없다.

 

- PBA (Port Block Allocation)

:정적 할당과 동적 할당의 중간으로, 가입자에게 지정한 포트를 동적으로 할당한다.

약효율은 비교적 높으나 로그를 얻을 필요가 있다.

 

- 동적 할당

할당된 모든 포트 번호를 유효하게 활용할 수 있어 집약 효율이 높아지나, 언제 누가 어느 글로벌 IPv4 주소와 포트 번호를 사용하고 있는지 전부 로그로 기록해야하므로 대량의 로그가 출력된다.

 

(2) EMI + EIF = Full cone NAT

- EMIT (Endpoint Independent Mapping)

수신지가 달라도 같은 송신지 IP와 송신지 포트 번호를 가진 통신에는 일정 시간 같은 주소와 포트 번호를 할당하는 기능.

 

- EIF (Endpoint Independent Filter)

EMI에 따라 할당된 전체 주소와 포트 번호에 대해 커넥션을 일정 시간 받을 수 있는 기능

 

- Full cone NAT

EMI와 EIF를 활성화한 NAT을 의미한다.

 

(3) 헤어핀 NAT

같은 CHNAT 장치 아래 있는 가입자 단말 사이에서 글로벌 IPc4 주소를 통합 반환하는 통신을 구현한다.

 

(4) Connection Limit

1대의 가입 단말이 사용할 수 있는 포트를 제한하는 기능이다.

 

5-4. NAT Traversal

NAT 기기를 뛰어넘어 단말끼리 직접 통신하도록 하는 기술이다.

 

(1) 포트포워딩

특정 IP 주소/ 포트 번호에 대한 통신을 미리 설정해둔 내부 단말로 전송한다.

내부 LAN 서버를 외부에 공개할 때 사용한다.

 

(2) UPnP

단말로부터의 요청에 따라 자동으로 포트포워딩할 수 있는 기능이다.

 

(3) STUN(Session Traversal Utilities for NATs)

USP를 사용해 외부 LAN에 대한 통신을 허가하는 기능이다.

 

(4) TURN(Traversal Using Reply around NAT)

각 서버가 TURN 서버를 통해 서로 데이터를 교환하는 방식으로, 통신 지연이 다소 발생하나 STUN보다 가볍다.

 

 

 

 

 

 

6. IPv4/ IPv6 대응 기술

 

6-1. Dual Stack

 

하나의 단말에 IPv4 주소와 IPv6 주소를 모두 할당한다.

각 단말과 통신 시에 각 주소를 사용한다.

여러 환경에 대응 가능하나 운용 부하가 걸린다는 단점이 존재한다.

 

6-2. DNS64/NAT64

 

DNS 서버의 기능을 이용해 IPv6 단말이 IPv4 단말과 통신할 수 있도록 하는 기능

(1) IPv6 단말이 도메인에 대해 DNS에 질의한다.

(2) DNS 서버가 IPV4 주소를 16진수로 변환하여 뒤 32비트를 넣어 AAA 레코드로 반환한다.

(3) AAA레코드의 IPv6 주소로 접속한다.

(4) NAT 라우터는 IPv4 단말 수신지로의 통신을 파악하고 송신지는 임의 IPV4로 변환, 수신지를 IPv4를 추출해서 전송한다.

 

6-3. 터널링

 

IPv6 네트워크를 경유해 IPv4 패킷을 전달하거나 반대로 IPV4 네트워크를 경유해 IPv6 패킷을 전달하는 기술이다.

(1) IPv4 단말 A가 Default Gateway에 패킷을 전송.

(2) 라우터는 받은 패킷을 IPv6으로 캡슐화하여 전송.

(3) 상대 라우터는 원래 IPv4를 추출해서 전송.

(4) IPv4 단말 B가 원래 패킷을 받는다.

 

 

 

 

7. ICMPv4 (Internet Control Protocol Message Protocol)

IP 레벨의 통신을 확인하거나 에러를 알리는 역할이다. (ping)

 

7-1. ICMPv4의 포맷

 

 

RFC792에서 표준화되었으며 어떤 네트워크 단말이라도 반드시 구현해야하는 프로토콜이다.

 

 

7-2. ICMPv4 동작

 

(1) 에코 요청/ 응답

IP 레벨의 통신 상태를 확인할 때 사용되는 패킷이 echo request/ echo response이다.

네트워크 트러블 슈팅의 시작점으로 ping을 통해 네트워크 계층~애플리케이션 계층, 그리고 데이터링크 계층~ 물리계층까지 소통을 확인한다.

 

(2) Destination Unreachable

IPv4 패킷을 수신지 IPv4 단말까지 라우팅하지 못했을 때 에러를 알리는 패킷이다.

 

(3) Time-to-live Exceeded

IPv4 패킷의 TTL(Time To Live, 패킷 유효기간)이 0이 되었을 때 송신지 단말에 알리는 패킷.

 

- 라우팅 루프 방지

: 라우팅 설정 실수에 의해 IP 패킷이 여러 라우터를 통해 무한 루프하는 현상.

- 통신 경로 확인

: traceroute와 tracert의 경우 TTL에 패킷을 하나씩 증가시켜 어떤 경로를 통해 수신지까지 도달하는지 확인한다.

 

 

 

 

8. ICMPv6

 

8-1. ICMPv6의 패킷 포맷

 

 

ICMPv4와 마찬가지로 어떤 네트워크 단말이든 ICMPv6를 구현해야 한다.

 

 

8-2. 역할

 

(1) IPv6 주소 중복 감지

IPv6은 GARP가 아닌 ICMPv6에서 중복 감지를 수행한다.

SLACC에서 주소 할당 시 주소가 중복되지 않았는지 확인하는 DAD(Duplicate Address Detection) 처리를 넣는다.

 

- 단말이 네트워크 접속 시 더미 링크 주소 설정.

- 해당 주소를 사용할 수 있는지 타입이 '135'인 NS 패킷을 송신.

- 타입 '136'의 NA 패킷이 돌아오면 주소 중복, 돌아오지 않으면 실제 주소로 설정한다.

 

(2) 수신지 IPv6 주소에서 수신지 MAC 주소 구하기

주소 결정에도 NS 패킷과 NA 패킷을 사용하기 때문에 MAC 주소를 찾을 때도 같은 원리로 동작한다.

 

(3) 네트워크 정보 제공

로컬 주소가 설정되었을 때 타입이 '133'인 RS 패킷을 송신해 네트워크 정보를 문의하고, 라우터는 MAC 주소 프리픽스 등의 정보를 타입 '134'인 RA 패킷에 넣어 반환한다.

 

 

 

 

9. IPsec (Security Architecture for Internet Protocol)

네트워크 계층에서 IP 패킷의 캡슐화나 인증, 암호화하고 인터넷상에 가상의 전용선을 만드는 가상화 기술.

 

9-1. 거점간 VPN/ 원격 VPN

 

(1) 거점간 IPsec VPN

다양한 장소에 거점이 있는 기업의 연결에 사용된다.

전용선보다 비용적으로 훨씬 유리하다.

 

(2) 리모트 액세스 IPsec VPN

모바일 사용자 및 원격 근무자의 리모트 액세스에 사용한다.

VPN용의 가상 NIC를 만들고 VPN 장치에 IPsec 터널을 만들어 이용한다.

 

 

9-2. IPsec 프로토콜의 기능

 

(1) IKE (Internet Key Exchange)

안전한 통신을 위해 통신 전 사전 준비를 위해 사용한다.

 

- IKEv1의 경우

phase 1 : 터널을 제어하는 ISAKMP SA(Internet Security Association and Key Management Protocol Security Association)을 만든다.

암호화, 인증 방식 등의 합의와 암호키 공유, 상대 인증 등을 수행한다.

phase 2 : 실제 데이터를 교환하는 IPesc SA를 만든다. 1단계에서 만든 ISAKMPSA상에서 IPsec SA를 만들기 위해 필요한 설정과 암호키를 공유하고, 상향 통신용과 하향 통신용의 IPsec 2개를 만든다.

 

- IKev2의 경우

오래되어 호환성 문제로 새롭게 등장했다.

단계가 조금 간소화되었을 뿐 실제 작동에 큰 차이는 없다.

IKE_SA_INIT 단계

: 터널을 제어하는 커넥션(IKE SA)를 만든다.

IKE_AUTH

: 데이터를 교환하는 터널인 Child SA를 만든다.

 

(2) ESP (Encapsulating Security Payload) / AH (Authentication Header)

실제 데이터를 전송하는 프로토콜이다.

ESP와 AH의 차이는 암호화로, AH는 암호화가 제한된 국가에서 사용한다.

 

IPsec/Child SA의 두가지 모드가 있다.

터널 모드 : 오리지널 IP 패킷을 새로운 IP 헤더로 캡슐화한다. (거점간 IPsec VPN, 리모트 액세스 IPsec VPN에서 사용)

트랜스포트 모드 : 오리지널 IP 패킷에 터널용 헤더를 삽입한다. L2TP over IPsec에서 사용한다.

 

(3) NAT Traversal

ESP가 오리지널 IP 패킷을 암호화하면 NAPT를 사용할 수 없다.

따라서 IKE로 서로 NAT Traversal에 대응하는지, NAPT하는 단말이 존재하는지 인식하고, 송신지/수신지 포트 번호를 500번에서 4500번으로 변경하고 이후 통신은 UDP 4500번으로 수행한다.

IKE 사전 준비가 완료되면 ESP를 UDP 4500번으로 캡슐화하여 NAPT 기기를 뛰어넘는다.

연결 처리가 완료되면 PPP 인증 후 VPN용 NIC에 PPP로 IP 주소가 할당된다.

그 다음 IP 주소를 오리지널 IP 주소로 연결을 시도한다.