2012-07-22 1 views
0

어떤 요청 패킷에 대한 응답 패킷을 구별하는 Java (jpcap) 응용 프로그램을 작성했습니다. 갑자기 나는이 두 HTTP 패킷이 내 브라우저가 정확히 동일한 번호 (seq 번호, ack 번호, ...)를 보낸 것을 제외하고는 그 중 하나는 푸시 플래그와 다른 식별 번호가 있습니다. 왜 브라우저가이 두 가지를 보냈는지 궁금합니다. 아약스 야?내 브라우저가 푸시를 제외하고 동일한 속성을 가진 두 개의 패킷을 보내는 이유는 무엇입니까?

1342824149:911270 /192.168.2.#->/174.143.213.# protocol(6) priority(0) hop(128) offset(0) ident(14123) TCP 11303 > 80 seq(2473817076) win(17040) ack 3940549542 

1342824149:911797 /192.168.2.#->/174.143.213.# protocol(6) priority(0) hop(128) offset(0) ident(14124) TCP 11303 > 80 seq(2473817076) win(17040) ack 3940549542 P 

더 중요한 질문이 두 패킷에 대해 별도의 응답이 있습니까? 또는 단 하나의 응답이 있습니까? 또는 동일한 응답? 어떤 반응이 생길까요?

+0

브라우저가 아니라 복제 패킷을 보내는 TCP 스택입니다. – Gabe

+0

왜, 어떻게? @Gabe – Alireza

+1

브라우저가 "포트 Y의 IP 주소 X에 연결"하고 "이 바이트를 보냅니다"라고 말합니다. 실제로 패킷을 만들고 목적지에 도달 하는지를 확인하는 커널 내부의 TCP/IP 스택입니다. 이 경우 첫 번째 패킷이 대상에서 확인 응답을받지 못하여 다시 전송되었습니다. – Gabe

답변

1

브라우저가 "포트 Y의 IP 주소 X에 연결"하고 "이 바이트를 보냅니다"라고 말합니다. 실제로 패킷을 만들고 목적지에 도달 하는지를 확인하는 커널 내부의 TCP/IP 스택입니다. 이 경우 첫 번째 패킷이 대상에서 확인 응답을받지 못하므로 커널의 TCP 코드가 다시 패킷을 보냈습니다.

0

동일한 TCP 시퀀스 번호를 갖는 경우 동일한 데이터입니다. 두 번째 것은 비 확인 응답으로 인한 재시도입니다. PUSH 플래그는 실제로 라우터를 제외하고는 아무 것도하지 않습니다. 서로 다른 Wireshark 번호는 서로 다른 실제 수신 이벤트이기 때문에 패킷에 없습니다.

+0

OK, 응답이 돌아 오면 두 번째 응답이 아니라 첫 번째 응답이 응답이라고 말합니다. 왜냐하면 첫 번째 것은 무시 당하기 때문에 무시됩니다! 권리? – Alireza

+1

@Alireza 나는 그러한 것을 말하지 않았다. 응답이 돌아 오면 둘 중 하나를위한 것이고, 둘 다 동일한 데이터를 포함하고 있기 때문에 어떤 것이 든 상관 없습니다. 그리고 말할 길이 없습니다. 처음에 도착한 경우 두 번째 것은 삭제됩니다. 첫번째 사람이 도착하지 않았다면, 두 번째 사람은 받아 들여질 것입니다. 두 경우 모두 수신 응용 프로그램의 동작이 동일합니다. – EJP

관련 문제