문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류:네트워크 계층]] == 개요 == '''Go-Back-N''' 은 자동화된 신뢰도 있는 패킷의 전송을 위한 프로토콜 로써, [[파이프 라인]]을 형성하는 일련의 패킷을 [[ACK]] 응답이 없어도 지속적으로 보내는 방식이다. N개의 [[슬라이딩 윈도우]]를 만들어서 패킷을 보내게 된다. 이는 N개의 패킷을 ACK 응답이 없어도 보낼 수 있게 해준다. == 설명 == 수신자는 다음 현재 받는 올바른 패킷에 대한 ACK 응답만 보내게 된다. 또한 수신자는 순서가 올바르지 않은 패킷이나 손상된 패킷은 단순히 폐기하고 올바르게 수신번호를 맞추면서 도착한 패킷에 대한 응답만 보낸다. 송신자는 마지막 ACK응답부터 현재 보내는 패킷까지의 길이가 Nbit 가 되도록 계속해서 패킷을 보내게 된다. GBN은 [[Stop-and-wait]]보다 더욱 시간적인 측면과 속도적인 측면에서 효과적인데, 그 이유는 보내는 패킷의 길이가 늘어나기 때문에 한번에 많은 정보 를 전송할 수 있는데서 기인한다. 다른 말로는, 보낸 패킷을 기다리는 시간을 보내는데 사용하기 때문에 남는 시간을 보다 효율적으로 사용한다는 것이다. 하지만 단순히 하나의 패킷의 실수로 전체 윈도우를 다시보내는 불상사가 발생하기 때문에 [[SR]]방식보다는 효율이 떨어진다. == 의사코드 == <pre> N = window size Rn = request number Sn = sequence number Sb = sequence base Sm = sequence max 수신자: Rn = 0 while: if 받은 패킷이 = Rn 이고 에러가 없으면 패킷을 승인하고 윗단계로 전송한다. Rn = Rn + 1 Else 패킷을 거절하고 NAK응답을 보내거나 아무것도 하지 않는다. 송신자: Sb = 0 Sm = N + 1 while: 1. if Rn > Sb //현재 ACK패킷이 도착하면 그 후의 윈도우 크기만큼 패킷들을 보낸다. Sm = (Sm - Sb) + Rn Sb = Rn 2. if 패킷이 전송중이 아니라면, Sb <= Sn <= Sm인 Sn인 패킷들을 보낸다. </pre> == 윈도우 크기의 선택 (N) == 윈도우 크기를 정하는 전략은 # 수신자의 버퍼크기를 고려해야 한다. ([[TCP]]의 rwnd를 통해서 구현) # N은 순서번호보다는 작아야 한다. # 1과 2에서 정한 숫자중 제일 큰 숫자를 선택한다. Go-Back-N 문서로 돌아갑니다.