요약
- TCP의 필수 체크섬은 TCP 헤더와 데이터를 포함하고, 하위 계층의 주소·프로토콜 식별자·TCP 길이로 구성된 개념적 의사 헤더도 함께 덮습니다.
- 의사 헤더는 계산을 위해 재구성되며 TCP 세그먼트의 일부로 전송되지 않습니다. 그 목적은 IP/TCP 경계에서의 손상과 일부 오배달을 탐지하는 것입니다.
- 이것은 오류 탐지 근거이지, 암호학적 인증, 경로 증명, 권한 부여가 아닙니다.
TCP 세그먼트는 송신 포트와 수신 포트로 시작하는 것처럼 보입니다. 그러나 그 체크섬은 프로토콜 스택에서 더 앞선 지점에서 시작합니다. 송신 측은 IP가 제공하는 값들을 가져와 작은 개념적 헤더로 배열하고, 그 워드들을 TCP 헤더와 페이로드와 같은 계산에 넣습니다. 수신 측은 세그먼트를 수용할지 판단하기 전에 같은 값들을 다시 만듭니다.
이 추가 재료는 계산에는 참여하지만 또 하나의 전송되는 TCP 헤더가 되지는 않는다는 점에서 의사 헤더라고 불립니다. RFC 793에 공개된 IPv4 설계에서 그 길이는 96비트입니다. 즉 송신 주소, 수신 주소, 0바이트 1개, IP 프로토콜 번호, TCP 길이입니다. 주소와 프로토콜 필드는 이미 IP 헤더로 이동합니다. TCP는 그것들을 회선 위에 복제하지 않고, 두 프로토콜의 경계에서 하위 계층이 제공해 주기를 요청합니다.
이 선택은 특정한 증거 문제를 해결했습니다. TCP 바이트만으로 하는 체크섬은 포트, 시퀀스 번호, 데이터가 같은 산술 합으로 도착했다는 사실은 확인해 주지만, 이를 감싼 패킷의 주소나 프로토콜 식별자가 손상되었는지에 대해서는 아무것도 말해 주지 못합니다. 선택된 IP 맥락을 계산에 포함함으로써, 세그먼트가 송신 측이 사용한 것과 다른 엔드포인트 맥락에 도착하면 전송 계층의 계산이 실패할 수 있습니다. RFC 793은 그 목적을 오경로된 세그먼트에 대한 보호라고 명확히 기술했습니다.
산술 방식은 여전히 경제적입니다. 체크섬 필드에는 덮인 16비트 워드들의 1의 보수 합에 대한 1의 보수 16비트 값이 들어갑니다. 계산 중에는 체크섬 필드 자체를 0으로 취급합니다. TCP 헤더와 데이터가 홀수 옥텟에서 끝나면, 마지막 워드를 완성하기 위해 오른쪽에 0 옥텟 하나를 임시로 붙입니다. 이 패딩은 절대 전송되지 않습니다. 의사 헤더처럼 그것은 세그먼트의 공개 길이가 아니라 계산에 속합니다.
TCP 길이도 같은 구분을 지닙니다. IPv4에서 그것은 TCP 헤더 옥텟 수에 TCP 데이터를 더한 값입니다. 이 값은 별도로 전송되지 않고 계산되며, 의사 헤더의 12옥텟은 세지 않습니다. 따라서 체크섬은 실제 TCP 재료를 기술하는 길이 값을 덮되, 그것을 보호하는 데 쓰이는 개념적 재료는 제외합니다.
RFC 9293은 이 설계를 유지하면서 그 계층 간 계약을 명시했습니다. TCP 체크섬은 선택 사항이 아니며, 송신 측은 반드시 생성하고 수신 측은 반드시 검사해야 합니다. TCP를 지원하는 모든 하위 프로토콜은 송수신 주소, 프로토콜 식별자, TCP 길이를 판단할 방법을 제공해야 합니다. 의사 헤더는 향수로 보존된 IPv4 다이어그램이 아니라, TCP가 하위 서비스에 요구하는 사항의 일부입니다.
IPv6는 원칙을 바꾸지 않고 형태를 바꿉니다. IPv6의 의사 헤더는 320비트이며, IPv6 송수신 주소, 32비트 상위 계층 패킷 길이, 0바이트 3개, Next Header 값을 담습니다. TCP 앞에 IPv6 확장 헤더가 나타나면 체크섬은 고정 IPv6 헤더의 바로 인접 Next Header 값이 아니라, 그 사슬 끝에서 TCP를 식별하는 값을 사용합니다. 수신 측은 근처 필드 하나를 무작정 복사하는 것이 아니라 전송 맥락을 재구성해야 합니다.
소스 라우팅은 또 하나의 경계 사례를 드러냅니다. RFC 9293은 체크섬용 주소가 반드시 최초 송신지와 최종 수신지여야 한다고 말합니다. 중간 라우팅 주소는 전송 계층 계산이 묶으려는 연결 엔드포인트가 아닙니다. 이 규칙은 패킷의 경로 지시 사항과, TCP가 무결성을 검사하는 엔드포인트 맥락을 분리합니다.
그렇다면 체크섬은 무엇을 증명할까요? 인증보다는 적지만, 페이로드만의 합보다는 많습니다. 일치하는 값은 수신 측이 호환되는 덮인 워드 집합을 재구성했다는 근거입니다. 우연한 비트 변화의 상당수와 일부 전달 맥락 오류를 잡아낼 수 있습니다. 그러나 이 함수는 16비트에 불과하고 키가 없으므로, 송신자를 식별하지도, 연결을 승인하지도, 트래픽을 바꾸고 값을 재계산할 수 있는 고의적 공격자를 막지도 못합니다.
의사 헤더의 과제는 하위 계층 헤더를 모든 TCP 세그먼트마다 복제하지 않으면서도, 평범한 전송 무결성이 프로토콜 경계를 넘어 닿도록 만드는 것이었습니다.
따라서 남겨진 설계는 숨겨진 패킷이 아니라 계층 간의 합의입니다. IP는 주소 맥락을 운반하고, TCP는 자신의 무결성 계산에 중요한 부분을 고르며, 양쪽 엔드포인트가 같은 개념적 입력을 재구성합니다. 회선은 여전히 간결하게 유지되면서, 세그먼트를 수용하기 위한 근거는 눈에 보이는 TCP 바이트 너머까지 미칩니다.
출처
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





