네트워크 4

우아자·2021년 9월 24일
0

넽웤

목록 보기
4/16

TCP/UDP는 공통적으로 멀티플랙싱,디멀티플랙싱,에러체크를 해준다.

TCP가 reliable를 제공해주지만 transport의 아래계층은 실제로 unreliable하다.
Unreliable channel에서 message error와 message loss가 일어날 수 있다.

RDT protocol: Reliable data transfer protocol
FSM: Finite state machine

Rdt 1.0: no packet error, no packet loss
따로 해줄 것이 없다.

Rdt 2.0: packet error, no packet loss
Checksum bit 추가=>에러 발생여부 판단
패킷을 받을 때마다 피드백 전송
에러가 존재한다면 재전송 요청
잘받았다=ACKs, 재전송=NAKs
메커니즘: 에러판단=>피드백=>재전송
하지만 피드백에 에러가 일어난다면?
송신자가 NAKs로 인식하고 재전송하고 수신자는 패킷이 new인지 duplicate인지 알 수 없다
New와 duplicate를 구별하기 위해서 번호(seq #)를 붙인다. =>rdt 2.1
하지만 헤더 필드에는 용량이 제한적이므로 seq #도 최소화시켜야 한다. 1bit면 충분하다.

Rdt2.2: NAK를 없앰 ACK만 사용
ACK안에 seq #를 보냄

Rdt3.0: packet error, packet loss
packet loss가 일어나면 피드백이 오질 않아서 송신자는 아무런 행동을 할 수가 없다. =>Timer
Timer를 얼마로 맞춰야하는가? Trade-off가 있어서 쉽게 결정할 수 없다.
Packet error: 에러 감지, 피드백, 재전송, seq #
Packet loss: Timeout
그러나 실제로는 패킷을 하나씩 보내는 것이 아니라 여러 개를 보낸다. =>go-Back-N, selective repeat

profile
공부한 것 정리

0개의 댓글