Linux TCP 스택 처리는 netfilter 이전 또는 이후에 발생합니까?

Linux TCP 스택 처리는 netfilter 이전 또는 이후에 발생합니까?

Linux netfilter에는 다양한 OSI 모델 계층에 여러 후크가 있습니다.이것영상. 그러나 TCP와 같은 전송 계층 프로토콜에는 재전송 또는 혼잡 제어와 같은 추가 처리가 필요합니다. netfilter 프레임워크나 특정 후크 이전이나 이후에 이런 일이 발생합니까? 그리고 왜 이런 식으로 설계되었는지. 소스코드에 대한 설명을 감상해 보세요.

답변1

소스 코드를 주의 깊게 읽지 않아도 테스트는 상당히 쉽습니다.

특정 IP의 특정 포트만 허용하는 방화벽 규칙 세트를 실행하는 컴퓨터에서 문제의 포트에 대한 tcpdump를 빌드하고 컴퓨터에서 해당 IP:포트에 연결을 시도합니다.아니요허용된.

들어오는 요청이 표시됩니다.

답변2

알았어 알아냈어이 비디오Devconf 2018에서는 Jiri Benc과 Linux 네트워크 파이프에 대해 이야기합니다. TCP는 전송 계층 프로토콜입니다. 패킷이 이를 사용하려면 네트워크 스택이 먼저 데이터 링크와 네트워크 계층 헤더를 구문 분석해야 합니다. 그런 다음 dst_input패킷이 로컬 처리용인지 전달용인지 확인합니다. 슬라이드 62에서 그는 패킷이 로컬로 처리되어야 한다면 TCP 상태 머신이 INPUT넷필터의 후크 이후에 이를 처리할 것이라고 언급했습니다. 구체적인 구현에 대해서는 tcp_v4_rcv의 기능을 참조하세요 linux/net/ipv4/tcp_ipv4.c.

관련 정보