👉🏻 실뢰적인 데이터 전달 프로토콜의 구축
🤔 신뢰성 있는 데이터 전송을 위해 어떤 것들이 필요할까?
🤔신뢰성 있는 전송의 역할은 무엇일까?
→ 수신하는 프로세스(Receiver Process)가 받는 데이터가 정상적인 것인지 신뢰감을 주어야 함
🤔수신하는 프로세스(Receiver Process)에게 믿음을 주려면 어떻게 해야 할까?
- 실제 하위 레이어에서 일어나는 에러들을 체크를 해서 해결한 후 응용 계층에 전달
- 에러 발생시 재전송을 요구함
→수신하는 프로세스 (Receiver Process)에게 믿음을 줌
🔎인터넷에서 발생할 수 있는 에러의 형태
💊해결책
🤔 패킷을 재전송하면, 받는쪽(수신 프로세스)에서는 어떻게 이전의 내용의 재전송인지 어떻게 알지?
- 패킷마다 일련번호(Sequence Number)라는 것을 두어 구별함
→ 도착한 세그먼트의 순서들을 알 수 있음
→ 데이터의 중복을 방지할 수 있음
🔎에러 발생 시 재전송 (전송 계층)
- 아래와 같은 그림의 패킷을 재전송을 ARQ(Automatic Repeat reQuest의 약자)라고 부름
🔎Stop-And-Wait방식 1
🔎Stop-And-Wait방식 2
⚠️ 주의해야 할점 - 타임아웃 시간을 어떻게 잡을까?
👨🏻🏫정리
- 타임 아웃 시간을 잡을 때는 Sender와 Recevier간의 왕복시간, Round Trip Time을 잘 고려해서 잡아야 함
🥏파이프라인된 신뢰적 데이터 전송 프로토콜
- 파이프 라이닝(pipelining): 하나의 처리과정이 끝나고 다음 처리과정이 수행되는 것이 아닌, 여러 단계를 병렬적으로 수행하여 처리속도를 높이는 기술
🔎Stop-And -Wait 방식의 성능
🔎전체 링크 대역폭 대비 송신자가 패킷을 보내고 오는데 걸리는 자원의 백분율
👨🏻🏫정리
- 1Gbps 링크를 설치해 놓고 Stop-And-Wait 방식의 프로토콜 때문에 물리자원이 낭비됨
🔎시간축으로 보는 Stop-And -Wait 방식
⚠️ 문제점
- 30.008ms 중 실제 데이터가 전달되는 시간은 8 μs 밖에 안됨
🔎Pipelined 프로토콜
🙆🏻♂️Pipelined 프로토콜의 구분
- go-back-N 방식, selective repeat 방식으로 구분됨
👨🏻🏫정리
- Pipeline방식을 사용해서 연달아 데이터를 보내서 전체 utilization을 높일 수 있음
🔎Pipelined 프로토콜의 구분
- Pipelined 프로토콜은 Go-Back-N방식, Selective방식으로 구분할 수 있음
👨🏻🏫차이
- Go-Back-N방식은 Receiver가 받은 패킷을 판단해보니, 해당 패킷 이후 부터 잘못 되었다고 하면 Sender는 해당 패킷 이후부터 모두 재전송을 해야 함
- Selective방식 Receiver가 받은 패킷을 판단해보니, 해당 패킷이 잘못되었다고 판단하면 잘못된 부분만 재전송함
👨🏻🦱N부터 반복(Go-Back-N, GBN)
- 초록색 부분 = 패킷을 전송해서 ACK를 받은 상태
- 노란색 부분 = 연달아 데이터를 전송한 부분(아직 ACK를 받지 못한 부분)
- 파란색 부분 = Window사이즈가 N이며, 아직 해당 부분을 더 보낼 수 있다는 부분(ACK가 도달하지 않아도, 이부분까지는 더 보낼 수 있음을 의미함)
- Cumulative ACK를 쓰기 때문에, 마지막 패킷에 대해서 ACK가 왔다는 뜻 = 앞의 7개의 데이터도 잘 도착했다는 뜻임
🔎GBN방식의 패킷이 주고 받는 과정
🌐선택적 반복(Selective Repeat, SR)
🔎SR방식의 패킷이 주고 받는 과정
'네트워크' 카테고리의 다른 글
네트워크 - ch3-3. 비연결성 전송 프로토콜(UDP) (0) | 2023.04.01 |
---|---|
네트워크 - ch3-2. 다중화와 역다중화 (0) | 2023.04.01 |
네트워크 - ch3-1. 전송 계층 서비스 및 개요 (0) | 2023.04.01 |
네트워크 - ch2-6. 비디오 스트리밍과 컨텐츠 분배 네트워크 (0) | 2023.03.26 |
네트워크 - ch2-5. P2P 파일 분배 (0) | 2023.03.26 |