Wireshark를 보면 TCP 스트림이 RST 패킷 대신 RST, ACK 패킷으로 끝나는 경우가 종종 있습니다. 이것이 왜 그런지 아는 사람이 있습니까?
내가 보는 것의 예 :
SYN SYN, ACK ... 데이터 ... RST, ACK
Wireshark는 RST, ACK 패킷 이전에 RST 패킷을 선택하지 않습니다.
Wireshark를 보면 TCP 스트림이 RST 패킷 대신 RST, ACK 패킷으로 끝나는 경우가 종종 있습니다. 이것이 왜 그런지 아는 사람이 있습니까?
내가 보는 것의 예 :
SYN SYN, ACK ... 데이터 ... RST, ACK
Wireshark는 RST, ACK 패킷 이전에 RST 패킷을 선택하지 않습니다.
답변:
RST / ACK는 RST의 승인이 아니며 SYN / ACK는 SYN의 정확한 승인이 아닙니다. TCP 설정은 실제로 4 방향 프로세스입니다. 시작 호스트는 SYN을 수신 호스트로 보내고,이 SYN에 대한 ACK를 보냅니다. 수신 호스트는 SYN을 시작 호스트로 보내고,이 호스트는 ACK를 다시 보냅니다. 이것은 상태 저장 통신을 설정합니다.
SYN -->
<-- ACK
<-- SYN
ACK -->
이를보다 효율적으로하기 위해 수신 호스트는 SYN을 ACK하고 동일한 패킷으로 자체 SYN을 전송하여 우리가 보는 3 방향 프로세스를 만듭니다.
SYN -->
<-- SYN/ACK
ACK -->
RST / ACK의 경우 장치는 ACK를 사용하여 이전 패킷에서 전송 된 모든 데이터를 ACK로 확인한 다음 RST와의 연결이 종료되었음을 발신자에게 알립니다. 이 장치는 SYN / ACK처럼 두 패킷을 하나로 결합합니다. RST / ACK는 일반적으로 TCP 세션을 닫을 때 정상적인 응답이 아니지만 반드시 문제를 나타내는 것은 아닙니다.
RST ACK
가 가짜 소스 주소에 많은 응답을 보내는 것을 볼 수 있습니다 .
연결이 설정되면 모든 패킷에 ACK가 설정되고 안정적인 전송 / 보안을 위해 수신 된 패킷의 시퀀스 번호와 일치해야합니다. ACK가없는 RST는 수락되지 않습니다. 한쪽이 RST를 보내면 소켓이 즉시 닫히고 유효한 RST를받은 직후 수신 측도 소켓을 닫습니다. 인정 될 필요는없고 인정 될 수 없다.
TCP 핸드 셰이크 후
A ---> B Syn = x, Ack = y, len = z, ACK 플래그
B ---> A Syn = y, Ack = x + z, len = o, ACK 플래그
A ---> B Syn = x + z, Ack = y + o, len = p, ACK 플래그
B ---> A Syn = y + o, ACK = x + z + p, len = q, RST, ACK 플래그
B는 마지막 패킷을 보낸 후 소켓을 닫고 A는 소켓을받은 후 소켓을 닫습니다.
(여기서 TCP 창을 고려하지 않거나, 승인 전에 한쪽 끝에서 더 많은 패킷이있을 수 있습니다)
ACK 플래그, 승인 번호 및 승인 절차는 관련되어 있지만 동일하지는 않습니다.
RFC793
승인 번호 : 32 비트
If the ACK control bit is set this field contains the value of the
next sequence number the sender of the segment is expecting to
receive. Once a connection is established this is always sent.
리셋 처리
SYN-SENT를 제외한 모든 상태에서 모든 재설정 (RST) 세그먼트는 SEQ 필드를 확인하여 유효성을 검사합니다. 시퀀스 번호가 창에 있으면 재설정이 유효합니다. SYN-SENT 상태 (초기 SYN에 응답하여 수신 된 RST)에서 ACK 필드가 SYN을 확인하면 RST가 허용됩니다.
RST의 수신자는 먼저이를 검증 한 후 상태를 변경합니다. 수신자가 LISTEN 상태 인 경우이를 무시합니다. 수신자가 SYN-RECEIVED 상태에 있고 이전에 LISTEN 상태에 있었던 경우, 수신자는 LISTEN 상태로 돌아가고, 그렇지 않으면 수신자가 연결을 중단하고 CLOSED 상태가됩니다. 수신자가 다른 상태에있는 경우 연결을 중단하고 사용자에게 알리고 CLOSED 상태가됩니다.