본문 바로가기

리눅스 커널 Linux kernel

9장 네트워킹 - 2

통신 프로토콜은 네트워킹-1의 포스팅에서와 같이 계층 구조로 이루어져 있고 이는 계층 구조에서 그 흐름이 다양하게 분기될 수 있음을 의미합니다. 리눅스는 이를 지원하기 위해 층과 층 사이에서 제어가 전달될 때 자료구조를 이용한 간접 호출 방법으로 통신 프로토콜을 구현하였습니다. 즉 상위 측이 하위 층을 직접 호출하는 것이 아닌 하위 층이 그 시작 주소를 특정 자료구조에 등록함으로 상위 층에선 자료구조에 등록된 함수만을 간접 호출합니다.

리눅스에서 통신 프로토콜을 나타내는 대표적인 자료구조로는 아래와 같은 것들이 있고 그 위치 또한 리눅스 3.10버전에서 직접 찾아보았습니다.

계층         자료구조 이름         위치

 

위의 자료구조들은 아래의 그림을 거쳐서 이용됩니다.

socket 자료구조는 중복입니다. 위쪽은 socket 함수를 호출한 태스크와 소켓의 엔트리가 연결되는 모습을 나타내고 아래쪽은 socket 자료구조가 결과적으론 net_device 자료구조와 연결되는 모습을 나타냅니다.