본문 바로가기

IT/network

[네트워크] IP Protocol(아이피 프로토콜)

네트워크 계층

- 데이터 링크 계층은 이더넷 규칙을 기반으로 데이터의 전송을 담당

= 같은 네트워크에 있는 컴퓨터에는 데이터 전송이 가능하지만 다른 네트워크에 있는 컴퓨터에는 전송이 불가능

- 네트워크 계층을 통해 서로 다른 네트워크간의 통신을 가능하게 하며, 라우터(집에 있는 인터넷 공유기)라는 네트워크 접속장치를 통해 통신

- 데이터 전송과 경로 선택 기능을 제공하며, 라우팅 프로토콜을 통해 최적의 경로를 선택

 

네트워크를 통한 데이터 통신에는 수신지의 주소를 알아야 한다. LAN에 있는 MAC주소로 통신은 가능하지만 다른 네트워크에 있는 컴퓨터에게는 데이터를 전송할 수 없다.

서로 다른 네트워크끼리 통신하기 위해서는 네트워크를 식별할 주소가 필요하고 이를 IP주소라고 한다.

 

 

라우팅(Routing)

<Routing>

- 수신지 컴퓨터의 IP 주소까지 어떠한 경로를 통해 전송할지 결정하는 것

- 라우터에서 해당 기능을 수행

- 라우터는 라우팅 테이블을 만들어 경로 정보를 등록 및 관리

- 복수의 경로 중에서 최적의 경로를 찾는 과정(단일 경로에서는 경로 찾기가 적용되지 않음)

 

 

스위칭(Switching)

<Packet Switching>

- 데이터를 전송하기 위해 물리 링크를 임시로 연결하여 더 긴 링크를 만드는 것

- 라우터 간의 경로를 설정하여 임의의 링크를 만드는 것을 의미하는데 위 그림과 같이 packet1에 대한 임시 경로를 정의해주는 것을 스위칭이라 함

 

 

IP 패킷

<IPv4 Packet>

- 네트워크 계층에서 IP 프로토콜을 사용하여 캡슐화(Encapsulation) 시 데이터에 IP 헤더가 추가된 것

- 데이터 링크에서는 프레임이라는 용어를 사용하지만 네트워크 계층에서는 IP 패킷이라 함

= 계층별로 같은 데이터 패킷을 지칭하는 용어가 다름

 

- 버전(4비트)

인터넷 버전을 규정하며, 현재 버전은 4(IPv4)

 

- 헤더 길이(4비트)

IP와 응용 프로그램은 어디에서 데이터를 발견할 수 있는지 알 수 있음

 

- 서비스 유형(8비트)

<Type Of Service>

QoS(Quality of Service) 서비스 품질 제어에 이용되며, TOS(Type of Service)필드 라고도 한다.

D : Delay, 1로 설정 시 최소한의 지연으로 데이터 전송

T : Throughput(처리량) , 1로 설정 시 IP 라우터는 처리량이 가장 큰 경로로 데이터그램 전송

R : Reliability, 1로 설정 시 데이터그램 손실 없이 전송

C : Cost, 1로 설정시 데이터가 최소 비용으로 수신지에 전송(가장 적은 수의 라우터를 거침)

즉 표로 설명하면

TOS비트

서비스 유형

0000

표준

0001

최소비용

0010

높은 신뢰성

0100

높은 처리율

1000

낮은 지연

 

- 전체 길이(TotalLength, 16비트)

데이터 길이 = 전체 길이 - 헤더 길이(HLEN) * 4

 

- 식별(16비트)

데이터그램 전송 시 작은 조각으로 분할하기 때문에 수신 측에서 쪼갠 데이터그램을 재결합할 때 동일 메시지임을 식별하는 용도로 사용

 

- 플래그(3비트)

IP 패킷의 재결합 시 이용되며, 첫 비트는 사용하지 않고 두 번째, 세 번째 비트만 사용

 

- 단편 오프셋(Fragmentation Offset. 13비트)

단편화된 패킷을 재결합할 때 플래그 필드, 식별 필드와 결합해서 사용

 

- 라이프 타임(Life Time, TTL : Time to Live)

패킷이 네트워크에서 생존할 수 있는 시간을 의미하며, 데이터그램이 통과하는 최대 라우터 수를 제어하기 위해 사용한다. 라우터를 통과할 때마다 라이프 타임이 1씩 감소하며, 0이 되면 라우터는 해당 데이터그램을 폐기함으로써 수신지를 찾지 못한 패킷이 네트워크 트래픽을 증가시키는 것을 막는다. 라이프타임은 운영체제에서 정의하기 때문에 사용자는 라우터 수를 고민할 필요가 없다.

 

- 프로토콜(8비트)

1 = ICMP

2 = IGMP

3 = TCP

4 = UDP

5 = OSPF

 

- 검사합(Checksum)

TCP/IP 프로토콜에서 많이 사용하는 오류 제어 방법이며, 패킷 전송 중 발생하는 헤더 부분의 오류를 검사할 때 사용한다. IP 패킷의 헤더는 각 라우터를 지날 때 변경될 수 있다는 점을 고려한 오류 검출로써 데이터 부분은 라우터를 지나도 변경되지 않는다.

검사합 방법은 아래에서 확인할 수 있다.

https://freloha.tistory.com/13

 

[네트워크] 통신 오류 검출

통신 오류 검출 통신을 하다 보면 여러 가지 이유로 비트 에러가 발생한다. 이 때, 수신 측에서 보낸 데이터가 정확하게 전달이 되었는지를 확인하는 방법이 통신 오류 검출이다. 통신 오류 검출에는 패리티 비트..

freloha.tistory.com

 

- 송신지, 수신지 주소(Source Address, Destination Address, 32비트)

송신지와 수신지의 IP 주소

 

- 옵션

IPv4는 거의 사용하지 않는 필드

 

네트워크 계층의 기능 요약

1) 논리 주소 지정 : 송신지와 수신지의 주소를 헤더에 포함

2) 라우팅(Routing) : 복수의 경로 중 패킷의 경로 지정

3) 주소 변환 : 대응하는 물리 주소를 찾기 위해 논리 주소를 해석(Switching)

4) 다중화 : 하나의 물리적 회선만 사용하여 많은 장치에 데이터를 동시에 전송(Switching)

5) 패킷 순서 제어 : 도착하는 패킷의 순서를 바로잡아 상위 계층의 메시지를 재구성하는데 사용(IP packetSequence Number가 이를 위해 존재)

6) 네트워크 계층 장비 : 라우터(집에 있는 공유기), Layer3-switch

 

 

IPv4(Internet Protocol Version 4)

IP버전은 IPv4IPv6가 있는데 IPv4232승개의 주소가 있으며 약 43억개의 컴퓨터에 할당 가능하다.

 

IP주소는 공인 IP 주소와 사설 IP 주소로 구분되며, 공인 IP 주소는 SK 브로드밴드, KT 올레, LG U+ 와 같은ISP(Internet Service Provider)가 제공한다.

일반적인 가정집을 예로 들면, ISP는 공인 IP 주소 하나를 할당하여 일반 가정에 라우터(공유기)를 설치하는데 하나의 라우터를 통해 집(LAN : Local Area Network)에 있는 여러 기기들에게 사설 IP를 주어서 인터넷을 연결할 수 있는 환경을 조성한다.

 

IPv42진수로 32비트를 사용하지만 사람이 보기 쉽게 10진수로 표시하여 사용한다. 이를 8비트 단위로 나누어 표시하고 이를 10진수로 변환한 것이 IPv4이다. (, IPv410진수로 표시하지만 2진수로 구성되었다는 것을 인지)

 

예를 들어 128.96.0.1 이라는 IP 주소가 있으면

이는 10000000.01100000.00000000.00000001로 표현된다는 의미이며

해당 2진수롤 10진수로 변환하면 128.96(64+32).0.1이 나온다는 것을 확인할 수 있다.

 

2진수로 8비트씩 4개의 필드로 구성되어 있으며, 8비트는 0~255까지 표현이 가능하다.

0.0.0.0부터 255.255.255.255까지 사용이 가능하지만 IP 주소 규정이나 사용할 수 없는(예약된) 주소들이 있기 때문에 실제로 사용 가능한 주소는 위 개수보다 적다.

 

 

DNS Sever(Domain Name Service Server)

<DNS 동작 방식>

우리가 흔히 아는 주소의 형식은 128.34.23.7 이 아닌 www.abc.com의 형식이다. 하지만 컴퓨터는 www.abc.com이라고 입력하면 이해를 하지 못한다. 역으로 인간은 128.32.23.7을 이해하지 못하는데 IP주소를 영어로 표현한 주소가 도메인 주소(Domain Address)이며 이 주소로 변환해주는 서버를 DNS 서버라고 한다.

 

네트워크 주소 = 클래스 타입 + 네트워크 ID + 호스트 ID

1) 클래스 타입 : 용도에 따라 A(대규모 네트워크 주소, 8비트가 네트워크 ID), B(중형 네트워크 주소, 16비트가 네트워크 ID), C(소규모 네트워크 주소, 24비트가 네트워크 ID), D(멀티 캐스팅용), E클래스(연구 및 특수 용도)로 나누어 구분

<Network Address Classification Chart>

2) 네트워크 ID : 어떤 네트워크인지를 나타냄

3) 호스트 ID : 해당 네트워크의 어느 컴퓨터인지를 나타내며, 네트워크 ID 이외의 나머지 부분이 호스트 ID에 해당

 

 

IPv4 클래스 구조

<IP Address Class / Network ID and Host ID>

1) A 클래스

- 기본 네트워크 마스크(Class 구분을 위해 고정하는 주소)255.0.0.0

예를 들어 1.1.1.2A클래스의 IP주소가 있다면 255.0.0.0AND 연산을 하여 나온 부분이 네트워크 주소, 나머지 부분이 호스트 주소가 된다

11111111.00000000.00000000.00000000(네트워크 마스크 = 서브넷 마스크)

and 00000001.00000001.00000001.00000010

------------------------------------------

00000001.00000000.00000000.00000000(1.0.0.0 <- 네트워크 주소)

00000000.00000001.00000001.00000010(0.1.1.2 <- 호스트 주소)

- 범위는 1.0.0.0 ~ 127.255.255.255 224(16,777,216)로 구성되어 있음

- 0 ~ 127 2개는 특수 목적에 사용되므로 126개만 사용가능하며 x.0.0.0(네트워크 주소)x.255.255.255(브로드캐스트 주소) 이외 모두 할당 가능

- 대기업 혹은 기관에서 사용

 

2) B 클래스

- 네트워크 마스크(서브넷 마스크) = 255.255.0.0(초기 16비트)

- 128.0.0.0 ~ 191.255.255.255

- 214승인 16,384 개 의 주소를 구성 가능함

- 네트워크 ID14비트(맨 왼쪽 2비트는 10으로 고정), 호스트 ID16비트 사용

- 호스트(라우터)216승인 65,536개 중 2개를 제외하고 사용 가능(이유는 A2개와 동일)

- 중소기업 및 기관에서 사용

 

3) C 클래스

- 네트워크 마스크(서브넷 마스크) = 255.255.255.0

- 네트워크 ID : 192.0.0.0 ~ 223.255.255.255(중 호스트 ID 0255는 사용 불가능)

- 맨 왼쪽 3비트가 110으로 고정

- 호스트 ID8비트 사용가능하며 최대 254개의 호스트 사용 가능

- IP 192~223으로 시작

- 소규모 기관에서 사용

 

4) D 클래스

- 멀티캐스트(데이터 수신 대상이 네트워크에 연결된 일부 컴퓨터) 용도로 사용

- 224.0.0.0 ~ 239.255.255.255

 

5) E 클래스

- 연구 및 특수 용도

- 240.0.0.0 ~ 255.255.255.255

- 255.255.255.255는 전체 컴퓨터에 대한 브로드캐스트(데이터 수신 대상이 네트워크에 연결된 전체 컴퓨터) 주소로 사용

 

요약

- 클래스에 대한 구분은 네트워크 마스트(서브넷 마스크)로 함

- 호스트 ID2진수로 00000000(0)이면 네트워크 주소이며, 11111111(255) 이면 브로드캐스트용 주소

- 호스트 ID0이면 해당 네트워크의 전체를 대표하는 주소로 사용

 

서브넷

- A 클래스에서 브로드 캐스팅이 일어나면 16,777,214개의 호스트들에게 모두 보내주어야 하는데 그렇게 되면 효율이 매우 떨어지기 때문에 A 클래스 안에서도 작은 네트워크로 분할할 필요가 있음

- 대규모 네트워크를 더 작은 네트워크로 분할하는 것을 서브네팅(Subnetting)이라고 하고 분할된 네트워크를 서브넷(Subnet)이라고 함

- 표기법에는 일반 표기법(subnet mask = 255.255.255.0)/를 사용하는 Prefix 표기법이 있음

- Prefix 표기법은 1의 개수를 < / (1의 개수) > 로 표기하며 255.255.255.0의 경우 /24로 표기가 가능

 

서브네팅(Subnetting) 예시

- C 클래스에서 192.0.0.0 ~ 192.0.0.255의 주소를 128개씩 2개의 subnet으로 나누고 싶은 경우

1) subnet mask(서브넷 마스크)를 생각한다.

네트워크 마스트와 마찬가지로 IP주소와 and하여 나누는 것이다.

128개로 2개를 나누고 싶은 경우의 subnet mask

255.255.255.128(11111111.11111111.11111111.10000000)이 된다.

 

2) 서브넷 마스크(subnet mask)IP주소를 AND 연산 한다.

192.0.0.0 = 11000000.00000000.00000000.0|0000000

255.255.255.128 = 11111111.11111111.11111111.1|0000000(/25) AND

-------------------------------------------------------------

11000000.00000000.00000000.1|0000000

이렇게 되면 |를 기준으로 왼쪽이 네트워크 ID가 되고 오른쪽이 호스트 ID가 되는데 이를 통해 128개의 2개의 subnet(192.0.0~127 / 192.0.0.128~255)으로 나눈 것이다.

 

3) , 192.0.0.3에 무언가를 보내고 싶다면 subnet mask255.255.255.0(/24)이 되고, 192.0.0.129에 무언가를 보내고 싶다면 subnet mask255.255.255.128(/25)이 된다.

 

 

IP 프로토콜

- 연결형(Connection-Oriented) 서비스와 비연결형(Connectionless) 서비스가 존재함

1) 연결형 서비스

- TCP 방식이 이에 해당됨(Fragment Use)

- 좋은 예시로는 전화가 있음, 상대방과 내가 연결이 되어야 통화가 가능한 것처럼 두 기기간의 동기화가 이루어져야 함

- 신뢰도는 높으나 전송속도가 느림(패킷 순서가 서로 맞지 않을 위험성이 낮고 오류 발생 시 재전송)

 

2) 비연결형 서비스

- UDP 방식이 이에 해당됨(Datagram Use)

- 좋은 예시로는 메일이나 문자가 있음, 메일 혹은 메시지만 보내면 되기 때문에 굳이 상대방과 연결되지 않아도 됨

- 신뢰성은 적으나 전송속도가 빠름(순서를 고려하지 않고 전송하며 재전송 X)

 

IPTCP/IP를 통해 전송하는 데이터의 기본 단위를 정의하며, 데이터그램을 전송해난데 전송 경로는 매번 달라짐