K 개발자

IP 프로토콜 본문

OS/네트워크

IP 프로토콜

ddingz 2021. 7. 31. 18:48

IP 헤더 구조

인터넷 환경에서 네트워크 계층의 데이터 전송 프로토콜로 이용되는 IPInternet Protocol는 호스트 주소 표기, 패킷 분할에 관한 기능을 지원하지만, 단대단End-to-End 형식의 오류 제어나 흐름 제어 기능은 제공하지 않는다.
IP 프로토콜의 주요 특징은 다음과 같다.

  • 비연결형 서비스를 제공한다.
  • 패킷을 분할/병합하는 기능을 수행하기도 한다.
  • 데이터 체크섬은 제공하지 않고, 헤더 체크섬만 제공한다.
  • Best Effort 원칙에 따른 전송 기능을 제공한다.

IP 헤더의 구조

IP 프로토콜에서 정의된 패킷의 IP 헤더IP Header 구조이고 상단의 숫자는 비트 수이다.
다음은 헤더 필드를 연관된 종류별로 묶어 설명한다.

DS/ECN

차등 서비스 개념이 도입되면서 Service Type 필드가 6비트의 DSDifferentiated Services 필드와 2비트의 ECNExplicit Congestion Notification 필드로 새로 정의되었다.
이는 인터넷에서 다양한 트래픽 요구 조건을 필요로 하는 서비스들에 대하여 서로 다른 수준의 QoSQuality of Service를 지원하기 위함이다.
DS를 사용하기 위해 사전에 서비스 제공자와 서비스 이용자 사이에 서비스 등급에 대한 합의가 이루어지며, 동일한 DS 값을 갖는 트래픽들은 동일한 서비스 등급으로 처리된다.
ECN 필드 값의 의미는 다음과 같다.

필드 값 의미
00 IP 패킷이 ECN 기능을 사용하지 않음을 의미한다.
01(ECT 1) TCP 프로토콜도 ECN 기능을 지원한다는 의미이다.
10(ECT 0) TCP 프로토콜도 ECN 기능을 지원한다는 의미이다.
11(CE: Congestion Experienced) 라우터가 송신 호스트에 혼잡을 통지할 때 사용한다.

패킷 분할

IP 헤더의 두 번째 워드에는 패킷 분할과 관련된 정보가 포함된다.

  • Identification(식별자 혹은 구분자) : 송신 호스트가 지정하는 패킷 구분자 기능을 수행한다. IP 프로토콜이 분할한 패킷들에 동일한 고유 번호를 부여함으로써, 수신 호스트가 Identification 번호가 같은 패킷을 다시 병합Reassembly할 수 있도록 해준다.
  • DFDon't Fragment : 패킷이 분할되지 않도록 한다.
  • MFMore Fragment : 분할된 패킷을 전송할 때는 여러 개의 분할 패킷이 연속해서 전송되므로 MF 필드 값을 1로 지정하여, 분할 패킷이 뒤에 계속됨을 표시해주어야 한다. 분할 패킷 중 마지막 패킷은 MF 비트를 0으로 지정하여 분할 패킷이 더 없음을 표시한다.
  • Fragment Offset(분할 옵셋) : 패킷 분할이 이루어지면 12비트의 Fragment Offset 필드를 사용한다. 저장되는 값은 분할된 패킷의 내용이 원래의 분할 전 데이터에서 위치하는 상대 주소 값이고, 값은 8바이트의 배수이다.

주소 관련 필드

Source Address는 송신 호스트의 IP 주소이고, Destination Address는 수신 호스트의 IP 주소이다.

IP 주소 체계

IP 주소 체계는 크게 다섯 종류이다.
클래스 A, B, C는 유니캐스팅에서 이용하고, 클래스 D는 멀티캐스팅에서 이용한다.
클래스 E는 향후의 새로운 응용 환경을 위하여 잠정적으로 예약된 클래스이다.
클래스 A, B, C는 주소를 network와 host 필드로 구분해 관리함으로써, 클래스별로 네트워크 크기에 따라 주소 관리를 다르게 한다.

  • network(네트워크) : 네트워크 주소이다.
  • host(호스트) : 네트워크 주소가 결정되면 하위의 호스트 주소를 의미하는 host 비트 값을 개별 네트워크의 관리자가 할당한다.

다음과 같이 IP 주소 값을 통해 이 주소가 속한 클래스를 알 수 있다.

IP 주소 값 주소 체계
0.0.0.0 ~ 127.255.255.255 클래스 A의 주소 대역
128.0.0.0 ~ 191.255.255.255 클래스 B의 주소 대역
192.0.0.0 ~ 223.255.255.255 클래스 C의 주소 대역
224.0.0.0 ~ 239.255.255.255 클래스 D의 주소 대역
240.0.0.0 ~ 255.255.255.255 클래스 E의 주소 대역

기타 필드

  • Version Number(버전 번호) : IP 프로토콜의 버전 번호이다.
  • Header Length(헤더 길이) : IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시한다.
  • Packet Length(패킷 길이) : IP 헤더를 포함하여 패킷의 전체 길이를 나타낸다.
  • Time To Live(생존 시간) : 송신 호스트가 패킷을 전송하기 전에 네트워크에서 생존할 수 있는 시간을 지정하고, 각 라우터에서는 패킷이 지나갈 때마다 필드 값을 감소시키면서 패킷을 중개한다. 임의의 라우터에서 Time To Live 값이 0으로 감소하면 패킷은 자동으로 버려진다.
  • Transport(전송 프로토콜) : IP 프로토콜에 데이터 전송을 요구한 전송 계층의 프로토콜을 가리킨다.

Transport 필드

  • Header Checksum(헤더 체크섬) : 전송 과정에서 발생할 수 있는 헤더 오류를 검출하는 기능이다.
  • Options(옵션) : 네트워크 관리나 보안처럼 특수 용도로 이용할 수 있다.
  • Padding(패딩) : IP 헤더의 크기는 16비트 워드의 크기가 4의 배수가 되도록 설계되어 있다. 필드의 전체 크기가 이 조건에 맞지 않으면 이 필드를 사용해 조정할 수 있다.

패킷 분할

다양한 유형의 네트워크를 통해 패킷을 중개하려면, IP 프로토콜이 패킷을 각 네트워크에서 처리하기 편한 크기로 분할Fragmentation해야 한다.

분할의 필요성

패킷 분할의 필요성

IP 프로토콜의 분할 기능은 전송 경로에 위치한 라우터에 의해 수행된다.
라우터의 좌우에 연결된 LAN이 서로 다를 수 있기 때문에 데이터 링크 계층의 위치한 프레임 크기가 프로토콜마다 달라진다.
따라서 데이터를 수신한 이후에 패킷을 중개하는 방향에 위치한 LAN에 맞도록 프레임을 분할해 주어야 한다.

분할의 예

IP 헤더를 제외한 전송 데이터의 크기는 380바이트이고, 패킷은 최대 크기가 128바이트라고 가정하였다.

패킷 분할의 예

먼저 Fragment Offset 필드를 계산해야 하는데, 이 값에 8을 곱한 크기가 분할 전의 데이터 위치이다.
패킷 전체의 최대 크기인 128바이트에서 헤더인 20바이트를 빼면 108바이트가 되므로 분할 패킷에 보관할 수 있는 데이터의 최대 크기는 (108을 8로 나눈 몫(정수값))×8 = 104바이트이다.
따라서 분할된 패킷의 개수는 4개(=380을 104로 나눈 몫+1)이며, 각 패킷의 Fragment Offset 필드 값은 0, 13, 26, 39가 된다.

분할 패킷인 분할 1, 분할 2, 분할 3은 데이터 크기 104바이트에 헤더 크기 20바이트를 더해 124가 되므로 패킷의 전체 크기 Packet Length = 124바이트이다.
마지막 분할 패킷은, 전체 데이터의 크기 380에서 세 개의 분할 패킷 크기 3×104를 빼면 68바이트의 여분을 얻을 수 있는데, 이 값에 헤더 크기인 20바이트를 더해 Packet Length = 88바이트이다.

분할한 패킷의 Identification 필드에는 동일한 번호를 부여해야 한다.
임의로 1254를 가정하였다.
MF 필드는 마지막 패킷만 제외하고 1을 지정해 분할 패킷이 이어지고 있음을 표시해주어야 한다.


DHCP 프로토콜

특정 네트워크를 관리하는 네트워크 관리자는 개별 호스트들에 수동으로 고정 IP 주소를 할당할 수 있다.
그러나 IP 주소 부족 등의 사유로 DHCPDynamic Host Configuration Protocol를 사용하여 자동으로 할당할 수도 있다.
예를 들어, 대학 내의 여러 실습실에 1,000대의 컴퓨터가 설치되어 있다고 가정하면 1,000개의 고정 IP 주소를 할당해야 한다.
그러나 실습 수업이 동시에 이루어지지 않기 때문에 DHCP를 사용하여 현재 사용하는 컴퓨터에만 IP 주소를 자동으로 할당하는 것이 가능하다.
이렇게 IP 주소를 여러 컴퓨터가 공유해서 사용하면 더 적은 수의 IP 주소만으로도 1,000대의 컴퓨터가 시간 분할 방식으로 인터넷에 접속할 수 있다.

'OS > 네트워크' 카테고리의 다른 글

이동 IP 프로토콜  (0) 2021.08.01
IPv6 프로토콜  (0) 2021.08.01
라우팅 프로토콜  (0) 2021.07.31
네트워크 계층의 기능  (0) 2021.07.30
HDLC 프로토콜  (0) 2021.07.30
Comments