본문 바로가기

네트워크

Pipelining protocol

Pipelining protocol이란?

연속적으로 N개까지 계속 보낼 수 있다.

 

 

Go-back-N :

- 누적 Ack (마지막 Ack만 제시간에 오면 완료)

- 하나의 타이머로 체크 (보낸 패킷들 중 가장 오래된 timer)

- timeout이 걸리면 window 속 패킷들을 모두 다시 보냄.

 

     윈도우

     초록색 : packet을 보내고 Ack까지 받음 = 해결 완료

     노랑색 : packet은 보냈는데 Ack/Nak는 아직 못 받음

       => timer시작은 노랑색 중 가장 오래된 패킷부터

     파랑색 : packet 보낼 대기 중

     흰색 : packet 보낼 준비도 안 됨

     N : 연속으로 보내기 위해 저장하는 장소

 
 

     동작

     윈도우 사이즈는 4이다.

     sender window 속 파랑색은 packet을 보내고 Ack를 기다리는 중인 상태

     sender window 속 하얀색은 아직 window 안에 들어오지 않았고 역시 보내지 않은 상태

  1. sender : 윈도우 사이즈만큼 packet 0, 1, 2, 3을 연속으로 보내고 응답을 기다린다.
  2. receiver : 원하는 packet을 이어서 받지 못하면 그 후 packet이 도착할 때마다 내용은 버리고 잘 받아진 제일 마지막 packet의 Ack를 보낸다.
  3. sender : 응답이 차례로 올때마다, 도착한 packet은 윈도우에서 빼고 아직 윈도우에 들어오지 않은 패킷을 넣은 후 receiver에게 보낸다.
  4. sender : 윈도우 속 제일 오래된 packet의 Ack가 도착하지 않아 timeout이 걸리면, sender는 그 때 윈도우에 있는 모든 packet을 다시 보낸다.
 
 
Selective Repeat :

- 개별 Ack

- 개별 타이머로 체크

- timeout이 걸리면 timeout 걸린 패킷만 재전송

 

Sender

      초록색 : packet을 보내고 Ack까지 받음 = 해결 완료

      노랑색 : packet은 보냈는데 Ack/Nak는 아직 못 받음

      파랑색 : packet 보낼 대기 중

      흰색 : packet 보낼 준비도 안 됨

       N : 연속으로 보내기 위해 저장하는 장소

 

Receiver

      회색 : packet이 제대로 도착하지 않음

      핑크색 : 제대로 도착하지 않은 packet의 뒷 packet으로 일단 버퍼에 저장시킴.

      파랑색 : 받을 준비 되어있음.

      흰색 : packet 받을 준비도 안 됨.

 
 

동작

 
 
  1. sender : 윈도우 사이즈만큼 packet 0, 1, 2, 3을 연속으로 보내고 응답을 기다린다.
  2. receiver : 원하는 packet을 이어서 받지 못하면 그 후 packet이 도착할 때마다 버퍼에 넣고 잘 받아진 packet의 Ack를 보낸다.
  3. sender : 응답이 차례로 올때마다, 도착한 packet은 윈도우에서 빼고 아직 윈도우에 들어오지 않은 패킷을 윈도우에 넣은 후 receiver에게 보낸다.
  4. sender : 각 packet의 timer동안 Ack가 도착하지 않아 timeout이 걸리는 packet이 생기면, sender는 timeout 걸린 packet만 다시 보낸다.
  5. receiver : 재전송된 packet이 잘 받아지면 Ack를 보내고 버퍼에 저장된 packet들과 함께 응용계층으로 보낸다.
 
 
 

※ 윈도우 사이즈는 시컨스 넘버의 1/2 이하가 좋다.

sender와 receiver가 서로 소통 할 수 없다.!!

 

ex) 위 사진은 sender가 0,1,2,3,0,1,2,3 시퀀스를 보내는 상황

receiver가 받은 Ack가 sender에게 도착하지 못하면 receiver는 packet을 받았지만 sender는 재전송한다. 이 때 packet의 시퀀스 번호가 중복될 수 있는데 receiver는 지금 sender가 재전송한 packet이 앞으로 받을 packet이라고 오해할 수 있다.

'네트워크' 카테고리의 다른 글

URI, URL, URN  (0) 2022.07.17
종단시스템 접근, 네트워크 코어  (0) 2022.07.17
UDP/TCP의 RDT 1.0~3.0  (0) 2022.07.17
Multiplexing + demultiplexing  (0) 2022.07.17
Transport protocol (TCP/UDP)  (0) 2022.07.15