IPv4
Internet Protocol version 4 · IP 버전 4
는 32비트 주소를 사용해 서로 다른 네트워크 사이로 데이터그램을 전달하는 인터넷 계층 프로토콜이다. 에 필요한 주소와 ·길이·단편 정보를 제공하지만 도착·순서·재전송을 보장하지 않는다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 출발지와 목적지 주소를 이용해 라우터가 네트워크 경계를 넘어 전달하도록 한다.
- 을 줄여 잘못된 경로에서 패킷이 무한히 순환하는 일을 제한한다.
- · 조건에 따라 단편화하거나 오류를 알려 상위 통신의 크기 처리를 돕는다.
02어떤 순서로 동작하나
- 목적지
목적지 주소를 경로표의 프리픽스와 비교하고 가장 구체적인 유효 경로를 고른다. 로컬 링크인지 게이트웨이 경유인지에 따라 다음 홉이 달라진다.
- 헤더 구성과 검증
송신자는 ·Protocol··주소·체크섬을 구성한다. 수신 라우터는 지원하는 형식과 길이·헤더 체크섬을 검사하고 자신이 처리할 패킷인지 전달할 패킷인지 구분한다.
- 홉과 크기 처리
전달할 때 을 줄이고 헤더 체크섬을 갱신한다. 출구 를 넘으면 ·단편화 규칙에 따라 조각을 만들거나 오류를 보낼 수 있다.
- 다음 링크와 최종 수신
다음 홉의 링크 주소를 이용해 새 프레임을 만든다. 최종 수신지는 필요한 단편 재조립을 완료하고 Protocol 값에 맞는 상위 처리기로 넘긴다.
03먼저 알아둘 용어와 구성요소
- Internet Header Length다. 헤더 길이를 32비트 단위로 나타내며 옵션이 없으면 값 5, 즉 20바이트다.
- 헤더와 데이터 전체 길이를 바이트 단위로 나타내는 필드다. 헤더는 포함하지 않는다.
- Time To Live다. 라우터를 거칠 때 감소하는 값으로, 전달 루프가 무한히 지속되는 것을 제한한다.
- 원래 데이터에서 조각의 시작 위치를 8바이트 단위로 표시한다.
- 같은 원래 데이터그램의 조각을 재조립할 때 구별에 사용하는 식별 값이다. 사용 조건은 및 분할 가능성과 함께 해석한다.
- Do not Fragment 플래그다. 분할하지 말라는 의미이며 를 넘는 패킷은 라우터에서 필요한 오류 통지와 함께 폐기될 수 있다.
- More Fragments 플래그다. 뒤에 더 많은 조각이 있음을 나타내며 마지막 조각에서는 0이다.
- 헤더에 대한 16비트 오류 검출 값이다. 상위 계층 데이터 전체를 검사하는 값은 아니다.
- Differentiated Services Code Point다. IP 헤더에서 서비스별 전달 처리를 구별하는 6비트 값이다.
- Explicit Congestion Notification이다. 지원하는 종단과 장비가 혼잡을 신호할 때 쓰는 IP 헤더의 2비트 필드다.
- 목적지 주소와 일치하는 경로 중 프리픽스가 가장 긴 경로를 먼저 고르는 전달 원칙이다.
실습: /24 호스트 판단과 /25 인터페이스 설정 비교
마스크가 로컬·원격 판단을 바꾸는 이유를 show ip와 인터페이스 출력으로 계산한다.
실습 구성과 전제
- 192.168.3.1/25 설정과 192.168.10.66/24 단말은 별도 사례다. 한 네트워크의 연속 실행으로 합치지 않는다.
- 호스트와 라우터의 주소·마스크를 각각 기록한다.
호스트의 같은 네트워크 계산
- 192.168.10.66/24를 AND하면 192.168.10.0이므로 .130도 같은 링크라고 판단한다. 물리적으로 라우터 너머라는 사실을 자동으로 알아내지는 못한다.
- GATEWAY 0.0.0.0은 기본 게이트웨이가 설정되지 않은 상태다. 이 때문에 .130을 직접 하는 상황을 일반적인 기본 게이트웨이 동작과 구분한다.
textPC1> show ip PC1> show arp실습 흐름을 재구성한 명령 예시. 장치·인터페이스 이름은 구성에 맞춰 사용한다.
원본 크기로 보기 ↗- IP/MASK는 192.168.10.66/24다.
- GATEWAY 0.0.0.0과 MTU 1500이 별도 항목으로 보인다.
확인 기준PC가 .130의 MAC을 직접 찾는다면 /24 판단과 맞는다.
별도 /25 설정의 범위 계산
- 255.255.255.128은 /25다. 192.168.3.1은 네트워크 .0, 호스트 .1~.126, 브로드캐스트 .127의 범위에 속한다.
- ip address의 두 번째 값은 게이트웨이가 아닌 마스크다. no shutdown 뒤 LINK·LINEPROTO up은 원격 경로 성공까지 의미하지 않는다.
textinterface Ethernet2/0 ip address 192.168.3.1 255.255.255.128 no shutdown end show ip interface brief실제 설정에 맞춘 명령 정리
원본 크기로 보기 ↗- Ethernet2/0에 192.168.3.1 255.255.255.128이 설정된다.
- no sh 뒤 LINK와 LINEPROTO의 up 메시지가 나타난다.
확인 기준/25를 /24로 읽으면 범위가 두 배가 되어 설계와 달라진다.
로컬 판단의 패킷 결과 비교
- .66↔.130 캡처에서 .66이 .130을 하고 라우터 쪽 MAC이 응답한다. 이는 Proxy 맥락으로 읽어야 한다.
- Echo request의 64와 reply의 63은 반대 방향 패킷이다. 두 값만 빼서 한 요청의 홉 수를 확정하지 않는다.
원본 크기로 보기 ↗- Who has 192.168.10.130? Tell 192.168.10.66이 보인다.
- 이후 Echo request/reply에 TTL 64·63이 각각 나타난다.
확인 기준감소는 같은 방향의 패킷을 다른 관측 지점에서 비교해야 입증된다.
실습에서 확인한 동작 원리
- 주소 자체보다 마스크로 계산한 네트워크가 로컬 판단을 결정한다.
- 인터페이스 up· 응답· 왕복은 서로 다른 성공 증거다.
동작·명령 참고 문서
04예제로 따라가기
- 다른 헤더 바이트는 고정이고 이전 체크섬 HC=0xb861, =64, Protocol=6인 유효 헤더를 가정한다. 전체 헤더를 다시 더하는 대신 변한 워드만 이용한다. ~HC=0x479e, m=0x4006, ~m=0xbff9, m′=0x3f06이다. 반전은 16비트 범위로 제한하며 일반 정수의 음수 연산으로 해석하지 않는다.
- 0x479e+0xbff9+0x3f06=0x1469d다. 상위 캐리 1을 하위 0x469d에 더하면 0x469e가 된다. 0x469e를 반전하면 HC′=0xb961이다. 이 예에서는 이 1 감소하면서 체크섬이 0x0100 증가했지만 일반 변경에는 전체 증분 식을 사용한다.
- 라우터 전후 캡처에서 주소·식별자·길이는 같고 과 체크섬만 이 값처럼 바뀌었다면 한 홉 전달과 일치한다. 옵션· 등 다른 변경이 있으면 그 필드도 계산에 포함한다.
05혼동하기 쉬운 점과 확인 기준
- 수신지는 출발지·목적지 주소, Protocol, 을 함께 사용해 같은 데이터그램의 단편을 묶는다. 숫자 하나만 같다고 같은 원본 패킷으로 합치지 않는다.
- 값에 8을 곱하면 원래 IP 데이터 안에서의 시작 바이트다. 각 단편의 실제 데이터 길이는 −×4로 계산한다.
- =0인 마지막 단편은 최종 데이터 끝을 알려 준다. 앞부분이 빠졌다면 마지막 단편을 받았어도 전체 데이터그램은 완성되지 않는다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.