1. RDT 2.0

 -> RDT 1.0에서 이루어진 신뢰적인 통신에서 상황을 바꾼다.

 -> Bit 오류가 있는 채널을 만든다.

2. RDT 2.0 요건

 -> No Loss of Packets

 -> Bit Error 

3. Bit Error를 확인하기 위해 필요한 것??

 -> checksum

  : Bit Error를 검출하기 필요한 field이다.

4. Bit Error가 발생하면 수신측에서 필요한 것??

 -> 응답 packet이 필요하다.

 -> ACK

  : Acknowledgement

  : Receiver가 Sender가 보낸 packet을 잘 받았는 것에 대한 응답이다.

 -> NAK

  : Negative Acknowledgement

  : '해당 packet에 대해서 다시 반복해라'라는 의미이다.

  : Sender가 Receiver한테 보낸 packet이 Error 또는 장애가 있다는 응답이다.

5. CASE 1

 -> Bit Error가 없는 Segment를 받았을 경우를 본다.

5_1. Sender

 -> Wait for call from above

  : 현 상태는, 상위 Layer로부터 데이터를 받기 위해 대기하는 단계이다.

 -> Event

  : rdt_send(data)

  : 상위 Layer에서 보낸 Message(data)를 Transport Layer에서 받게 되는 것이다.

 -> Actions

  : packet_! = make(data, checksum)

  : Segment(packet_!)를 만든다.

  : 이 때, Bit Error를 감지하기 위해서 checksum을 추가하여 Segment(packet_!)를 만든다.

  : udt_send(packet_!)

  : 하위 Layer로 Segment(packet_!)를 보낸다. 

 -> Wait for ACK or NAK

  : Receiver로부터 받을 응답을 기다린다.

  : 또한, 이 상태는 상위 Layer로부터 data를 받을 수 없는 상태이다.

5_2. Receiver

 -> Wait for call from below

  : 현 상태는, 하위 Layer로부터 Segment를 받기 위해 대기하는 단계이다.

 -> Event

  : rdt_rcv(packet_!) && notcorrupt(packet_!)

  : 하위 Layer에서 보낸 Segment(packet_!)를 받는다.

  : Segment(pakcet_!)는 Bit Error가 발생하지 않았다는 것을 말한다.

 -> Actions

  : extract(packet_!,data)

  : Segment(packet_!)에서 Application Layer로 전달할 Message(data)를 추출한다.

  : deliver_data(data)

  : Message(data)를 Application Layer로 전송한다.

  : packet_@ = make(ACK)

  : Sender가 보낸 packet을 잘 받았다는 응답을 해주기 위해서 Segment(packet_@)를 만든다.

  : udt_send(packet_@)

  : 하위 Layer로 Segment(packet_@)를 보낸다.

5_3. Sender

 -> Wait for ACK or NAK

  : Receiver로부터 받을 응답을 기다린다.

 -> Event

  : rdt_rcv(packet_@) && isACK(packet_@)

  : 하위 Layer로부터 Segment(packet_@)를 받았는데 ACK 응답을 받았다.

 -> Actions

  : ACK응답을 받았기 때문에 해야할 일은 없다.

 -> Wait for call from above

  : 다시, 상위 Layer로부터 Data를 받기 위해 대기하는 단계로 돌아간다.

  : 이 상태로 돌아가기 위해서는 반드시 ACK를 수신해야 한다.

 -> Sender는 Receiver가 현재의 packet을 정확하게 수신했다는 것

  : 확인하기 전까지는 새로운 데이터를 전송할 수 없다.

  : 이러한 방식은 Stop-and-Wait 방식이라고 한다.

'Transport_Layer > $_RDT' 카테고리의 다른 글

6_RDT_2.1_CASE2  (2) 2014.02.14
5_RDT_2.1_CASE1  (0) 2014.02.14
4_RDT_2.0_CASE2  (0) 2014.02.14
2_RDT_1.0  (0) 2014.02.14
1_RDT 개요  (2) 2014.02.14
Posted by 훈승오승훈
l