컴퓨터 네트워크 및 실습 - RDT 3.0 설계 및 구현 내용 project-2 (Design and Implementation of RDT 3.0 Protocol)
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

1. 문제 정의(문제 기술) 및 제약 조건

2. 개념 / 예비 설계

3. 상세 설계( Sendr & Receiver FSM 및 Event State Table )

4. 기능 시험 / 성능 시험 과정과 결과

5. 첨부 (source code)

본문내용

F를 읽으면 RDT sender가 END 라는 control packet을 보내고, ACK를 받아야 종료되게 하자.RDT recevier는 END packet을 받으면 ACK를 보내고 종료 하도록 해보자. 물론, 종료하기 전에 receiver는 성능 측정치들을 output해야 할 것이다.
Event-State Table 작성
■ 제약 조건 :
RDT 3.0 Sender는 Application data를 stdin에서 받으며, 로 구분되는 한 줄(최대 1,400 bytes)을 읽고, packet을 만들어 보낸다. RDT 3.0 Receiver는 받은 packet을 stdout으로 출력한다. File을 stdin 이나 stdout 으로 redirection 시킬 것.
Sender는 EoF을 만나면 recever에게 종료를 알려주기 위해 END라는 control packet을 전송하고, 이를 받으면 recevier는 ACK로 응답한다. 물론 END와 ACK control packet도 lost 또는 corrupt될 수 있다.
Packet은 하나도 빠짐없이, 순서에 맞게, 그리고 bit error 없이 정확하게 전달되어야 한다.
요즘 네트워크에서는 packet loss가 거의 발생하지 않기 때문에, udt_send()로 packet을 전송할 때 1/10 확률로 random하게 packet을 lost 시켜야 한다. (다시 말해, 보내지 않으면 된다.) 또한, Packet error rate (packet 중에 bit error 가 하나 있을 확률)은 1/10로 보내기 전에 bit error를 발생시켜야 한다. (참고: udt_send.c)
2. 개념 / 예비 설계
Sender 및 Receiver FSM 설계 sequence number를 저장하는 variable 'seq'를 도입하여 state 갯수를 교과서의 절반으로 줄여보자. 그리고, 교과서와 달리 ACK 번호를 잘 받은 packet 번호가 아니라, 다음에 받을 번호로 하면 구현하기 더 편리한지도 알아보자.
교재에 나온 rdt3.0에서는 호출번호를 0,1로 나눠서 구현했기 때문에 4가지 상태가 나오게 된다. 하지만 저희는 packet단위로 나눠서 seq넘버를 붙여 사용하였기 때문에 송신자에서 두가지 상태가 나오고 수신자에서는 한가지 상태가 나오도록 설계하였다. packet header에서 seq변수는 unsigned char형으로 이는 0~255숫자를 가지기 때문에 패킷전송 시 해당 데이터에 순서번호에 256를 나눈 나머지 값을 seq변수에 넣어 전송한다. 송신자와 수신자에서 데이터의 패킷번호는 int형으로 선언하여 충분한 크기의 순서번호 값을 갖는다. 따라서 송신자에서 전송할 때 seq변수를 1씩 증가하며 수신자에서는 데이터 수신시 seq번호를 하나씩 증가한다. 그리고 데이터 전송순서가 같은지 확인 할 때는 패킷헤더의 seq변수값과 송신자, 수신자의 seq값에 256을 나눈 나머지 값이 같은지 확인하면 된다.
추가로 수신자의 seq변수의 1을 더한 값을 ACK변수 번호로 지정하여 controlpacket(ACK) 헤더에 ACK 변수 값을 seq에 넣어 패킷을 만들어 전송한다. 이렇게 되면 송신자에서 데이터를 보내고 난 후에 seq를 증가시키기 때문에 데이터 수신 시에 controlpacktet(ACK) 헤더에 seq값 즉 ACK값이 수신자의 seq값과 같은지 확인하고 데이터 상위로부터 호출을 기다리는 상태로 넘어가면 된다.
END 상태 추가
교제에서는 송신자와 수신자가 종료하는 이벤트가 없다. 하지만 저희는 송신자에서 파일을 전송할 때 EoF를 읽으면 RDT sender가 END라는 control packet을 보내고, ACK를 받아야 종료되게 하였다. 송신자에서는 RDT recevier가 END packet을 받으면 ACK를 보내고 종료하도록 하였다.
3. 상세 설계( Sendr & Receiver FSM 및 Event State Table )
■ Sender & Receiver FSM
■ Event State Table
4. 기능 시험 / 성능 시험 과정과 결과
■ Time Out 1인 LAN환경에서의 Test1.txt 파일을 Redirection 전송 한 결과 창
sender.c
receiver.c
■ sender 측 Test1.txt & Test2.jpg 파일
■ receiver 측 Result1.txt & Result.jpg 파일
■ TimeOut에 따른 LAN환경에서의 Test1.txt,Test2.jpg파일을 Redirection 전송 한 결과 창
■ Test1.txt
Time Out
1
10
100
1000
DATA packets
received
11706
2203
1102
1001
duplicated DATA
packets received
3697
486
110
78
DATA packets
correctly received
734
734
734
734
DATA packets
correctly received
1027506
1027506
1027506
1027506
Time duration
1m
22s
670ms
1m
33s
862ms
1m
59s
495ms
7m
40s
130ms
Troughput
12530
11048
8634
2233
■ Test2.jpg
Time Out
1
10
100
1000
DATA packets
received
12396
2247
1318
1047
duplicated DATA
packets received
4019
486
161
79
DATA packets
correctly received
751
751
751
751
DATA packets
correctly received
1051160
1051160
1051160
1051160
Time duration
1m
20s
574ms
1m
40s
1ms
2m
3s
694ms
8m
15s
47ms
Troughput
13139
10511
8546
2123
5. 첨부 (source code)
■ < sender.c > source code
■ < receiver.c > source code
  • 가격5,000
  • 페이지수14페이지
  • 등록일2011.11.14
  • 저작시기2011.11
  • 파일형식한글(hwp)
  • 자료번호#714083
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니