[네트워크]IPv4 패킷필드에서 옵션은 무엇을 담당하는가?

2026. 1. 16. 16:57·CS/컴퓨터 네트워크

https://dev-dx2d2y-log.tistory.com/184

 

[네트워크] 혼공네트 독서 #5 - 네트워크 계층과 IPv4, IPv6 패킷구조, ARP

https://dev-dx2d2y-log.tistory.com/181 [네트워크] 혼공네트 독서 #4 - 네트워크 장비, 허브와 스위치https://dev-dx2d2y-log.tistory.com/180 [네트워크] 혼공네트 독서 #3 - 이더넷 프레임https://dev-dx2d2y-log.tistory.com/178

dev-dx2d2y-log.tistory.com

저번시간에는 IPv4의 패킷구조를 중점적으로 살펴보았다.

IPv4의 패킷구조에는 옵션과 패딩이라는, 선택적으로 존재할 수 있는 영역이 있는데, 혼공네트 책에는 나와있지 않아서 추가로 이 게시글에서 다뤄보려한다.

 

https://www.rfc-editor.org/rfc/rfc791#section-3.1

 

RFC 791: Internet Protocol

 

www.rfc-editor.org

내용은 위 내용을 참고했다. 영어라서 이해하는데 좀 오래 걸리긴하는데 그래도 내용은 깊은 편이고 재미도 있다. 타이레놀은 필수

위 글을 읽을 때 유의할 점은, '옥텟'이라는 단위가 나오는데 1옥텟은 1바이트이다. 원래 옥텟이 무엇이든 8개가 모여있다는 뜻이니 그 뜻은 비슷비슷하다. 본 글에서는 '바이트' 단위로 통일한다.


옵션(Option)

옵션은 선택사항이다. 하지만 네트워크 장치는 반드시 옵션을 구현해야한다. 즉, 옵션기능은 선택이지만 모든 네트워크 장치는 옵션기능을 수행할 수 있어야한다는 것이다. 단지 전송상황에서 적용여부가 선택사항이라는 뜻이다.

 

옵션의 크기는 가변적이다. 옵션이 없다면 0이고 여러 옵션이 붙으면 그 크기가 늘어나기도한다.


옵션이 붙는 케이스

옵션을 사용하는 케이스는 크게 두 가지이다.

 

Case 1: 1바이트의 Option-type 필드 하나

Case 2: Option-type, Option-length,  실제 옵션 데이터 필드 (Option-data)

 

Case1의 필드는 Case2의 필드와 겹치므로 Case2에 대해서 중점적으로 설명해보도록한다.

Option-type과 Option-length는 1바이트 크기를 갖는다.


Option-length

옵션의 길이를 측정한다. Optiona-data 필드와 Option-type, Option-length 필드를 다 합친 옵션의 총괄 길이를 기재한다. 위에서 말했듯이 옵션의 길이는 가변적이기 때문에 옵션의 길이를 명시해주어야한다. 1바이트의 크기를 가진다.


Option-type

Option-type은 1바이트의 크기로 옵션의 유형을 설명한다.

모든 옵션들은 Option-type을 가지고있다.

1바이트를 이렇게 나눠쓴다.

 

Copied flag

해당 옵션이 단편화된 패킷의 모든 부분에 적용되었는지를 표기한다. 1이 나머지 단편화된 패킷에 이 모든 옵션들이 적용된다는 뜻이고, 0이 그 반대

 

Option class

2개의 비트로 숫자를 표현한다. 각 숫자는 이 옵션이 무슨 용도인지를 나타낸다.

0 = control / 2 = debugging and measurement 이고, 나머지 1번과 3번은 나중을 위해 예약 중이다. 즉, 0번이 네트워크 관리 및 제어용도, 2번이 디버깅 및 성능 등의 측정용으로 사용된다.

 

Option number

이 옵션이 무슨 역할을 수행하는지를 나타낸다. 그럼 Option data는 무엇을 나타내냐면 역할에 필요한 데이터들을 담아서 보낸다.

https://dev-dx2d2y-log.tistory.com/185

 

[컴퓨터구조] 혼공컴구 독서 #2 - 명령어

혼공컴구 책을 쭉 보니까 책 앞부분이 데이터와 명령어를 다루고 있다. 그런데 데이터는 이진수로 숫자와 문자를 표기하는 방법에 대해서 나타내고 있길래.. 이건 패스 이 부분은 https://dev-dx2d2y-

dev-dx2d2y-log.tistory.com

마치 혼공컴구에서 다뤘던 연산코드-오퍼랜드와 비슷한 관계라고할 수 있다.

 

암튼 그래서 Number는 무엇이 있냐면

이렇다. Control에 해당하는 Number 들이 7개, Debugging and measurement에 해당하는 Number가 1개 있다. 각각 해석을 해보자면

 

- number 0

End of Option list. 즉, 옵션이 더이상 존재하지 않는다는 것을 명시한다. 딱 1바이트만을 차지하며, 끝났다라는 신호만 주면 되기 때문에 Option data도 없고 length 필드도 없다.

 

- number 1

아무런 명령도 없다. 즉, 빈 내용이다. 따라서 length 필드도 없다. 보통 네트워크 장치들이 4바이트씩 끊어 읽는 것이 더 좋기 때문에 바이트 수가 모자랄 경우 패딩의 개념으로 추가한다. 네트워크 장치를 number가 1이면 그냥 다음 옵션을 읽는다.

 

- number 2

number2의 옵션데이터 중 2바이트는 다음과 같이 기밀유형을 포함한다.

보안용도로 사용한다. Option data로 함께 보안등급, 배포범위, TCC(이 패킷이 어느 그룹에 전송되어야하는가? (전송 그룹 이외의 사용자는 이 패킷을 볼 수 없음) 등을 나타낸다. 총무실에서 네트워크로 회사영업기밀을 담아서 number 2를 설정해서 보내면, 일반사원의 호스트는 이 패킷을 볼 수 없다. 이는 네트워크가 군사적 목적에서 발명된 것에서 기인한다. 현재는 HTTPS나 TLS 같은 보안을 사용하면서 해결할 수 있고, 군사적 목적으로 인터넷을 사용하지 않을뿐더러 요즘은 네트워크 장치가 옵션 검사도 잘 하지 않아서잘 안쓰인다.

number2일 경우 Option data는 11바이트로 고정된다,

 

- number 3

라우팅 경로를 직접 지정할 수 있다. 호스트에게 데이터를 보낼 때 반드시 거쳐야하는 ip주소를 명시한다. 현재는 보안문제 때문에 쓰이지 않는다

 

- number 9

number 3와 비슷한데, 이 경우에는 반드시 지정된 ip주소만 거쳐야한다. 만약 그것이 불가능하면 에러를 일으켜 패킷을 폐기한다. 마찬가지로 현재는 보안문제 때문에 잘 쓰이지 않는다.

 

- number 7

패킷이 지나간 경로를 기록한다. 인터넷이 보급되면서 지나가는 네트워크 장치의 수는 많아졌지만, 정작 이것을 저장할 공간은 그대로이다. 헤더 최대 크기가 60바이트에 기본 헤더들이 20바이트 크기를 가진다. 옵션 하나에 할당할 수 있는 크기는 최대 40바이트. 거기에 필수적인 Option-type과 Option-length 2바이트씩 제외하면 최대 38바이트다. IP주소 하나에 4바이트이므로 number7을 사용하면 최대 9개까지 밖에 기록하지 못한다. 그런데 현대에서 패킷 한 개가 지나는 네트워크 장비의 수는 그보다 훨씬 많으므로 자연스럽게 퇴출

 

- number 8

이 패킷이 어떤 유형인지 표기한다. IPv4 헤더의 Type Of Service와 비슷하고 TOS에 밀려서 자연스럽게 퇴출

 

- number 4

유일하게 class가 2인 경우. 패킷이 거치는 라우터들을 각각 언제 통과했는지 기록한다. 나중에 이 기능과 같으면서 성능이 개선된 다른 기능들(ICMP, PTP)가 나오면서 현재는 잘 안쓰인다.

 

보면 알 수 있듯이 현재 대부분의 옵션들은 사용하지 않는다. 만약 현대의 네트워크에서 이 옵션을 사용한다면 오히려 오류로 인식해 패킷이 폐기될 수 있다. 또 일례로 패킷을 가로채서 number7 옵션을 추가시키면 해커에게 친절히 기밀정보까지 길안내하는 셈이니 보안문제도 있었고..

 

그래서 요즘은 옵션 대신 다른 기술들이 사용된다. 대표적인 것이 number2를 대신한 HTTPS와 TLS. 패킷에 "이것은 기밀이에요"라고 적는게 아니라 애초에 패킷에 접근하지 못하게 막는 것이다. 이런 방식으로 요즘 옵션들은 대개 잘 쓰이지 않는 편이라고 한다. 그래도 궁금한 것은 알았잖아?

'CS > 컴퓨터 네트워크' 카테고리의 다른 글

[네트워크] 혼공네트 독서 #7 - 라우팅, 라우팅테이블, 라우터  (0) 2026.01.23
[네트워크] 혼공네트 독서 #6 - IP주소  (1) 2026.01.17
[네트워크] 혼공네트 독서 #5 - 네트워크 계층과 IPv4, IPv6 패킷구조, ARP  (1) 2026.01.15
[네트워크] 혼공네트 독서 #4 - 네트워크 장비, 허브와 스위치  (0) 2026.01.14
[네트워크] 혼공네트 독서 #3 - 이더넷 프레임  (0) 2026.01.14
'CS/컴퓨터 네트워크' 카테고리의 다른 글
  • [네트워크] 혼공네트 독서 #7 - 라우팅, 라우팅테이블, 라우터
  • [네트워크] 혼공네트 독서 #6 - IP주소
  • [네트워크] 혼공네트 독서 #5 - 네트워크 계층과 IPv4, IPv6 패킷구조, ARP
  • [네트워크] 혼공네트 독서 #4 - 네트워크 장비, 허브와 스위치
컬러잇
컬러잇
탄천러너지망생
  • 컬러잇
    Color it
    컬러잇
  • 전체
    오늘
    어제
    • 분류 전체보기 (252)
      • 신년사 (3)
        • 2025년 (2)
        • 2026년 (1)
      • CS (79)
        • JVM (12)
        • 인프라 (6)
        • 백엔드 (22)
        • 논리회로 (5)
        • 언어구현 (1)
        • 인공지능 (1)
        • 코드설계 (3)
        • 컴퓨터구조 (9)
        • 데이터베이스 (4)
        • 컴퓨터 네트워크 (16)
      • 보안 (3)
        • 웹보안 (3)
        • AI보안 (0)
        • 시스템보안 (0)
        • 네트워크보안 (0)
      • 언어공부 (65)
        • Java | Kotlin (49)
        • JavaScript | TypeScript (9)
        • C | C++ (6)
      • 개인 프로젝트 (11)
        • [2025] Happy2SendingMails (3)
        • [2026] 골든리포트! (8)
        • 기타 이것저것 (0)
      • 팀 프로젝트 (29)
        • [2025][GDG]홍대 맛집 아카이빙 프로젝트 (29)
      • 알고리즘 (13)
        • 백준풀이기록 (11)
      • 에러 수정일지 (4)
      • 고찰 (33)
        • CEOS 23기 회고록 (9)
        • 놀이터 (0)
  • 링크

    • 교양있는컬러잇
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.5
컬러잇
[네트워크]IPv4 패킷필드에서 옵션은 무엇을 담당하는가?
상단으로

티스토리툴바