Raw socket에 대하여 알아보자

Raw socket에 대하여 알아보자

Raw(날 것의) Socket(네트워크 소켓)

socket: 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점

오늘날 대부분은 인터넷 프로토콜(Internet Protocol; IP) 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 인터넷 소켓이다.

네트워크는 osi 7계층으로 구성되어 있다.

OSI 7계층

OSI/IP 모형
7. 응용 계층
NNTP · SIP · SSI · DNS · FTP · 고퍼 ·HTTP · NFS · NTP · SMPP · SMTP · DHCP · SNMP · 텔넷 · (더 보기)
6. 표현 계층
MIME · XDR · TLS · SSL
5. 세션 계층
지명 파이프 · 넷바이오스 · SAP
4. 전송 계층
TCP · UDP · SCTP · DCCP
3. 네트워크 계층
ARP · IP · ICMP · IPsec · IGMP · IPX · 애플토크
2. 데이터 링크 계층
CSLIP · SLIP · 이더넷 · 프레임 릴레이 · ITU-T G.hn DLL · L2TP · PPP · PPTP
1. 물리 계층
RS-232 · RS-449 · RS-485 · V.35 · V.34 ·I.430 ·I.431 · T1 · E1 · POTS · SONET/SDH · OTN · DSL · 802.11a/b/g/n PHY · ITU-T G.hn PHY · 이더넷 · USB · 블루투스

각 계층은 하위 계층의 기능만을 이용하며, 상위 계층에게 기능을 제공한다.

Raw socket은 인터넷 프로토콜 패킷을 주고받게 해주는 소켓이다.

보통 socket은 TCP/IP 헤더가 만들어져 있으며 운영체제의 커널단에서 프로토콜에 맞는 default 값을 채워서 제공한다.

이런 헤더를 직접적으로 조절할 수 있는 socket을 raw socket이라고 한다.

Raw Socket의 특징

  • 네트워크 계층(3 layer) 위로 모두 접근이 가능하다.
  • 네트워크 계층 헤더와 전송 계층 헤더를 직접 제어(프로그래밍) 가능하다.
  • 네트워크 계층으로 전송되는 모든 패킷을 모니터링 및 감지 가능하다.
  • IP segment에서 암호화된 악성코드가 있는 경우에 문제가 발생할 수 있다.
  • root 권한에서만 사용할 수 있다.

img

출처: TCP/IP 윈도우 소켓 프로그래밍

위의 영역들을 직접 프로그래밍하여 값을 채워 넣을 수 있다.

우리가 사용하는 네트워크는 0과 1로 표현 가능한(2진수로 된) 주파수들의 흐름으로 이루어져 있다.

이런 주파수의 데이터 단위를 패킷이라고 부른다. 좀더 자세한 설명영상

실제로 인터넷 선이 연결된 곳(무선도 결국 공유기가 인터넷 선으로 보냄)에서 발생하는 데이터들은 주파수로 변하여 송수신되며, raw socket을 이용하면 주파수들을 모두 들여다 볼 수 있다.

a라는 출발지에서 d라는 목적지까지 가는 경로에 b, c가 존재한다면 b와 c을 반드시 지나간다. 즉, 내 정보는 인터넷에 연결된 순간 사방에 공유된다.


mcauto 2018 ©