오늘하루도 우힣ㅎ

CH3. Transport Layer(2) 본문

네트워크/강의정리

CH3. Transport Layer(2)

우힣 2020. 1. 1. 11:49

4. Principle of reliable data transfer(ARQ)

 - Method1 : Forward Error Correction (FEC)

-> 받는쪽에서 에러를 복구하도록 하는 방식이다

-> 반복적인 bits를 추가하여 사용하는 방식

     ex) 0을 보낼때 000000라고 보내기 받는입장에서 한비트에서 에러가나서 010000라고 받더라도 더 많은 0으로 인지하게 된다.

           (1->111111->1111010 => receiver는 1로 인지)

 - Method2 : Retransmission

-> Receiver가 에러를 detect하고 sender측에 재전송을 요청하는 방식이다.

-> ARQ(Automatic Repeat reQuest)

     : Stop and wait

     : Go back N

     : Selective repeat (SR)

 

 - Stop and Wait ARQ

-> 장점 : sender 측은 receiver를 overflow 할수가 없다(receiver측에서 ACK를 보내야만 sender 측에서 보낼수가 있기 때문이다.)

-> 단점 : propagation delay로 인해서 네트워크 사용 효율이 떨어지게 된다.

-> ACK : receiver가 sender측에서 데이터를 받았다고 알려주는 신호를 의미한다.(ACK 에 대한 신호가 loss가 나게 되면 sender측에서는 ACK을 받지 못하기에 다음 데이터를 못보내는 deadlock 상태에 빠지게 된다. 이를 해결 하기 위해 Time-out을 사용한다.)

-> Time-out : ACK가 일정시간동안 오지 않게 되면 다시 그 데이터를 보내게 된다.

     -> Delay Bound가 존재하지 않을 경우 문제점이 존재한다.

     -> Delay bound를 ACK에 seq#을 주면서 해결하게 된다. 

 

 - Performance of Stop-and-Wait

     -> R : Bandwidth (bits/sec)

     -> L : Packet size (bits)

     -> A : ACK size (bits)

     -> Tp : Propagation delay(sec)

     -> Cycle length = 2Tp+(L+A)/R

     -> Efficiency = (데이터 걸리는데 보내는 시간) / 총 걸리는 시간

                          = (L/R)/(2Tp+(L+A)/R) = L/(2TpR+L+A)

Example) 1 Gbps link, 15ms propagation delay, 1KB packet, Ignore Ack time

     -> Bandwidth = 1Gbps

     -> data size = 1KB

      -> T transmit = 8kbit/10^9 sec = 8 microsec

      -> Efficeincy = 0.008/(15+15+0.008) = 0.0027

 - Sliding Window Protocols

-> sender가 ACK이 오지 않았지만 여러개의 segment들을 보낼수 있도록 하는것.

-> seq# 의 범위가 늘어나야 한다.

-> sender와 receiver에 버퍼링이 발생할것이다.

-> Go-Back-N, Selective repeat 방식이 존재한다.

 

 - Go-Back-N

     - Sender

     -> Sender의 윈도의 사이즈 N

     -> packet들에 seq #를 붙여 연속적으로 send_base+N-1까지 해서 보낼수가 있다.

     -> send_base : send_base이전까지는 receiver로 부터 ACK 받음

     -> 각각의 packet에 대해 timer가 존재하게 된다.

     -> n packet에 대해 timeout이 발생하게 되면 n packet과 n 보다 더 높은 seq# 가진 packet들을 재전송한다.

     - Receiver

     -> Receiver의 윈도우 사이즈는 1이다.

     -> ACK #은 자신이 다음에 받을 packet의 seq#와 동일하다.

     -> 자신이 원하는 packet을 받았을때 다음 순서의 packet을 요청하는 ACK를 보내게 된다.

     -> 자신이 원하지 않는 packet을 받았을때 해당 packet은 버리고 다시 자신이 원하는 packet을 ACK을 통해 알려주어 재전송하길 기다린다.

     -> Receiver측은 단지 자신이 받아야할 ACK에 대한 정보만 가지고 있다.

 

 - GBN :  window size vs number of bits for seq#

ex) seq#를 위한 bit수가 3이고 SWS가 8인경우

-> sender측에서 0,1,2,3,...,7번 packet들을 순차적으로 보내게 된다.

-> 모든 packet들이 receiver측에 성공적으로 도착하지만 모든 ACK이 없어졌다.

-> receiver측은 다시 0번을 받기 위해 대기를 하고 있다.(01234567 01234567)

-> sender측에서는 receiver측에서 ACK이 오지 않아 Time out이 발생하게 되고 다시 0번부터 재전송한다.(01234567 01234567)

-> receiver측은 전에 받은 data이지만 인지하지못하고 받아들이게 된다.

     => 이런 문제점을 해결하기 위해서 항상 SWS(sender window size)<= (2^m)-1 이어야 한다.

           (m은 seq#를 위한 bit수를 의미한다.)

 

 - Selective Repeat

-> sender와 receiver측의 window사이즈가 같다.

-> Selective Repeat의 경우 SWS(=RWS)<=2^(m-1)이어야 한다.

     - Sender

    -> packet들에 seq #를 붙여 연속적으로 send_base+N-1까지 해서 보낼수가 있다.

    -> ACK을 받지 못한 packet에 대해서만 해당 packet을 재전송한다.

      - Receiver

     -> packet이 순서대로 오지 않더라도 받아 receiver window내의 데이터라면 받는다. (1,2,3 이 RW에 속하는 상태에서 1,3이 오게 되면 3은 2가 오지 않은 상태지만 receiver측에서는 받게된다.)

     -> 각각의 packet에 대해 ACK을 보낸다.

 

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

CH3. Transport Layer(4)  (0) 2020.01.05
CH3. Transport Layer(3)  (0) 2020.01.03
CH3. Transport Layer(1)  (0) 2019.12.30
CH2. Application Layer (3)  (0) 2019.12.29
CH2. Application Layer (2)  (0) 2019.12.23
Comments