커널이 네트워크 스택을 처리하는 방법을 모른 채 질문에 대답하는 것은 간단합니다.
generel에서 네트워크 스택은 많은 계층으로 구성되어 있으며 실제 하드웨어가 가장 낮습니다. 일반적으로이 하드웨어는 드라이버 (각 네트워크 인터페이스마다 하나씩)를 통해 지원되며 NIC는 일반적으로 매우 단순합니다. 인터페이스, 생각하고 원시 데이터를 보낼 생각.
데이터를 수신하고 보내는 능력은 계층화 된 많은 프로토콜입니다. bottem 근처에는 기본적으로 정보 수신자를 지정할 수있는 ip 프로토콜이 있습니다. 상단에는 안정적인 연결을 지원하는 TCP가 있습니다.
질문에 대답하려면 네트워크 스택의 어느 부분을 교체해야하는지, 무엇을해야하는지 알아야합니다. 귀하의 질문에 대한 나의 이해에서 당신은 원래의 네트워크 스택을 유지하기를 원하고, 때로는 자신의 네트워크 스택을 사용하는 것처럼 보이며,이 경우에는 전략 패턴을 실제로 구현해야하고 어떤 패킷을 사용해야하는지 네트워크 스택의 최상위 레벨이 처리해야합니다.
리눅스에서 네트워크 스택을 구현하는 방식에 따라 커널을 변경하지 않고도이 기능을 구현할 수도 있고 구현하지 못할 수도 있습니다. 네트워크 스택의 각 부분이 자체 서비스로 구현되는 마이크로 커널 아키텍처에서는 네트워크 스택의 하위 부분을 전략 패턴으로 간단하게 파이프하고 필요한 경우이 파이프를 입력으로 사용하는 것이 쉽습니다. 네트워크 최상층.
rcomputer에 첨부 된 NIC 용 네트워크 드라이버를 직접 작성하는 것 외에 다른 방법은 없습니다. – JosephH
@JosephH 당신은 커널 바이 패스가 "드라이버 우회"라고 말하고 있습니까? 어떤 시점에서 "드라이버"가 필요합니까? 아니면 커널 외부에서 드라이버를 다시 작성해야합니까? – user997112
커널을 거치지 않고 어떻게 NIC를 직접 조작 할 수 있다고 생각하십니까? – JosephH