Byeo

Linux Cooked-mode Capture (SLL protocol) 본문

프로그래밍 (Programming)/컴퓨터 네트워크 - 학부 외

Linux Cooked-mode Capture (SLL protocol)

BKlee 2023. 8. 7. 22:46
반응형

tcpdump -nei any 

tcpdump -nei any의 결과는 위와 같았어요.

 

Layer 2의 data는 '00 00 00 01 00 06 fa 16 3e 30 1a 9d 00 00 08 00' 였습니다. 이를 Linux cooked capture라고 칭하나 보네요.

 

이게 뭔지는 wireshark document에서 잘 설명이 되어있었습니다.

 

Linux cooked capture

https://wiki.wireshark.org/SLL.md

 

SLL

Linux cooked-mode capture (SLL) This is the pseudo-protocol used by libpcap on Linux to capture from the "any" device and to capture on some devices where the native link layer header isn't available or can't be used. (For example, the Linux PPP code doesn

wiki.wireshark.org

 

 SLL은 sockaddr_ll의 약자로, "any" device를 caputure하기 위한 libpcap의 pseudo-protocol이라고 합니다. SSL이랑 다르니 주의! 이는 link layer를 확인할 수 없거나 사용할 수 없는 장비를 capture하기 위해 사용한다고 해요. 예시로, Linux PPP 코드에서 PPP header를 보통 비워 놓거나 값을 얻어올 수 없는 경우, 혹은 무작위 값을 넣어 놓은 경우와 같은 사례에서 libpcap이 제대로 읽을 수 없다고 합니다. 

 

 모든 네트워크 장비가 ethernet protocol을 사용하리라는 보장은 없습니다. 하지만 이 상황에서도 packet capture는 진행되어야 하기 때문에 SLL로 대체해서 사용한다고 해요. Linux의 libpcap은 any를 capture하는 경우 실제 hardware protocol과 관계없이 SLL을 사용한다고 합니다. (Interface-agnostic)

 

 Cooked mode라고 부르는 이유는 뭘까요? PF_PACKET/SOCK_RAW socket (Link 2 header까지 접근가능) 대신에 PF_PACKET/SOCK_DGRAM (Link3) 을 이용해 capture한다고 합니다. 그리고 link layer의 data는 libpcap이 직접 SLL에 맞추어 구성을 한다고 해요. 이 때문에 cooked mode라고 부르는 건가 싶네요. (언어적 유희가 들어간 것인지, 아니면 일반적으로 사용하는 표현인지는 잘 모르겠습니다..)

 

 기타 자세한 내용은 위에 링크된 wiki를 읽어보시길 추천드립니다~

 

LINKTYPE_LINUX_SLL

 그래서 '00 00 00 01 00 06 fa 16 3e 30 1a 9d 00 00 08 00'  가 의미하는게 뭘까요? 이 링크에 잘 정리되어 있었습니다.: https://www.tcpdump.org/linktypes/LINKTYPE_LINUX_SLL.html

  •  Packet type: 00 00  (00 00은 수신 / 00 04는 송신)
  •  ARPHRD_type 00 01 ( 802.3 frame)
  •  Link-layer address length: 00 06 (6 bytes)
  •  Link-layer address: fa 16 3e 30 1a 9d 00 00 (sender의 mac address, 8 bytes 이하의 경우 zero-padding, 8 bytes 이상의 경우 앞 8bytes만 표현) 
  •  Protocol type: 08 00 (IPv4)

 

Any를 안쓰면?

우리가 아는 ethernet header가 그대로 보이네요!

반응형
Comments