2014-02-08 4 views
1

4 방향 핸드 셰이크 연결 종료를 3 방향 및 양방향으로 줄일 수 있습니다. 3 방향 핸드 셰이크 연결 설정이 4 방향으로 확장 될 수 있습니까?TCP 4 방향 핸드 셰이크

SYN=> 
<=ACK 
<=SYN 
ACK=> 

답변

4

SYN 및 ACK의 의미를 감안할 때 SYN + ACK를 다른 패킷으로 보내고 핸드 셰이크를 지연시키는 것이 가능해야합니다. 예 : 클라이언트는 SYN을 보내고 서버는 새 연결에 대한 클라이언트의 소원을 확인하기 위해 ACK로 응답하지만 아직 소원을 부여하지는 않습니다. 나중에 서버는 SYN을 보내고 일치하는 ACK를 클라이언트에서 가져오고 연결이 설정됩니다. 그러나 나는 누군가가 이런 식으로 연결을하고 그것이 어떤 OS가 그것 위에서 도둑질을 할 것이라는 점을 의심한다.

그러나 4 방향 핸드 셰이크에 대한 또 다른 시나리오가 있지만 패킷 순서가 다릅니다. 양측이 동시에 상대방과의 연결을 설정하려고하면 발생할 수 있습니다. 둘 다 피어에게 SYN을 보내고 ACK를 다시받습니다. RFC 793 (TCP) 섹션 3.4에 설명되어 있습니다. 하지만 한 쪽 끝이 연결을 기다리고 다른 쪽 끝이 연결을 수행하는 일반적인 클라이언트 - 서버 - 시나리오에 맞지 않으므로 그러한 악수를 볼 수 있을지는 의문입니다.

편집 : 당신이 생각하고있는 핸드 셰이크가 존재하며 이것을 "분할 핸드 셰이크"라고합니다. http://hackmageddon.com/2011/04/17/tcp-split-handshake-attack-explained/을 참조하십시오. 예상 한대로, 그것은 보편적으로 지원되지 않습니다.

+0

"의미를 감안할 때 ... 가능할 것입니다."RFC 지식을 기반으로하는 지점을 증명했는지, 아니면 그냥 가정했는지 확신 할 수 없습니다. – SerG

+2

ACK의 의미는 데이터가 수신되었음을 확인하기위한 것이며 SYN의 의미는 연결을 요청하는 것입니다. 두 플래그는 서로 직교하며 함께 사용될 때 FIN 및 ACK와 같은 특수한 의미가 없기 때문에 함께 보내거나 별도의 패킷으로 보내야합니다. –