네트워크 상에서는 무수히 많은 데이터가 오고가고, 그에 따라 트래픽 혹은 여러가지 기타 이유로 인하여 패킷이 손실할 수 있는 가능성이 많습니다. 이러한 패킷손실에 대하여 TCP는 신뢰적인 데이터 전송 메카니즘을 가지고 있습니다.


매우 복잡한 부분이지만, 간단하게 요약해서만 설명드리고자 합니다.


- UDP 프로토콜의 경우에는 비신뢰적인 네트워크 통신방식이므로 에러를 검출해낼 수 없습니다

, TCP 프로토콜이 신뢰적인 통신 연결방법이므로 이 TCP통신에서 데이터가 전송 될 때 패킷이 깨질 수 있는 가정으로 두어야 합니다.

첫째, 신뢰적인 데이터 전송의 메커니즘으로는 먼저 Checksum(체크섬) 이 있는데 이는 전송된 패킷 안의 비트 오류를 발견하는데 사용됩니다.

둘째, Timer(타이머)는 채널 안에서 패킷이 손실 되었기 때문에 발생되는 패킷의 타임아웃/재전송에 사용됩니다. 타임아웃은 패킷이 지연되었지만 손실되지는 않았을 때(지속 타임아웃), 또는 패킷이 수신자에 의해서 수신되었으나 수신자에서 송신자로의 ACK가 손실 되었을 때 발생하기 때문에, 수신자에 의해서 수신되는 패킷은 중복 복사(수신)된 패킷일 수 있습니다.

셋째, 순서번호(Sequence)는 송신자에서 수신자로 가는 데이터 패킷의 순서번호를 붙이기 위해서 사용됩니다. 수신자 패킷의 순서번호의 격차는 수신자로 하여금 손실된 패킷을 검사하게 합니다. 중복된 순서번호를 갖는 패킷은 수신자로 하여금 패킷의 중복 복사(수신)를 검사하게 합니다.

넷째, 확인응답(Acknowledge)는 패킷이 정확히 수신되었다는 응답을 송신자에게 하기 위해 수신자에 의해서 사용됩니다. 확인 응답은 일반적으로 패킷의 순서번호 또는 확인응답된 패킷을 전달합니다. 확인응답을 프로토콜에 의존하여, 개별적이거나 누적될 수 있습니다.

 

그밖에, 부정 확인응답(NAK)는 패킷이 정확히 수신되지 않았다는 응답을 송신자에게 하기 위해 수신자에 의해서 사용됩니다. 부정확인응답은 일반적으로 정확히 수신되지 않은 패킷의 순서번호를 전달하게 됩니다.

 

[참고]

이러한 신뢰적인 데이터전송 메커니즘을 통하여 패킷이 깨졌을 때에 대하여 인식하고, 재전송할 수 있게 합니다.




WRITTEN BY
SiriusJ

,