[정보처리기사] IP (Internet Protocol)

yurinnn·2024년 4월 8일

정보처리기사

목록 보기
17/21

인터넷 프로토콜(IP, Internet Protocol)은 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보의 규약(프로토콜[약속과 같은 것])이며,
OSI 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당한다.

  • 목적지까지 데이터를 전달하는 기능을 수행하고, 동시에 주소를 관리한다.
  • 네트워크에 접속된 각 컴퓨터에도 고유한 식별 번호가 있어야 정확하게 데이터를 송수신할 수 있다. 따라서 인터넷에 연결된 모든 컴퓨터에는 고유 주소가 부여되는데 이것을 IP 주소라고 한다.
  • 32 bit 이고, 네트워크 ID + 호스트 ID 로 이루어져 있다.

📍 IP datagram 포맷

  • IP 데이터는 TCP나 UDP 로부터 받은 데이터(payload)에 네트워크 계층에서 필요한 정보들이 header에 덧붙여진다.

IPDiagram

header의 정보

  • ver (version number): IP 프로토콜의 버전번호로, IPv4의 주소체계 혹은 IPv6의 주소체계 중 어떤 버전을 사용하는지 명시
  • head length : header의 길이(bytes)
    • 데이터 한 줄이 32 bits(4 bytes)이므로, 5줄이면 20 bytes가 헤더의 길이가 된다.
  • Packet Length(패킷 길이) : 16bit
  • type of service : IP 데이터의 타입 (거의 사용하지 않음)
  • length : 전체 데이터의 길이
  • 16-bit identifier, flags, fragment offset : 단편화(fragmentation)와 재결합(reassembly)를 위해 사용
    • 네트워크를 지나는 데이터들은 때에 따라 쪼개졌다 합쳐질 수 있는데, 그 때 잘려진 조각을 표시하고 합치기 위해 사용
  • time to live (TTL) : 데이터가 건너갈 수 있는 남아있는 hop 의 수
    • 라우터를 하나 건너가는 것이 하나의 hop 이다. 데이터가 라우터를 건너갈 때마다 수가 줄어들고 0이 되면 데이터의 수명이 다 한 것으로 간주하고 라우터에서 해당 데이터를 제거하고 출발점에 제거되었다고 알려준다. TTL은 여유있게 설정하자.
  • upper layer : 전송(transport) 계층의 프로토콜 표시 (TCP 또는 UDP), 혹은 ICMP 프로토콜
  • checksum : 받은 데이터에 에러가 있는지 검출하기 위해 사용
    • TCP의 경우 신뢰성있는 데이터 전송을 위해 한 비트라도 에러가 있으면 재전송한다. UDP 는 계산은 하지만 오류를 정정하는 기능은 없다.
    • header checksum = 전송 계층에서 내려온 데이터는 header 에 대해서만 에러 검출 동작을 한다.
  • source IP address, destination IP address : 출발지와 목적지의 IP 주소
    • 32 bit 는 IPv4 를 사용한다는 의미이다.
  • options : 추가적인 정보 기록
    • 특정 라우터를 지나간 timestamp 등이 필요하다면 옵션에 추가하면 된다. 추가적인 옵션이 없는 경우 header 크기는 20 bytes 이다.
  • data : 전송 계층에서 내려온 데이터(payload)

📍 인터넷 프로토콜(IP)의 역할

  • 지정한 IP 주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

📍 IP 프로토콜의 한계점

  1. 비연결성
    패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
    수신 호스트 서버가 패킷을 받을 수 있는 상태인지 없는 상태인지 알 수가 없어서 송신 호스트 서버에서는 계속해서 패킷을 보냅니다.
  2. 비신뢰성
    중간에 패킷이 사라져도 IP 프로토콜에서 전송하는 데이터가 정확하게 갔는지 확인하지 않는다. (패킷 전달 여부에 대해서 보증하지 않는다).
  3. 프로그램 구분이 어려움
    같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러개일 경우 구분이 어렵다. (IP 주소는 해당 기기의 고유한 주소인데 해당 주소에서 여러개의 애플리케이션에 대한 구분이 어려움)

그래서 이러한 IP 프로토콜의 한계를 보완한 프로토콜이 TCP 프로토콜이다.

📍 IP address Class

IP주소는 네트워크ID와 호스트ID로 나누어 질 수 있는데,
네트워크 ID를 크게 만들거나 호스트 ID를 작게 만들어 네트워크 크기를
조정할 수 있다. 이런 네트워크 크기를 클래스라는 개념으로 구분한다.

💡 A Class / B Class / C Class / D Class / E Class

IP 주소네트워크 비트네트워크호스트
A Class0~12708 bit24 bit대규모 네트워크
B Class128~1911016 bit16 bit중간규모 네트워크
C Class192~22311024 bit8 bit소규모 네트워크
D Class224~2391110멀티캐스트 (1:M)
- 여러 명에게 전송
E Class240~2551111Reserved

📍 서브넷 마스크

  • 서브넷(Subnet) : IP를 사용하는 네트워크 장치들의 수에 따라 효율적으로 사용할 수 있게 함
  • 서브넷 마스크 : IP주소 체계의 Network ID와 Host ID를 서브넷 마스크를 통해 변경하여 '네트워크 영역을 분리 또는 합체' 시키는 개념

예시)
192.168.10.10 → 11000000.10101000.00001010.00001010
네트워크 주소는 11000000.10101000.00001010 이 되고, 나머지 빨간 부분인 00001010은 호스트 주소가 된다.

  • IP 주소에는 반드시 서브넷 마스크가 있다.
  • 서브넷 마스크는 기본적으로 255와 0으로 이루어져 있다.
  • 여기서 255는 네트워크 부분이며 0은 호스트 부분이 된다.
  • IP 주소를 8비트로 4등분을 하면, 각각을 옥텟(Octet)이라 부른다.
    IP를 쪼개는 이유는 IP주소가 모자라기 때문이며 네트워크를 구축시에 가장 중요한 부분이라고 할수있으며 서버 관리시에 꼭 필요한 부분이다.

서브넷 마스크의 형태는 IP주소와 똑같이 32bit의 2진수로 되어있으며, 8bit(1byte)마다, .(dot)으로 구분하고 있다.

혹시 IP주소 뒤에 /24 같은 것들이 붙어 있다. 이는 Prefix(접두어)로 서브넷 마스크의 bit 수를 의미한다. (CIDR (Classless Inter-Domain Routing))

서브넷팅(Subnetting) 하는 법

서브넷팅 : IP주소 낭비를 방지하기 위한 원본 네트워크를 여러 개의 네트워크로 분리하는 과정(자신의 네트워크 주소를 더 작은 서브 네트워크로 2의 배수로 나누는 과정)을 말한다.

예시)
192.168.32.0/24 라는 네트워크 주소 하나를 25개씩의 호스트가 있는 각각의 네트워크로 분할

ip AddressSubnet mask
192.168.32.0255.255.255.0
11000000.10101000.00100000.0000000011111111.11111111.11111111.00000000
  • 1로 표시된 부분은 Network-ID로 사용되는 부분이며, 0 으로 표시된 Host-ID 부분을 가지고 서브넷팅을 하게된다.
  • Host-ID 부분을 필요한 개수인 5개의 Bit로 쪼개보면 아래와 같다.
    192.168.32.000/00000
    <-(Network ID) / (Host ID)→
profile
슬기로운 개발 생활

0개의 댓글