UDP
RDT 1.0
하위 네트워크 계층(네트워크 계층-IP)이 신뢰성 있다는 가정 하에
sender(client)는 응용계층에서 데이터를 받아 패킷을 보내고
receiver는 패킷을 기다리다가 받으면 Header를 해체하고 data를 꺼내 응용계층으로 전달해준다.
TCP
RDT 2.0 (Checksum + Ack/Nak)
하위 네트워크 계층(네트워크 계층-IP)에서 오류가 발생할 수도 있다는 가정 하에
checksum과 ACK, NAK를 이용해 에러 탐지
- no error- 응용에서 데이터 오기를 기다림
- 데이터 받아 receiver로 전달
- receiver에서 에러 없으면 sender에게 ACK 전송
- sender는 ACK확인하고 확실한 데이터 받기
- 응용에서 데이터 오기를 기다림
- 데이터 받아 receiver로 전달
- receiver에서 에러 있으면 sender에게 NAK 전송
- sender에서 ACK나 NAK오기를 기다리다가 NAK 오면 응용에서 받은 데이터 재전송
- 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 시간 설정이 많이 길다면?
손실에 대한 늦은 대처 문제 발생
- 네트워크 상황이 계속 변하기 때문에 RTT는 변한다.
- Timer가 최소 RTT 시간보단 길어야한다.
=> sampleRTT 몇개 보내보고 Ack까지 오는 시간이 어느정도인지를 측정한다.
따라서 timer 시간 설정이 계속 바뀔 수 있다.
패킷 하나당 보내는 시간 : 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 |