2012-05-25 2 views
0

TCP에서 재전송 대기열에 대해 흥미로운 점을 발견했습니다. this
을 읽었습니다.이 기사에서 TCP에 너무 많은 타이머가 있음을 알 수 있습니다. 그러나 어떻게 얻지 못합니까? 그것들은 모두 서로 동기화됩니다. 예를 들어, 메시지가 전송 될 때, 재전송 대기열에 놓이고, 재전송 타이머는 재전송 할 대기열에서 시간이 0에 도달하면이 대기열을 검사합니다. 이 큐는 큐 데이터 구조입니까? 그리고 그것은 두 개의 TCP 함수가이 큐를 검사 할 것인데, 첫 번째는 재전송 큐가 메시지를 재전송하고 synak 타이머가 성공적으로 전달 된 패킷을 삭제하는 것으로 보입니다.이 경우에는 일부 동기화 메커니즘이 있어야합니다. 그들은 같은 큐에 액세스 할 때 타이머를 사용합니다.tcp 재전송 대기열

어떻게 작동하는지 이해할 수 있습니까?

+1

더 많은 답변을 수락하십시오. –

답변

0

나는 당신이 타이머의 개념이 틀렸다고 생각한다. 그것은 응용 프로그램이 아닙니다. 운영 체제 타이머는 동기화 상태를 유지하는 데 문제가 없습니다. 큐의 개념이 틀렸다고 생각합니다. 큐의 큐 구조가 무엇인지 정확히 알지 못합니다. 질문은 실제로 의미가 없습니다. 큐는 큐입니다. 이 경우 다시 커널 큐입니다. 이것이 어떻게 구현되는지는 커널 작성자를 제외한 다른 사람의 관심사가 아닙니다.

+0

미안하지만, 내 질문에 미안하지만, 두 개의 타이머가 같은 큐를 업데이트 할 수있는 방법입니다. 예를 들어 한 시간이 0에 도달하면 재전송 타이머가 큐를 업데이트합니다. SYNACK 타이머가 ACK를 받았는데 지금 업데이트하려고하면 어떻게됩니까? 재전송 큐도 포함한다. 재전송 대기열에서 ACKed 패킷을 누가 제거 할 것인지 확실하지 않습니다. SYNACK 타이머 또는 다른 것입니까? 이 권리를 얻을 수있는 모든 문서를 공유하십시오. –

+0

@JackJordan 나는 [RFC 793] (http://www.ietf.org/rfc/rfc793.txt)을 잘 볼 것을 제안한다. – EJP

+0

EJP를 링크로 사용하여 "TCP가 데이터를 포함하는 세그먼트를 전송할 때 재전송 대기열에 사본을 놓고 타이머를 시작하고 해당 데이터에 대한 확인을 받으면 대기열에서 세그먼트가 삭제됩니다 타이머가 만료되기 전에 수신 확인을 수신하지 않으면 세그먼트가 재전송됩니다. " 즉, 각 패킷에 타이머가 설정되어 있습니까? 동기화가 수신되고 같은 시간 타이머가 0에 도달하면 어떻게됩니까? –