네트워크 - TCP & UDP 보충

yshjft·2022년 11월 11일
0

네트워크

목록 보기
16/18
post-custom-banner

데이터 단위

Physical Layer : bit
Data Link Layer : frame
Network Layer : datagram(packet)
transport Layer : segment

TCP VS UDP

TCPUDP
연결형비연결형
신뢰성 높음신뢰성 낮음(checksum 이용한 최소한의 오류 검증 수행)
전송 순서 보장전송 순서 보장 안함
수신 여부 확인수신 여부 확인 안함
1 : 1 통신 방식1 : 1, 1 : N, N : M 통신 방식

TCP 추가 특징

  • 전이중
    전송이 양쪽에서 동시에 일어날 수 있다.

  • 점대점
    각 연결이 정확히 2개의 종단점을 가지고 있다.

  • (참고) 캐스트
    1 : 1 = 유니 캐스트
    1 : N = 브로드 캐스트
    N : M = 멀티 캐스트

흐름 제어, 혼잡 제어, 오류 제어

흐름 제어

송수신측의 데이터 처리 속도 차이를 제어하는 기법이다.(수신자의 오버플로우를 바지한다.)

  • stop and wait
    • 전송한 데이터에 대한 응답이 있어야만 다음 데이터를 전송할 수 있는 방법
  • sliding window
    • 수신측의 설정한 윈도우 크기 만큼 송신측에서 확인응답 없이 데이터를 보낼 수 있는 방법
    • ex) 전체 데이터 = {1, 2, 3, 4, 5, 6, 7, 8, 9}, 슬라이딩 윈도우 = 5
      (1) 확인 응답 없이 전송 가능한 데이터 = {1, 2, 3, 4, 5}
      (2) 1, 2를 전송
      (3) 1, 2에대한 확인응답(ACK) 수신 후 전송 가능한 데이터 = {3, 4, 5, 6, 7}
    • 슬라이딩 윈도우 참고

혼잡 제어

네트워크의 혼잡을 피하기 위한 송신측에서 보내는 데이터의 전송 속도를 제어하는 기법

혼잡 제어 기법

  • AIMD(Additive Increase / Multiplicative Decrease)

    • 초기 윈도우 크기 = 1
    • 전송한 데이터의 문제가 없을 때마다 윈도우 크기를 1씩 증가
    • 만약 혼잡이 발생한다면 윈도우 크기를 절반으로 줄인다.
    • 빠른 속도록 통신하기까지 오랜 시간이 걸린다.(윈도우 크기가 선형적으로 증가하기 때문)
  • Slow Start

    • 초기 윈도우 크기 = 1
    • 전송한 데이터의 문제가 없을 때마다 윈도우 크기를 2배씩 증가(지수 함수적으로 증가)
    • 단 윈도우 크기가 임계값을 넘어가게 되면 윈도우 크기를 1씩만 증가시킨다.
    • 만약 혼잡이 발생한다면 윈도우 크기를 1로 줄인다.
    • AIMD의 느린 속도 문제를 해결할 수 있다.
  • Fast Retransmit

    • 데이터를 받는 쪽에서 먼저 도착해야할 데이터가 오지 않고 다음 데이터가 도착한 경우에도 ACK를 보낸다. 이 때 순서대로 잘 도착한 마지막 데이터의 다음 순번을 ACK로 보내게 되므로 중간에 하나가 손실되게 되면 송신 측에서는 순번이 중복된 ACK 패킷을 받게 된다.
    • Fast Retransmit 참고
    • example) Duplicate ACK

      예를 들어서 송신 단말이 1에서 8까지의 segment를 한꺼번에 전송했는데 이 중 5번 segment를 수신하지 못한 상태에서 6번 segment를 수신한 경우에 수신 단말은 5번 segment에 대한 Ack(Ack 6)를 발생시키게 되고 이후 7번, 8번 segment가 수신되더라고 5번 segment에 대한 Ack만을 발생시키게 되는데 이것이 duplicate Ack이다. 즉, 수신측에선 달라는 5번은 안오고, 6,7,8이 오니까 안 맞는 패킷들은 다 버리고 5번 달라는 것이다.
      - Duplicate ACK 참고

  • Fast Recovery

    • 혼잡한 상태가 되면 윈도우 크기를 1로 줄이지 않고 반으로 줄인 후 선형 증가시키는 방법
  • (참고) TimeOut

    • TCP는 데이터 전송 후 타이머를 설정하고 타이머 종류까지 ACK를 받지 못하면 timeout이 발생한다.
    • timeout 참고
  • 혼잡 제어 방식 참고1

  • 혼잡 제어 방식 참고2

혼잡 제어 정책

  • TCP Tahoe(타오)
    • 처음 윈도우 크기 = 1
    • 임계점까지는 Slow Start
    • 임계점부터는 AIMD 방식
    • 3 Duplicate ACK & Timeout 발생
      • 임계점 = 윈도우 크기 / 2
      • 윈도우 크기 = 1
  • TCP Reno(르노)
    • 처음 윈도우 크기 = 1
    • 임계점까지는 Slow Start
    • 임계점부터는 AIMD 방식
    • 3 Duplicate ACK
      • 임계점 = 윈도우 크기 / 2
      • 윈도우 크기 = 윈도우 크기 / 2
    • Timeout 발생
      • 임계점 = 윈도우 크기 / 2
      • 윈도우 크기 = 1

오류 제어

  • 데이터가 손상되었거나 손실되었을 경우 재전송을 통해 오류를 복구한다.
  • 재전송 기반 오류 제어(ARQ, Automatic Repeat Request)
  • 재전송은 비효율적이므로 적을 수록 좋다.
  • 오류 제어 참고

오류를 알 수 있는 법

  • 송신 측이 ACK를 받지 못함(timeout)
  • 송신 측이 중복된 ACK를 받음
  • 송신 측이 NACK를 받음

오류 제어 방식

  • stop and wait

    • ACK를 받고 나서 다음 데이터를 보내는 방식
    • 일정 시간이 지나고 timeout이 발생하면 이전 데이터를 재전송 한다.
    • Nack이 전달된다면 데이터를 재전송합니다.
  • go back N

    • 연속적으로 데이터를 보내다가 오류가 발생한 지점부터 재전송하는 방식(비효율적)
  • selective repeat

    • 오류가 발생한 데이터만 재전송하는 방식
    • 별도의 정렬 과정과 버퍼가 필요한 방식
  • 오류 제어 방식 참고1

  • 오류 제어 방식 참고2

profile
꾸준히 나아가자 🐢
post-custom-banner

0개의 댓글