최근에 네트워크 프로토콜과 OSI 모델에 대해 좀 더 깊이 파고 들었는데, 수신되는 TCP 데이터 그램 (잘못된 용어 인 경우 수정)이 특정 크기를 초과 할 때 여러 부분으로 분할됩니다. 제 라우터의 MTU입니다. 이 정보를 어디서 얻었는지 궁금하다면 내가 찾고있는 일부 정보를 추출하기 위해 SharpPcap을 사용하여 데이터 그램을 캡처했습니다.
어쨌든 나는 단편화 된 패킷의 재 조립이 IP 계층의 작업이되어서는 안되는지 궁금합니다. 왜냐하면 확실히 이것을 달성하기위한 정보 (id, 단편화 플래그, 단편 오프셋)를 제공하기 때문입니다. 또한 TCP 계층은 스트림 기반 프로토콜로 해석되어야한다고 읽었습니다. 그러나 이것은 실제로 응용 프로그램의 버퍼를 올바른 방식으로 채우는 것이 TCP 계층에 달려 있음을 의미 합니다. 따라서 초기 정보가 재구성되고 모든 추가 계층이 " 업 " 될 수 있습니다 .
이 관찰을하기 전에 저는 실제로 TCP 계층이 데이터 그램을 재 조립하는 데 신경을 써야한다고 생각했지만 언급 된 계층 중 어느 것도하지 않습니다.
이로 인해 다음과 같은 질문이 나타납니다. 수신 한 TCP 데이터 그램이 왜 재 조립되지 않았 으며 어떤 계층이 실제로이를 처리해야합니까?
ip 계층은 http://en.wikipedia.org/wiki/IP_fragmentation의 조각화 및 재 조립을 처리합니다 .
winpcap / airpcap / libpcap을 사용하는 SharpPcap과 같은 도구를 사용하면 캡처중인 장치에서 원시 데이터 그램을 받게됩니다. 많은 어댑터의 경우 이것은 ip 프레임 등을 포함하는 이더넷 데이터 그램입니다.
이는 재 조립이 수행되는 네트워킹 스택에서 처리 한 후 수신 된 데이터와는 대조적입니다.
따라서 데이터가 리 어셈블리를 수행하는 네트워킹 스택의 출력이 아닌 어댑터 수준에서 캡처되기 때문에 SharpPcap (또는 다른 많은 캡처 라이브러리)에서 리 어셈블 된 데이터 그램을 얻지 못할 것으로 예상했습니다.
직접 캡처하거나이 기능을 제공하는 라이브러리를 사용하여 재 조립을 수행 할 수 있습니다. 이러한 구성 요소를 Packet.Net (SharpPcap이 사용하는 패킷 처리 라이브러리)에 추가하여 이러한 재 조립을 제공 할 수도 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다