본문 바로가기

네트워크

UDP/TCP의 RDT 1.0~3.0

UDP

RDT 1.0

하위 네트워크 계층(네트워크 계층-IP)이 신뢰성 있다는 가정 하에

sender(client)는 응용계층에서 데이터를 받아 패킷을 보내고

receiver는 패킷을 기다리다가 받으면 Header를 해체하고 data를 꺼내 응용계층으로 전달해준다.

 
 

TCP

RDT 2.0 (Checksum + Ack/Nak)

하위 네트워크 계층(네트워크 계층-IP)에서 오류가 발생할 수도 있다는 가정 하에

checksumACK, NAK를 이용해 에러 탐지

- no error
  1. 응용에서 데이터 오기를 기다림
  2. 데이터 받아 receiver로 전달
  3. receiver에서 에러 없으면 sender에게 ACK 전송
  4. sender는 ACK확인하고 확실한 데이터 받기
- error 발생
  1. 응용에서 데이터 오기를 기다림
  2. 데이터 받아 receiver로 전달
  3. receiver에서 에러 있으면 sender에게 NAK 전송
  4. sender에서 ACK나 NAK오기를 기다리다가 NAK 오면 응용에서 받은 데이터 재전송
  5. no error 일때의 3,4번 과정 실시
 
 
 
RDT 2.1 (Sequence number)

RDT 2.0은 ACK, NAK 자체에 결함이 없을 것이라는 가정이지만 ACK, NAK 자체에 결함이 있 수 있다. 그래서 ACK/NAK 뿐만 아니라 시퀀스 번호(0 || 1)도 보낸다.

 
 

TCP 에러 문제 해결책

데이터 왜곡 문제 (Bit error, 매체 불량)

- Checksum

- Ack, Nak

 
 

패킷 손실 문제 (Data & Ack/Nak)

- Timer 설정 (Ack 손실 문제 해결)

- 시퀀스 번호 설정 (순서 및 중복 전송 해결)

 
 

혼잡 제어 문제

- 윈도우

 
 

Packet 재전송 방법

Stop and wait : sender가 패킷 한개를 보내고 server의 응답을 기다린다.

Pipelining method : 연속적으로 계속 보내자

- GO back N : 실패된 packet부터 재전송

- Selective repeat : 실패된 패킷만 재전송

 
 
RDT 3.0 (Timer + Pipelining method)

• Timer 중요성

(a). packet 손실 : 제 시간 안에 Ack/Nak가 도착하지 못해 timeout => 재전송

(b). Ack 손실 : 제 시간 안에 Ack/Nak가 도착하지 못해 timeout => 재전송

 
 

       1) Timer 시간 설정이 많이 짧다면?

           네트워크 지연 등이 일어나 ack1이 늦게 도착하면

           => timeout으로 불필요한 재전송이 일어나는 문제 발생

 
 

       2) Timer 시간 설정이 많이 길다면?

           손실에 대한 늦은 대처 문제 발생

 
 
TCP 타이머 시간 설정

- 네트워크 상황이 계속 변하기 때문에 RTT는 변한다.

- Timer가 최소 RTT 시간보단 길어야한다.

=> sampleRTT 몇개 보내보고 Ack까지 오는 시간이 어느정도인지를 측정한다.

따라서 timer 시간 설정이 계속 바뀔 수 있다.

 
 
RDT 3.0 성능
Stop and wait 방식일 때 1 Gbps link, 전송속도 15ms, packet당 8000bit 이면

패킷 하나당 보내는 시간 : 8 microsecs

 

RTT 30msec 일때 네트워크 선로 활용도는 0.027%

 

Pipelining 방식일때 네트워크 선로 활용도는 0.081%

 
 

• Pipelining protocol

여기 참고

 
 
 
 
TCP의 신뢰성 있는 전송 방법

송신자

- 응용계층의 데이터를 세그먼트로 만들며 시퀀스 번호 부여

- 보낸 후 타이머 설정

- 타이머 종료 -> 재전송 및 타이머 재설정

- Ack 수신 -> 윈도우 Ack번호 재설정, 타이머 재설정

 

수신자

- 데이터 받으면 비트 에러 체크 (checksum)

- 에러이면 Nak 전송

- 시퀀스 번호 검사해서 문제 없으면 Ack 전송 (GBN)

- 패킷 중복되면 버림

 
 

재전송이 일어나는 경우

- timeout 발생

- 중복된 Ack가 올 때 (GBN)

- error가 올 때 (timeout아니고 Ack도 왔지만 물리적으로 data가 변조됐을 때)

 
 
 
 
 
 
 
 
 

단어 정의

윈도우 : '버퍼'를 뜻하며 변동이 가능하고 송신자와 수신자의 윈도우 사이즈가 다를 수 있다.

윈도우 크기 문제 : 처리율에 영향 (for 혼잡과 흐름제어)

작을 때 문제 : 한꺼번에 적은 양을 보낼 수 있기 때문에 속도 문제 발생

클 때 문제 : 받는 쪽에서 처리가 느려 응답이 오지 않을수도,

패킷 한개가 손실되면 이전부터 다 재전송(GBN일 때)

 

RTT : 한번 전송하고 응답 받는데 걸리는 최소 시간

 

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

종단시스템 접근, 네트워크 코어  (0) 2022.07.17
Pipelining protocol  (0) 2022.07.17
Multiplexing + demultiplexing  (0) 2022.07.17
Transport protocol (TCP/UDP)  (0) 2022.07.15
FTP (File Transfer Protocol)  (0) 2022.07.15