사전 세그먼트
용어함정

세그먼트

gabury1

세그먼트는 통째로 다루기 어려운 것을 잘라 놓은 조각 하나를 부르는 말입니다. 무엇을 잘랐는지는 어느 세계의 이야기냐에 따라 갈립니다. 네트워크를 오가는 데이터 한 벌일 때도 있고 사용자 무리에서 추려낸 부분집합일 때도 있습니다.

상세

여러 뜻이 공유하는 뼈대는 하나입니다. 통짜로 두면 다루기 어려운 것이 있습니다. 그것을 잘라 놓은 조각 하나를 세그먼트라고 부릅니다. 갈리는 자리는 무엇을 잘랐느냐입니다.

전송 계층에서 잘리는 것은 오가는 데이터입니다. RFC(Request for Comments) 9293 의 용어집은 세그먼트를 데이터의 논리적 단위라고 적습니다. 특히 TCP(Transmission Control Protocol, 전송 제어 프로토콜) 세그먼트는 한 쌍의 TCP 모듈 사이에서 옮겨지는 데이터 단위입니다.

실행 파일이 메모리에 올라가는 자리에서 잘리는 것은 파일 안의 덩이입니다. 실행 파일 형식인 ELF(Executable and Linkable Format)를 설명하는 elf(5) man 페이지는 프로그램 헤더 하나가 세그먼트 하나를 기술한다고 적습니다. 세그먼트 대신 시스템이 프로그램을 실행할 준비를 하는 데 필요한 다른 정보를 기술하기도 합니다.

저장 엔진에서 잘리는 것은 로그 파일입니다. PostgreSQL 공식 문서의 용어집은 WAL(Write-Ahead Log, 미리 쓰기 로그) 파일을 WAL 세그먼트라고도 부른다고 적습니다.

제품 분석에서 잘리는 것은 데이터를 남긴 쪽입니다. Google Analytics 도움말은 세그먼트를 분석에 쓸 수 있는 Analytics 데이터의 부분집합이라고 적습니다.

그래서 세그먼트라는 말만으로는 무엇을 가리키는지가 정해지지 않습니다. 맥락 이름을 먼저 대야 뜻이 섭니다. 전송 계층에서 말하는 세그먼트와 제품 분석에서 말하는 세그먼트는 같은 이름을 쓸 뿐 다른 물건입니다.

맥락별 뜻

맥락 뜻 출처
전송 계층 한 쌍의 TCP 모듈 사이에서 옮겨지는 데이터 단위. TCP 헤더와 사용자 데이터 한 벌 RFC 9293, 3.1 Header Format · 4 Glossary
프로세스 메모리와 실행 파일 적재 프로그램 헤더 하나가 기술하는 덩이. 적재 가능한 세그먼트는 파일에서 메모리로 매핑 elf(5), Program header (Phdr)
저장 엔진의 로그 파일 순번이 매겨진 같은 크기의 WAL 파일 하나 PostgreSQL Documentation, Glossary — WAL file
제품 분석 조건으로 추려낸 사용자 · 세션 · 이벤트의 부분집합 Google Analytics Help, Segment builder

전송 계층

RFC 9293 의 용어집은 세그먼트를 데이터의 논리적 단위로 정의합니다. 특히 TCP 세그먼트는 한 쌍의 TCP 모듈 사이에서 옮겨지는 데이터 단위라고 적습니다. 한정이 걸려 있는 정의입니다. 오가는 두 끝이 TCP 모듈이라는 조건이 뜻의 일부입니다.

용어집은 이 말을 축으로 파생어도 함께 정의합니다. 세그먼트 확인응답은 도착한 세그먼트의 확인응답 필드에 실린 시퀀스 번호입니다. 세그먼트 길이는 그 세그먼트가 차지하는 시퀀스 번호 공간의 양이고, 시퀀스 공간을 차지하는 제어 비트도 포함합니다. 세그먼트 시퀀스는 도착한 세그먼트의 시퀀스 필드 안의 번호입니다.

헤더 형식 절은 이 단위가 실제로 어떻게 나가는지를 적습니다. TCP 세그먼트는 인터넷 데이터그램으로 보내집니다. IP(Internet Protocol, 인터넷 프로토콜) 헤더가 출발지와 목적지 호스트 주소를 비롯한 여러 정보 필드를 나릅니다. TCP 헤더는 IP 헤더 뒤에 따라옵니다. 거기에 TCP 에 고유한 정보가 실립니다. 이렇게 나눈 덕분에 TCP 말고 다른 호스트 수준 프로토콜도 존재할 수 있습니다. 인터넷 프로토콜 모음이 초기에 발전하던 시기에는 IP 헤더 필드들이 TCP 의 일부였습니다.

flowchart TD
    A["IP 헤더"] --> B["TCP 헤더"]
    B --> C["사용자 데이터"]
    subgraph S["세그먼트"]
        B
        C
    end

프로세스 메모리와 실행 파일 적재

elf(5) 는 실행 파일이나 공유 오브젝트 파일의 프로그램 헤더 테이블을 구조체 배열로 적습니다. 각 원소는 세그먼트 하나를 기술하거나, 시스템이 프로그램을 실행할 준비를 하는 데 필요한 다른 정보를 기술합니다. 오브젝트 파일 세그먼트 하나는 섹션을 하나 이상 담습니다. 프로그램 헤더는 실행 파일과 공유 오브젝트 파일에서만 의미가 있습니다.

원소가 어떤 종류의 세그먼트를 기술하는지, 또는 그 원소의 정보를 어떻게 해석하는지는 p_type 이 가리킵니다. PT_LOAD 이면 그 원소는 적재 가능한 세그먼트를 지정합니다. p_filesz 와 p_memsz 가 그 세그먼트를 기술합니다. 파일의 바이트들은 메모리 세그먼트의 시작 부분에 매핑됩니다. 세그먼트의 메모리 크기 p_memsz 가 파일 크기 p_filesz 보다 크면, 남는 바이트들은 값 0 을 담고 세그먼트의 초기화된 영역 뒤에 오도록 정의되어 있습니다. 파일 크기는 메모리 크기보다 클 수 없습니다. 프로그램 헤더 테이블 안의 적재 가능 세그먼트 항목들은 p_vaddr 을 기준으로 오름차순 정렬되어 나타납니다.

저장 엔진의 로그 파일

PostgreSQL 용어집은 WAL 파일을 WAL 세그먼트 또는 WAL 세그먼트 파일이라고도 부른다고 적습니다. 순번이 매겨진 파일 각각이 WAL 을 담을 저장 공간을 제공합니다. 파일들은 전부 미리 정해진 같은 크기입니다. 순서대로 쓰입니다. 동시에 열린 여러 세션에서 일어나는 변경들이 그 안에 섞여 들어갑니다. 시스템이 죽으면 파일들을 순서대로 읽어 각 변경을 재생합니다. 그렇게 죽기 전 상태로 되돌립니다.

파일 하나의 수명도 이 용어집이 적습니다. 체크포인트가 그 파일 안의 모든 변경을 대응하는 데이터 파일에 쓰고 나면 각 WAL 파일은 해제될 수 있습니다. 해제하는 방법은 두 가지입니다. 지우거나, 나중에 다시 쓰이도록 이름을 바꿉니다. 뒤쪽을 재활용이라고 부릅니다.

제품 분석

Google Analytics 도움말의 세그먼트 빌더는 사용자와 세션과 이벤트의 부분집합을 만드는 자리라고 적습니다. 세그먼트는 탐색 분석에서 분석에 쓸 수 있는 Analytics 데이터의 부분집합입니다. 도움말이 드는 예는 특정 국가나 도시의 사용자입니다. 특정 제품군을 구매한 사용자, 사이트의 특정 영역을 방문한 사용자, 앱에서 특정 이벤트를 발생시킨 사용자도 각각 세그먼트가 됩니다.

앞의 세 맥락과 다른 자리가 하나 있습니다. 잘리는 대상이 바이트로 존재하는 덩이가 아니라 데이터를 남긴 사용자와 세션과 이벤트입니다. 자르는 도구도 크기나 오프셋이 아니라 조건입니다.

경계

실행 파일 안의 섹션도 세그먼트인가. 아닙니다.

elf(5) 가 둘을 다른 테이블로 갈라 놓았습니다. 프로그램 헤더 테이블의 원소 하나가 세그먼트 하나를 기술합니다. 섹션 헤더 테이블은 그와 별개로 파일의 모든 섹션을 찾게 해 주는 표입니다. Elf32_Shdr 또는 Elf64_Shdr 구조체의 배열입니다. ELF 헤더의 e_shoff 는 파일 시작부터 섹션 헤더 테이블까지의 바이트 오프셋을 줍니다. e_shnum 은 항목 수를 담습니다. e_shentsize 는 항목 하나의 바이트 크기를 담습니다.

포함 관계도 한쪽 방향으로만 섭니다. 오브젝트 파일 세그먼트 하나가 섹션을 하나 이상 담습니다. 반대로 섹션이 세그먼트를 담는다는 말은 이 문서에 없습니다. 그래서 섹션 하나를 가리키며 세그먼트라고 부르면 서로 다른 두 테이블의 이름이 뒤섞입니다.

관련 항목

세그먼트에서 갈라져 나온 파생어

확인응답 · 세그먼트 길이 · 세그먼트 시퀀스

세그먼트를 이루는 헤더와 필드

헤더 · 시퀀스 번호 · 호스트 주소 · 제어 비트

세그먼트를 정의하고 감싸는 프로토콜

TCP · IP · 데이터그램 · 프로토콜

세그먼트가 놓이는 파일 종류

ELF · 오브젝트 파일 · 공유 오브젝트 · 실행 파일

세그먼트를 기술하는 표

프로그램 헤더 · 섹션 헤더

세그먼트가 담는 하위 조각과 겪는 처리

섹션 · 매핑 · PT_LOAD

세그먼트가 거치는 처리 단계

체크포인트 · 재활용 · 복구

세그먼트가 속하는 로그와 짝지어지는 파일

WAL · 데이터 파일

세그먼트가 속하는 도구와 상위 개념

Google Analytics · 탐색 분석 · 부분집합

세그먼트가 추려내는 모집단

사용자 · 이벤트 · 세션

다른 이름: segment