[컴퓨터 네트워킹] 3-5) Packet Retransmission method(패킷 재전송 방법)
인터넷 프로토콜을 처음 개발할땐 서로 신뢰할 수 있는 대상자와 통신 했기 때문에 신뢰성을 고려하지 않았다.
하지만 현재는 그러하지않다... ㅠㅠ
그러면 신뢰성있는 데이터를 전송하기 위해서는 어떠한 방법을 써야할까??
신뢰성 있는 데이터 전송의 원리
- 신뢰성 있는 채널을 통한 서비스 추상화
- 손상 및 손실 없는 데이터
- 순차적인 데이터 전송
Service of TCP
Error type and solution
데이터를 전송하다보면 다양한 원인으로 패킷이 손실되거나 망가질수 있다.
이러한 문제를 해결하기 위해 에러를 검출하고 다음과 방법을 도입했다.
-> Packet Retransmission method
패킷 재전송 방법은 다음과 같다.
- ARQ(automatic repeat request)
- Stop and wart
- Pipelining method
- Go back N
- Selective repeat
Stop and wait
- 송신자는 하나의 패킷을 보내고 수신자로부터 응답이 올때까지 기다린다.
- 만약 설정한 응답시간이 만료되었을 경우(timeout) 송신자는 응답 받지 못한 패킷을 재전송 한다.
- Round trip을 고려하여 timeout을 설정해야함
하지만 Stop and Wait은 한계가 존재한다..
Stop and Wait 퍼포먼스의 한계
이래서 등장한 것이 pipelining...!!!
Pipelining Protocols
Pipelining protocol는 2가지 종류가 있다.
Go-back-N
•Header에 seq num가 있음
•Window: RTT동안 보낼 수 있는 패킷의 크기(시간에 따라서 변함)
Selective Repeat Operation
하지만 Window Size와 Seq num를 고려하지 않으면 문제가 발생한다..
Window size와 Seq num와 관계
이러한 문제를 해결하기 위해서는
Window size x 2 <= Seq num 가 성립해야한다.