본문 바로가기
CS(Computer Science)/네트워크

[네트워크] 애플리케이션 계층에서 신뢰성 있는 통신 원리

by whdgus928 2023. 1. 29.

애플리케이션 계층 간의 통신에서 신뢰성은 어떻게 보장될까?

각 채널별로 필요한 메커니즘에 대해 알아보자.

 

Rdt1.0 에러 없는 완벽한 채널

sender은 패킷 보내고 receiver는 패킷을 받는 과정에서 패킷 에러, 패킷 상실이 발생하지 않는 완벽한 채널이다

이 때는 오류가 없기에 특별한 메커니즘이 필요 없다. 하지만 비현실적이다.

 

Rdt2.0 패킷 유실은 없고 에러는 있는 채널

아까와 달리 좀 더 현실적인  상황이다. 이 때는 에러 탐지와 에러를 알려주는 피드백 메커니즘이 필요하다,

receiver는 에러를 판단하고 ACK or NAK의 피드백을 준다. NAK의 피드백이 온다면 sender는 패킷을 재전송한다.

여기서 sequence number라는 개념이 등장한다. 시퀀스 넘버는 패킷을 구분하기 위한 숫자이다. 시퀀스 넘버를 헤더에 입력하는데 패킷 순서대로 번호를 계속 넣게 되면 숫자가 커져 용량이 커지게 된다. 헤더의 정보는 최소화된 게 좋아 0과 1을 돌려쓰는 방법을 사용한다.

 

Rdt2.2 ACK 응답만 사용

receiver의 피드백을 ACK로만 하는 프로토콜이다.

receiver는 패킷을 받으면 무조건 ACK 응답을 보낸다. ACK 응답에는 마지막에 받은 시퀀스 번호를 보낸다. 1을 보냈는데 1이 유실되고 마지막으로 전달받은게 0이라면 응답으로 0을 보내는데 이때 기대했던 번호 1가 달라 에러로 체크하게 된다.

 

Rdt3.0 패킷 유실과 에러가 발생하는 채널

패킷 유실과 에러가 모두 발생하는 상황에서는 Timer 메커니즘이 필요하다.

sender가 패킷을 보냈는데 피드백이 유실되면 반응을 못 받는다. 이때 합리적인 타이머 시간을 가지고 피드백을 판단한다. 패킷을 보내면 타이머가 시작되고 패킷이 유실된 경우 타이머가 초과돼 유실됐구나 판단하고 재전송한다. 타이머의 시간이 짧으면 유실날 때 복구가 빠른 대신 중복된 패킷이 생길 수가 있다. 타이머가 긴 경우는 에러 반응이 늦다는 특징이 있다.

 

※ 신뢰성이 보장되는 TCP에는 패킷 에러와 유실에 대한 메커니즘들이 구현돼 있다.

 

학습한 내용으로 실제 사용하게 만들기는 쉽지 않다. 패킷을 하나 보내고 하나 체크하는 방식이라 여러 패킷을 보낼 수 없기 때문이다. 실제로는 한 번에 모아서 보내고 체크하는 방식을 사용하는데 다음 글에서 이어서 학습하겠다.

 

자료출처

컴퓨터네트워크 한양대학교 이석복

반응형

댓글