RAW소켓

RAW소켓은 '가공하지 않은 소켓' 이다

 

일반적인 소켓 함수는 네트워크를 통해 데이터를 주고 받을때 헤더정보를 붙이거나 떼어내는 등의 가공을한다

그 이유는 주고받는 데이터가 중요한것이지 헤더정보는 별로 중요하지 않기 때문이다

이런 헤더를 때고 붙이고 하는 부분은 운영체제의 프로토콜 스택 내에서 자동으로 일어난다

따라서 프로그래머는 헤더를 접할 기회가 없다

그렇지만 경우에 따라서는 이런 헤더를 직접 제어해야 될 필요가 있다

예를 들어, 새로운 프로토콜을 만든다든지, 헤더의 정보를 이용한 보안프로그램 등을 만들때이다

 

RAW소켓은 이러한 헤더 정보들에 대한 가공을 하지 않고, 프로그래머가 직접 제어할 수 있게 한다

 


일반적인 소켓의 흐름도

 


RAW소켓의 데이터 흐름도

 

RAW소켓을 사용하면 이렇게 IP헤더와 TCP헤더를 직접 제어할 수 있다

위의 데이터 흐름도에서 TCP헤더와 IP헤더가 붙었지만 꼭 IP헤더와 TCP헤더일 필요는 없다

즉, 네트워크 계층 헤더와 전송 계층 헤더 중 어떤 종류가 와도 상관없다

RAW소켓에서는 IP헤더와 TCP헤더 모두 사용자 데이터로 취급하기 때문이다

따라서 RAW소켓으로 TCP데이터를 전송하고 싶다면 IP헤더와 TCP헤더를 보내고자 하는 데이터 앞부분에 직접 만들어 주어야 한다


출처 : http://blog.naver.com/icecds?Redirect=Log&logNo=40054056259

[출처] RAW 소켓(1)|작성자 대승이

+ Recent posts