공부/Computer Network2013. 3. 21. 22:20

IPv4

원래 TCP의 일부분이었으나 1970년대에 layer3, 4로 나뉨. 버전4에서 TCP와 IP로 나뉨

ARPAnet(Advanced Research Projects Agency Network) : 세계 최초 패킷 스위칭 네트워크.

패킷 스위칭 : 터 네트워크와 통신에서 패킷 교환(Packet switching) 방식은 현재 가장 많은 사람들이 사용하는 통신 방식이다. 작은 블록의 패킷으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용하도록 하는 방법을 말한다. 정보 전달의 단위인 패킷은 여러 통신 지점(Node)을 연결하는 데이터 연결 상의 모든 노드들 사이에 개별적으로 경로가 제어된다. 이 방식은 통신 기간 동안 독점적인 사용을 위해 두 통신 노드 사이를 연결하는 회선 교환 방식과는 달리 짤막한 데이터 트래픽에 적합하다. (위키피디아)


IP 기능 

- 어드레싱 : 임의의 대규모 네트워크에서 유일한 주소

- 데이터 캡슐화, 포맷화

- 파편화, 재결합

- 라우팅, 간접 전달 : 근본적으로 프로토콜 독립적(이더넷, PPP, SLIP 다 쓸 수 있다), 무접속성, 비신뢰성, 미확인성


IP 주소지정

- 클래스적 주소 : Class A, B, C 유니캐스트, Class D 멀티캐스트, Class E 실험용

- 비클래스적 주소 : CIDR(Classless Inter Domain Routing), 네트워크 주소를 묶는다. 이제 이게 권장됨. 서브넷/수퍼넷

- CIDR은 그림과 설명을 봐야 이해되니까 여러 자료를 참조할 것.


IP 주소 관리 계층

IANA(Internet Assigned Numbers Authority)

→ APNIC(Asia Pacific Network Information Center)

 NIR(National Internet Registries) = KISA(Korea Internet Security Agency)

 LIR(Local Internet Registries)

 ISP(Internet Service Providers)

 EU(End Users)


IPv4 헤더 : 20 bytes

Version : 데이터그램이 속한 프로토콜 버전

IHL : 헤더길이. 단위는 32비트 워드 단위로 최소값은 5, 최대값은 15이다. 최소값이 5인 것은 고정크기 20바이트를 가지고 있기 때문이다. 최대값이 15이므로 헤더는 60바이트로 제한된다. 따라서, 옵션은 40바이트까지 지정할 수 있다.

Type of Service : 호스트가 서브넷에서 어떤 종류의 서비스를 원하는지를 나타낸다. 왼쪽부터 3비트는 우선권(Precedence) 필드, 다음 3비트는 플래그(D, T, R)비트를 나타낸다. 우선권 필드는 0 ~ 7까지 우선권을 지정하고 플래그 비트는 라우터가 라우팅 할 때 중요시 해야할 선택요소를 나타내는 것으로 D(Delay), T(Throughput), R(Reliability) Flag가 쓰인다. 하지만 현재 라우터는 이 필드를 무시하므로 거의 쓸모가 없다.

Total length : 데이터그램 내의 헤더와 데이터의 길이를 합한 값. 최대 길이는 65,535 바이트

Indentification : 일반적으로 데이터그램은 쪼개져(Fragmentation) 전송이 되는데 이 조각(Fragment)들이 어떤 데이터그램에 속하는지를 알려준다. 하나의 데이터그램은 모든 조각들이 동일한 Indentification 값을 가지고 있다.

DF(Don't Fragment) : 목적지 컴퓨터가 조각들을 다시 재조합할 능력이 없기 때문에 라우터에게 쪼개지(Fragment)말라고 알려주는 것이다. 하지만 현재는 대부분의 장비가 재조합이 가능하기 때문에 거의 필요없는 기능이다.

MF(More Fragment) : 데이터그램 마지막 조각을 제외하고는 1. MF가 1이면 뒤에 조각이 더 있다는 것을 의미하고 MF가 0 이면 자신이 마지막 조각

Fragment offset : 데이터그램에서 도착한 조각이 어느 위치에 존재하는지를 나타낸다. 마지막을 제외한 모든 조각은 8 바이트의 배수여야 한다. 13 비트가 제공되므로 데이터그램당 최대 8192개의 조각이 있을 수 있고 최대 데이터그램 길이는 65,536 바이트가 된다.

Time to live : 패킷 수명 제한(hop수)

Protocol : 네트워크 계층에서 데이터그램을 재조합할 때, 어떤 상위 프로토콜로 조합해야 하는지 알 필요가 있으므로 UDP 또는 TCP를 알려주기 위해 사용한다.

Header Checksum : 헤더의 값을 검증하기 위해 사용한다. 헤더의 오류를 검증하기 위해 사용하는데 헤더의 값 중에 Time to live의 값은 계속 변하게 되므로 매 홉마다 다시 계산하게 된다. 단, 트릭을 사용할 수도 있다.

Source address : 32비트(4바이트)로 데이터그램을 보낸 송신지 주소를 나타낸다.

Destination address : 32비트(4바이트)로 데이터그램을 받을 목적지 주소를 나타낸다.

Options : 원래 설계에서 소개 되지 않은 추가 정보를 포함하는 차기 프로토콜을 수용하고, 새로운 실험을 위해서나 헤더정보에 추가 정보를 표시하기 위해 설계되었다. 옵션은 가변길이로서 각각은 옵션을 확인할 수 있는 1바이트 코드로 시작한다. 다음은 5개의 옵션을 나타내지만 모든 라우터가 옵션을 지원하지는 않는다.

Security : 정보를 은폐할 것인지를 나타낸다. 

Strict source routing : 송신측과 수신측까지의 완전한 경로를 일련의 IP 주소로 나타낸다. 데이터그램은 그 경로를 따라 정확하게 전달된다. 이것은 라우팅 테이블이 변조되었거나 타이밍을 측정하는 동안 긴급 패킷을 보내는 시스템 관리자에게 매우 유용하다. 

Loose source routing : 패킷이 거쳐야 할 라우터의 목록을 명시하고, 그 순서를 명시하지만 도중에 다른 라우터를 거쳐 지나가는 것을 허용한다.

Record route : 경로상의 라우터가 IP 주소를 옵션 필드에 추가할 것을 나타낸다. 이것은 시스템 관리자가 라우팅 알고리즘에서 버그를 탐지하는데 사용한다.

Timestamp : 주로 라우팅 알고리즘을 디버깅하기 위해 존재하는 것으로 각 라우터의 32 비트 타임스탬프를 기록한다.

(참조 : http://blog.cyworld.com/ruo91/2890461)


파편화 & 재결합 : 최종 목적지에서 reassemble 된다.

MTU(Maximum Transfer Unit) : 한번에 전송할 수 있는 패킷의 최대 크기.

Frame Relay default MTU = 1564 bytes

Standard Ethernet MTU = 1500 bytes

FDDI(Fiber Distributed Data Interface) default MTU = 4452 bytes


IP주소 부족 : 2011년 2월초 IANA는 사용가능한 IPv4 주소의 마지막 블록을 5개의 RIR(Regional Internet Registries)에 할당해주었다.

NAT(Network Address Translation) & Private Network

- 사설 IP는 인터넷에 직접 연결되어있지 않다. 임의로 다음의 실험적 IP 범위에 할당한다. (non-routable) IETF RFC 1918

- 10.0.0.0 ~ 10.255.255.255, 172.16.0.0 ~ 172.31.255.255, 192.168.0.0 ~ 192.168.255.255

- NAT는 사설 네트워크를 공용 인터넷에 연결하는 라우터에서 실행된다.

- 다른 IP 주소-포트 페어와 IP 패킷을 다른 것으로 대체해주는 역할을 한다.


IP 풀링 : 기업 네트워크는 많은 호스트가 있지만 적은 수의 공용 IP 주소 밖에 없다. 사설 네트워크의 호스트가 IP 데이터그램을 공용 인터넷의 호스트로 보낼 때, NAT 장비는 공용 IP 주소를 호스트의 사설 주소에 묶는다(bind).

IP 마스커레이딩 : NAPT(Network Address and Port Translation), NAT 장비가 내외부로 오가는 트래픽의 주소와 포트 넘버를 변경한다. (LAN side addr, WAN side addr)


NAT의 우려점

- 퍼포먼스 : IP 헤더 체크섬, TCP 체크섬을 재계산 해야함

- 파편화 : 데이터그램 파편이 다른 IP 주소와 포트 넘버로 배정될 수 있다.

- 종단간(end-to-end) 연결성 : NAT는 인터넷 호스트의 전세계적 종단간 도달 가능성을 파괴한다.

- 공용 인터넷의 호스트는 종종 사설 네트워크의 호스트에 접촉할 수 없다.

* 사용자간(peer-to-peer) 어플리케이션 방해

* 각각 사설 네트워크에 있는 경우 더욱 좋지 않다.

- 일반적으로 주소-포트 매핑은 약상태(soft-state)로 유지된다. (몇 분간만)

- 어플리케이션 데이터의 IP 주소 : 1:1 NAT 의 경우 Layer3 IP 정보만 변환해주며 NAPT 경우 IP와 Port(Layer4) 까지 변환해준다. SIP 본문은 control 불가능


NAT 를 통과하기 위한 ITEF의 표준은 3가지 이다.

STUN (Simple Traversal of UDP through NAT) : STUN 서버, STUN 클라이언트로 구성된다. UA(사용자 에이전트) 스스로가 NAT 내부, 즉 사설망에 있는지 여부와 그렇다면 어떤 종류의 NAT이고 NAT 장치의 공인 IP주소가 무엇인지를 찾아내도록 도와주는 프로토콜이다.

UA가 외부 공중망에 있는 STUN 서버에게 STUN 패킷을 보내면 STUN 서버는 패킷을 보낸 장치의 IP 주소와 포트 번호를 담아 응답합니다. UA는 자신의 IP주소와 STUN 서버가 보내온 IP 주소를 비교하여 두 주소가 같으면 NAT가 없음을 알게 되고, 반면에 두 주소가 다르면 NAT 내부에 있는 것이므로 UA는 이후 SIP과 SDP에 포함될 IP 주소를 STUN 서버가 보내준 공인 IP 주소로 수정하여 호(call)를 시도한다.

결과적으로 UA 스스로가 NAT문제를 해결할 수 있게 된다. 그러나 STUN 방식은 두 UA가 모두 NAT 내부에 있을 때에는 제대로 동작하지 않는다. 또한 Symmetric NAT(밑에 설명)에서는 지원하지 않는다. 이 해결책은 TURN이다.

Cone NAT의 경우 내부의 IP:Port에 대해 Destination에 관계없이 동일한 외부의 IP:Port로 매핑되고, Symmetric NAT의 경우 Destination에 따라 다른 외부의 IP:Port를 사용합니다.

Full Cone의 경우 들어오는 트래픽의 Source IP와 Port에 대해 검사없이 NAT Table의 Mapping대로 릴레이하고 Restricted는 IP만 체크하면 Port Restricted는 IP와 Port모두 체크 합니다.

TURN (Traversal Using Relay NAT) : UA로 하여금 외부 공중망에 있는 TURN 서버를 경유하여 호를 설정하도록 하는 방식이다. 즉 두 UA가 서로 직접 메시지를 주고받는 것이 아니라 공중망에 위치한 TURN 서버와 세션을 설정하도록 하여 TURN 서버가 이를 중계하는 방식이다. 두 UA가 경로가 다소 우회된다. 하지만 Symmetric NAT나 방화벽이 있을 경우에도 호를 설정할 수 있는 유일한 방법은 TURN이다.

ICE (Interactive Connectivity Establishment) : STUN이나 TURN을 사용할 때 P2P 방식을 통해 최적의 라우팅을 제공하려는 기법이다. 세션 설정 과정에서 자신이 알 수 있는 모든 주소들을 동원하여 시그널링을 시도한다. 주소들의 우선순위는 직접 통신 가능한 주소가 우선이고, TURN 서버 주소와 같은 간접 통신을 위한 주소는 뒤에 배치된다. 세션 설정 후 망 상황이 바뀌거나 세션이 변경되면 ICE에 의한 주소 교환을 처음부터 다시 수행한다. ICE 방식은 일반 P2P 파일 공유 애플리케이션에서 NAT나 방화벽을 통과할 때 사용되는 기법과 흡사.

* UA가 사용 할 수 있는 주소들

- UA 자신의 사설 IP 주소

- STUN 서버가 알려준 NAT 장치의 공인 IP 주소

- 패킷을 중개할 TURN 서버의 IP 주소

(참조 : http://mongu2.blog.me/140123112694)

IPv6가 해답이다. (라고 프린트에는 나와있지만 과연? 일단 언급된 문제들은 해결되나보다.)


Posted by Maverick Unlimited