- 가정- Application 계층에 신뢰성이 있는 전송 서비스를 지원하려한다!
- Network 계층은 안전한 데이터 전송 보장 X
- Application 계층에서 rdt_send()에 의해 서비스가 요청됨
- Network 계층에서 rdt_rcv()에 의해 서비스 요청
- 신뢰성 있는 데이터 전송을 위한 프로토콜은 Transport 계층에서 수행됨
- 프로토콜은 FSM(Finite State Machine)으로 표현
>> 이제 TCP를 위해 어떤 방법들이 사용되었는지 알아보아요...

- 신뢰성 있는 프로토콜 Version 1.0
IF... 네트워크로 보낸 패킷은 반드시 상대편으로 전달 (loss 없음) + 패킷 데이터에 오류가 발생하지 않는다면
(네트워크 계층에서 패킷 전송 신뢰성을 가진다면)
송신자-수신자 모두 1개의 state를 가짐 - 신뢰성 있는 프로토콜 Version 2.0
IF... 네트워크로 보낸 패킷은 반드시 상대편으로 전달 (loss 없음) + 데이터에 에러 발생 가능(bit error)
(checksum을 통해 bit error 감지!)
- packet의 loss나 순서는 보장됨
- ACK이 올 때까지 보낸 packet 보관
[Ver 2.0 추가적 기능]
(1) 오류 검출: 비트 오류 발생 여부 체크! --> packet 안에 checksum 필드 사용
(2) 수신자 피드백
: receiver가 올바른 packet을 받았다면 sender에게 ACK(acknowledgement, 긍정 확인응답)
: receiver가 올바르지 않은 packet을 받았다면 sender에게 NAK(부정 확인응답)을 보냄
(3) 재전송: 수신자로부터 NAK 응답이 온다면 --> 보냈던 패킷 재전송 - 신뢰성 있는 프로토콜 Version 2.1
- 신뢰성 있는 프로토콜 Version 2.2
- 신뢰성 있는 프로토콜 Version 3.0

- Pipelining 데이터 전송
'Study > data' 카테고리의 다른 글
네트워크 계층(Network layer) (0) | 2022.07.13 |
---|---|
데이터링크 계층(Data Link layer) (0) | 2022.07.13 |