← Documents Documentation/networking/skbuff.rst GitHub 원문 ↗

Linux 6.18.37 · Networking

struct sk_buff

패킷을 나타내는 sk_buff의 geometry, 공유 reference, clone과 checksum kernel-doc을 안내합니다.

Source pathDocumentation/networking/skbuff.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

skbuff.rst:1-37

패킷을 나타내는 sk_buff의 geometry, 공유 reference, clone과 checksum kernel-doc을 안내합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 struct sk_buff
4 ==============
5
6 :c:type:`sk_buff` is the main networking structure representing
7 a packet.
8
9 Basic sk_buff geometry
10 ----------------------
11
12 .. kernel-doc:: include/linux/skbuff.h
13 :doc: Basic sk_buff geometry
14
15 Shared skbs and skb clones
16 --------------------------
17
18 :c:member:`sk_buff.users` is a simple refcount allowing multiple entities
19 to keep a struct sk_buff alive. skbs with a ``sk_buff.users != 1`` are referred
20 to as shared skbs (see skb_shared()).
21
22 skb_clone() allows for fast duplication of skbs. None of the data buffers
23 get copied, but caller gets a new metadata struct (struct sk_buff).
24 &skb_shared_info.refcount indicates the number of skbs pointing at the same
25 packet data (i.e. clones).
26
27 dataref and headerless skbs
28 ---------------------------
29
30 .. kernel-doc:: include/linux/skbuff.h
31 :doc: dataref and headerless skbs
32
33 Checksum information
34 --------------------
35
36 .. kernel-doc:: include/linux/skbuff.h
37 :doc: skb checksums
38

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

패킷을 나타내는 기본 구조

1-13

`sk_buff`는 네트워킹에서 패킷을 나타내는 핵심 구조체입니다. 기본 buffer 배치와 data 영역의 관계는 `include/linux/skbuff.h`의 `Basic sk_buff geometry` kernel-doc에서 직접 가져옵니다.

.. SPDX-License-Identifier: GPL-2.0

struct sk_buff
==============

:c:type:`sk_buff` is the main networking structure representing
a packet.

Basic sk_buff geometry
----------------------

.. kernel-doc:: include/linux/skbuff.h
   :doc: Basic sk_buff geometry

shared skb, clone과 dataref

14-32

`sk_buff.users`는 여러 주체가 `struct sk_buff`의 수명을 함께 유지하게 하는 단순 reference count입니다. `sk_buff.users != 1`인 skb를 shared skb라 하며 `skb_shared()`로 확인합니다.

`skb_clone()`은 data buffer를 복사하지 않고 새 metadata 구조체만 만들어 skb를 빠르게 복제합니다. `skb_shared_info.refcount`는 같은 packet data를 가리키는 skb, 즉 clone 수를 나타냅니다.

`dataref`와 headerless skb의 세부 규칙은 `include/linux/skbuff.h`의 `dataref and headerless skbs` kernel-doc에서 가져옵니다.

skb clone
원본 sk_buff metadata공유 packet dataskb_clone()새 sk_buff metadata같은 dataref

metadata는 분리하지만 packet data buffer는 공유합니다.


Shared skbs and skb clones
--------------------------

:c:member:`sk_buff.users` is a simple refcount allowing multiple entities
to keep a struct sk_buff alive. skbs with a ``sk_buff.users != 1`` are referred
to as shared skbs (see skb_shared()).

skb_clone() allows for fast duplication of skbs. None of the data buffers
get copied, but caller gets a new metadata struct (struct sk_buff).
&skb_shared_info.refcount indicates the number of skbs pointing at the same
packet data (i.e. clones).

dataref and headerless skbs
---------------------------

.. kernel-doc:: include/linux/skbuff.h
   :doc: dataref and headerless skbs

Checksum metadata

33-37

skb checksum metadata의 의미와 상태 전환은 `include/linux/skbuff.h`의 `skb checksums` kernel-doc에 정의되어 있으며 이 절에서 그대로 포함합니다.

Checksum information
--------------------

.. kernel-doc:: include/linux/skbuff.h
   :doc: skb checksums