배경
저는 비 IP 네트워크 프로토콜 및 관련 네트워크 장치 드라이버(비 이더넷 하드웨어)의 커널 공간 구현을 작성하려고 합니다. 내 프로토콜을 사용하여 소켓을 내 드라이버와 연결하는 방법을 이해하는 데 어려움이 있지만 프로토콜 및 드라이버 개발에 대한 몇 가지 리소스를 찾았습니다.
목적은 사용자 공간의 프로그램이 bind(socket(AF_TERRIBLE_IDEA, ...), ...);
실행을 위해 호출하기만 하면 되도록 작동하게 만드는 것입니다.
목적은 동시에 커널 공간에서의 개발에 더 익숙해지기 위한 것이므로 사용자 공간으로의 마이그레이션은 이상적이지 않습니다.
질문
언제제본호출을 한 후 커널은 소켓을 연결할 장치(따라서 장치 드라이버)를 어떻게 알 수 있습니까?
답변1
구경하다원시 소켓그리고패킷 소켓, 이는 사용자 공간에서 비표준 네트워크 프로토콜을 구현하도록 특별히 설계되었습니다.
다른 응용 프로그램이 드라이버에 연결하는 방법은 전적으로 귀하에게 달려 있으며 최선의 선택은 구현하려는 세부 사항에 따라 달라집니다.
이 bind
명령은 다양한 컨텍스트에서 다양한 작업을 수행합니다. 일반적으로 "필요한 기본 데이터를 제공하겠습니다"의 변형입니다. 저것할 수 있는특히 표준 프로토콜(사용하지 않는)의 경우 특정 소스 주소 및/또는 네트워크 인터페이스를 표시하지만 필수는 아닙니다. 그래서 생각처럼 되지 않습니다.