2014-11-09 2 views
0

패킷 세그먼트가 두 부분으로 나옵니다. ticp 재조합으로 wireshark에서 볼 수 있습니다. Google에서 검색 한 결과 조각화 된 데이터에 대해 조각 비트가 설정되어 있지 않음을 알았습니다. 그러나 설정되지 않았습니다. 단편 data.i에 대한 패킷을 얻으려면 자바 jnetpcap 라이브러리를 사용하고 있지만 어떤 필드와 플래그를 내가 패킷을 재조합 할 때까지 기다려야합니다 알아낼 수 없습니다. 어떤 때는 조각이 나옵니다. 패킷을 다시 어셈블하는 방법을 알아야합니다.문제가 있습니다.

+0

물론 '조각난 데이터에도 설정되지 않았습니다'. 그렇지 않으면 데이터가 단편화되지 않았습니다. – EJP

답변

0

프래그먼트가 프로토콜의 많은 래터에서 발생할 수 있습니다. IP 데이터 그램이 여러 IP 데이터 그램으로 조각화되어 IP에서 발생할 수 있으며 TCP 상단에서 실행되는 프로토콜에서 발생할 수 있습니다.

"조각 내기"비트는 IP 비트입니다. 패킷 분할은 TCP 계층에 있습니다. 그 세분화는 IP 계층에서 발생하는 단편화와는 완전히 별개입니다.

IP 재 조립은 패킷 분석 프로그램에서 상당히 쉽게 수행 할 수 있습니다. 프래그먼트를 재구성하는 데 필요한 모든 데이터는 프래그먼트의 IP 프로토콜 헤더에서 사용할 수 있습니다.

TCP 재 조립은 NOT처럼 쉽습니다. 추상화 TCP는 TCP의 최상위에서 실행되는 프로토콜에 시퀀스로 구성된 8 진수 (바이트) 스트림을 제공합니다. 패킷 경계가 없습니다. TCP를 통해 전송 된 패킷 또는 다른 멀티 바이트 구조는 임의로 패킷의 임의 지점에서 TCP 세그먼트로 분리 될 수 있습니다.

이것은 패킷 분석 프로그램에서 TCP 리 어셈블리가 TCP 세그먼트를 이해하는 코드와 TCP 상단에서 실행되는 프로토콜을 이해하는 코드가 협력해야한다는 것을 의미합니다. 예를 들어 Wireshark의 packet-tcp.c 파일에있는 tcp_dissect_pdus() 루틴과 해당 req_resp_hdrs.c 파일에있는 코드를 참조하십시오.

+0

불완전한 패킷이 목적지에 도착하는 경우 다음 패킷이 나올 것으로 예상되는 경로가있을 수 있습니다. 어떻게 확인할 수 있습니까? 나는이 답변을 보았습니다. http://stackoverflow.com/questions/4481914/reassembling-tcp-segments. 그러나 wireshark에서 볼 때 대답에 주어진 seq no를 얻지 못했습니다. – saifjunaid

+0

"wireshark는 어떤 세그먼트가 서로 속하는지 알기 위해 Ack를 사용합니까?"라는 질문에 대한 대답. * NO *입니다. 앞에서 말한 것처럼 TCP 자체는 TCP 바이트 스트림의 어떤 바이트가 어떤 상위 레벨 패킷인지 나타내는 * NO * 정보를 제공합니다. 더 높은 수준의 패킷을 두 개의 개별 TCP 세그먼트간에 분할 할 수있을뿐만 아니라 TCP 세그먼트에 여러 패킷의 일부 또는 전부를 포함시킬 수 있습니다. 왜 TCP 헤더의 데이터만을 기반으로 리 어셈블리를 수행 할 수 없는지 이해할 때까지는 TCP를 실행하는 프로토콜에 대해 패킷을 다시 어셈블하는 코드를 작성할 수 없습니다. –

관련 문제