🎯 체크섬(계산하는법) 한번 더 확인(과제 진행)
- IP 프로토콜의 주요 특징
비연결형 서비스를 제공
패킷을 분할/병합하는 기능을 수행
데이터 체크섬은 제공하지 않고, 헤더 체크섬만 제공
Best Effort 원칙에 따른 전송 기능을 제공
📌 IP 헤더 구조
- IP 프로토콜에서 정의된 패킷의 IP 헤더의 구조(상단의 숫자는 비트 수)
DS/ECN
DS와 ECN 필드가 도입되기 전에는 8비트의 Service Type(DS+ECN) 필드로 정의되어 우선순위, 지연, 전송률, 신뢰성 등의 값을 지정할 수 있었음
Service Type 필드는 IP 프로토콜이 사용자에게 제공하는 서비스의 품질에 관련된 내용을 표현
각 비트 값의 의미는 [표 7-4]와 같음
혼잡 제어를 위한 ECN 필드 값의 의미는 [표 7-5]와 같음
DS 코드포인트라고도 하는 DS 필드 값은 차등 서비스의 기준이 되는 레이블 값으로 64개의 트래픽 클래스를 정의
DS 서비스는 비교적 단순한 원리에 의하여 차등화된 서비스를 제공하지만 내부적인 처리 과정은 복잡한 구조에 의하여 이루어짐
IP 프로토콜은 상위 계층에서 내려온 전송 데이터가 패킷 하나로 전송하기에 너무 크면 분할해 전송하는 기능을 제공
1. dentification(식별자 혹은 구분자) : IP 헤더의 두 번째 워드에는 패킷 분할과 관련된 정보가 포함
이 중 Identification 필드는 송신 호스트가 지정하는 패킷 구분자 기능을 수행
IP 프로토콜이 분할한 패킷들에 동일한 고유 번호를 부여함으로써, 수신 호스트가 Identification 번호가 같은 패킷을 다시 병합(Reassembly)할 수 있도록 해 줌
패킷을 분할하지 않으면 패킷을 전송할 때마다 이 필드의 값은 하나씩 증가
2. DF(Don’t Fragment) : 패킷이 분할되지 않도록 한다.
즉, 값을 1로 지정하면 패킷 분할을 막을 수 있음
수신 호스트가 분할되어 입력된 패킷들을 병합하는 기능이 없을 때 사용
따라서 중간 경우 네트워크에서는 자신이 처리 가능한 패킷의 크기보다 큰 IP 패킷에 DF 필드가 설정되어 있으면 분할 기능을 수행하지 않고 패킷을 버림
3. MF(More Fragment) : 분할된 패킷을 전송할 때는 여러 개의 분할 패킷이 연속해서 전송되므로 MF 필드 값을 1로 지정하여, 분할 패킷이 뒤에 계속됨을 표시해주어야 한다.
분할 패킷 중 마지막 패킷은 MF 비트를 0으로 지정하여 분할 패킷이 더 없음을 표시한다.
4. Fragment Offset(분할 옵셋) : 패킷 분할이 이루어지면 12비트의 Fragment Offset 필드를 사용한다.
저장되는 값은 분할된 패킷의 내용이 원래의 분할 전 데이터에서 위치하는 상대 주소 값이다.
값은 8비트의 배수이므로, Fragment Offset 값이 64라면 원래 데이터에서 64 × 8 = 512번째에 위치한다.
Source Address는 송신 호스트의 IP 주소
Destination Address는 수신 호스트의 IP 주소
IP 주소 체계는 [그림 7-13]과 같이 크게 다섯 종류

클래스 A, B, C는 유니캐스팅에서 이용하고, 클래스 D는 멀티캐스팅에서 이용
클래스 E는 향후 새로운 응용 환경을 위하여 잠정적으로 예약된 클래스
클래스 A, B, C는 주소를 network와 host 필드로 구분해 관리함으로써, 클래스별로 네트워크 크기에 따라 주소 관리를 다르게 함
[표 7-6]과 같은 IP 주소 값의 정보만으로 이 주소가 속한 클래스를 알 수 있음

- network(네트워크): 네트워크 주소
전 세계적으로 유일한 번호가 모든 컴퓨터 네트워크에 할당
현재 이 주소의 할당은 NIC(Network Information Center)에서 담당
- host(호스트): 네트워크 주소가 결정되면 하위의 호스트 주소를 의미하는 host 비트 값을 개별 네트워크의 관리자가 할당
클래스 A는 host 비트의 크기가 크기 때문에 규모가 큰 네트워크에서 사용하고, 클래스 C는 규모가 작은 네트워크에서 사용함
![]() | ![]() |
|---|
Version Number(버전 번호) :
현재 인터넷 환경에서 사용하는 IP 프로토콜은 버전 4
IP 프로토콜의 새로운 버전인 IPv6과 구분하기 위해 기존 IP 프로토콜을 IPv4로 표현
Header Length(헤더 길이) :
IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시
일반 패킷을 전송하는 경우에 헤더의 Options, Padding 필드가 빠지므로 IP 헤더의 최소 크기는 5
Packet Length(패킷 길이) :
IP 헤더를 포함하여 패킷의 전체 길이
필드의 크기가 16비트이므로 IP 프로토콜에서 지원하는 패킷의 최대 크기는 바이트
그러나 이는 이상적인 최댓값으로, IP 프로토콜에서 65,535바이트의 IP 패킷을 전송해도 대부분 데이터 링크 계층에서 분할해 전송
따라서 실제 환경에서 IP 프로토콜은 IP 패킷을 더 작은 단위로 만든다.
IP 패킷의 크기는 일반적으로 8,192바이트를 넘지 않는다.
Time To Live(생존 기간) :
패킷 전송 과정에서 패킷이 올바른 목적지를 찾지 못하면 수신 호스트에 제대로 도착하지 않고, 네트워크 내부에서 떠돈다.
이런 현상을 방지하려고 Time To Live 필드를 사용한다.
송신 호스트가 패킷을 전송하기 전에 네트워크에서 생존할 수 있는 시간을 지정하고, 각 라우터에서는 패킷이 지나갈 때마다 이 필드 값을 감소시키면서 패킷을 중개한다.
임의의 라우터에서 Time To Live 값이 0으로 감소하면 패킷은 자동으로 버려지고, 패킷 송신 호스트에 ICMP 오류 메시지가 전달된다.
Transport(전송 프로토콜) :
[그림 7-14]와 같이 IP 프로토콜에 데이터 전송을 요구한 전송 계층의 프로토콜을 가리킨다.
전송 계층의 TCP 세그먼트와 UDP 데이터그램, 네트워크 계층의 ICMP 패킷은 모두 IP 패킷의 데이터를 의미하는 페이로드(Payload) 부분에 캡슐화되어 전송된다.
왼쪽의 숫자는 Transport 필드 값을 의미하며, TCP는 6, UDP는 17, ICMP는 1의 값이 저장된다.
따라서 패킷 수신자는 페이로드 내부에 어느 프로토콜 정보가 있는지 판단할 수 있다.
Head Checksum(헤더 체크섬) :
전송 과정에서 발생할 수 있는 헤더 오류를 검출하는 기능으로, 데이터 오류는 검출하지 않는다.
이와 달리 계층 4인 TCP, UDP 프로토콜의 헤더는 데이터와 헤더 모두에 대한 체크섬 정보를 제공하기 때문에 IP와 상호 보완적인 오류 검출 기능을 수행한다.
Options(옵션) :
네트워크 관리나 보안처럼 특수 용도로 이용할 수 있다.
Padding(패딩) :
IP 헤더의 크기는 32비트 워드의 크기가 배수가 되도록 설계되어 있다.
앞서 설명한 필드의 전체 크기가 이 조건에 맞지 않으면 이 필드를 사용해 조정할 수 있다.

다양한 유형의 네트워크를 통해 패킷을 중개하려면, IP 프로토콜이 패킷을 각 네트워크에서 처리하기 편한 크기로 분할(Fragmentation)해야 함
상위 계층에서 더 큰 데이터 전송을 요구하면 IP 프로토콜에서 패킷 분할 과정을 먼저 수행해 전송
맨 밑에 위치한 데이터 링크 계층(계층 2) 프로토콜의 프레임은 크기가 프로토콜마다 다름
상위 계층에서 내려온 데이터를 계층 2의 프레임 틀에 담을 수 있도록 IP 프로토콜에서 분할 과정을 거친 후에 전송
수신 호스트에서는 이를 다시 합치는 병합 작업을 수행
[그림 7-16]은 IP 프로토콜의 패킷 분할 과정의 예
IP 헤더를 제외한 전송 데이터의 크기는 380바이트, 패킷은 최대 크기가 128바이트 가정
- 먼저 8의 배수로 정의된 Fragment Offset 필드를 계산, 이 값에 8을 곱한 크기가 분할 전의 데이터 위치
- 패킷 전체의 최대 크기인 128바이트에서 헤더인 20바이트를 빼면 108바이트 분할 패킷에 보관할 수 있는 데이터의 최대 크기는 (108을 8로 나눈 몫(정수 값)) x 8=104바이트
분할된 패킷의 개수는 4개(=380을 104로 나눈 몫+1)
각 패킷의 Fragment Offset 필드 값은 0, 13, 26, 39
분할 패킷인 분할 1, 분할 2, 분할 3은 데이터 크기 104바이트에 헤더 크기 20바이트를 더해 124
패킷의 전체 크기 Packet Length=124바이트
- 마지막 분할 패킷은 전체 데이터의 크기 380에서 3개의 분할 패킷 크기 3 x 104를 빼면 68바이트
이 값에 헤더 크기인 20바이트를 더해 Packet Length = 88바이트
분할한 패킷의 Identification 필드에는 동일한 번호를 부여 그림에서는 임의로 1254번을 가정 MF 필드는 마지막 패킷을 제외하고 1을 지정해 분할 패킷이 이어지고 있음을 표시