TCP/IP 에서의 패킷 재전송 원리에 관해 질문드립니다.
글쓴이: iamsjkim / 작성시간: 화, 2003/10/07 - 3:26오후
TCP/IP의 경우 소켓함수를 쓰면 TCP 레벨에서 알아서 ack를 날려주는것은 알겠는데 이 ack를 송신단에서 수신하지 못할경우 내부적으로 어떤 루틴이 실행되는지 알고 싶습니다.
일단 질문의 요지를 정리해보면, send(), recv()함수에 관여하는 것은
송신단 응용프로그램, 송신단 운영체제, 수신단 운영체제, 수신단 응용프로그램, 이 네가지이고
송신단에서 send()를 수행하여 수신단 운영체제까지 전달이 되면 수신단 응용프로그램에서 recv()를 수행했던 안했던 일단 송신단 send()는 성공한것으로 본다..는 것을 검색해서 읽었습니다.
제 생각에 send()된 패킷이 수신단 운영체제에 무사히 수신되면 수신단 운영체제에서 송신단 운영체제로 ack를 날려서, 송신단 운영체제에 ack가 제대로 도착하면 송신단측에서는 송신이 제대로 된것으로 인지하는것 같은데 맞나요?
제가 이해하는 바가 맞다면.. "만약에" 수신단 운영체제가 보낸 ack를 송신단 운영체제가 받지 못할경우 어떤 루틴이 수행되는지 궁금합니다.
즉, 바로 송신단 응용프로그램으로 send()의 리턴값을 -1로 설정하게 해서 송신에러를 일으키는지, 아니면 송신단 운영체제와 수신단 운영체제끼리만 몇번의 재선송과 ack를 주고받다가 재전송 최대수까지 재전송하다가 그래도 ack를 못받으면 send()리턴값을 -1로 설정하는건지, 어떤건지 궁금합니다.
File attachments:
첨부 | 파일 크기 |
---|---|
TCP-Loss-Recovery-Mechanism.pdf | 75.3 KB |
Forums:
아래의 문서를 참조하세요
이 문서를 자세히 보시면 여러가지 TCP 모델 및 TCP loss recovery 메카니즘에 대해서 아시게 될 것 같군요.
Jesus is Love
댓글 달기