[Computer Network] Transport Layer (2)

AMUD·2022년 12월 20일
0

My Computer Network

목록 보기
5/5

🦊 UDP (User Datagram Protocol)

  • IP에 최소 기능만 추가 : 다중화/역다중화, 오류 검사
  • 최선형(best effort) 서비스의 UDP 세그먼트 : 손실, 순서에 어긋나게 응용 계층에 전달
  • 비열결형 : UDP 송수신 측 간 열결을 위해 핸드세이크 x, UDP 세그먼트들은 서로 무관하게 독립적으로 다루어짐
  • UDP 사용 : 스트리밍 멀티미디어 응용, DNS, SNMP, HTTP/3
  • 신뢰적인 전송 : 애플리케이션 계층에서 신뢰성 추가 및 혼잡 제어

🥧 신뢰성 있는 데이터 전송의 원리

  • rdt1.0, rdt2.0, rdt3.0 (이후 추가 게시글)

🌐 파이프라인 프로토콜(Pipelined Protocol)

  • 송신자가 ACK 응답을 기다리지 않고 여러 패킷을 전송
  • 순서번호의 범위는 증가하여 전송 중인 패킷은 유일한 순서번호를 가짐
  • 송신 측과 수신 측이 패킷을 버퍼링해야 함

GBN(Go-Back-N)

  • 송신자는 파이프라인에서 최대 N개의 ACK 없이 패킷 전송 허용
  • 수신자는 누적된 ACK(cumulative ACK)만을 전송
  • 송신자는 가장 오래된 ‘전송 되었지만 ACK 응답 없는 패킷’에 대한 타이머를 가짐

SR(Selective Repeat, 선택적 반복)

  • 송신자는 파이프라인에서 최대 N개의 ACK 없이 패킷 전송 허용
  • 수신자는 개별 패킷들에 대해 ACK 응답
  • 송신자는 ‘전송 되었지만 ACK 응답 없는 패킷’들 각각에 대해 개별 타이머를 관리

🐺 TCP

TCP 구성 요소

  • 순서번호
    • 송신자의 세그먼트에서 첫 번째 바이트의 바이트 스트림 번호
    • 시작 순서번호는 임의로 선택
  • ACK 번호
    • 상대방으로부터 기대하는 다음 바이트의 순서번호
    • 누적 ACK
  • 비순차 세그먼트 수신
    • TCP에서 규칙을 제공하지 않고 개발자에 일임

🍗 TCP 왕복시간과 타임아웃

  • TCP는 앞 절의 rdt처럼 손실된 세그먼트 발견을 위해 타임아웃/재전송 메커니즘 사용
  • 타임아웃 주기
    • 왕복시간(RTT)보다 커야 함
    • 너무 짧은 타임아웃 : 불필요한 재전송 발생
    • 너무 긴 타임아웃 : 세그먼트 손실에 대한 대응이 느려짐

왕복시간 예측

  • SampleRTT 측정
  • SampleRTT 값은 네트워크 부하에 따라서 가변적
  • 지수적 가중 이동 평균 사용

타임아웃 값 설정

  • 타임아웃 주기 : 왕복시간 예측 값 + 여유 값
  • RTT 변화율 (DevRTT) : SampleRTT가 EstimatedRTT에서 얼마나 벗어났는지를 예측, 일반적으로 0.25

🐳 신뢰적 데이터 전달

  • 비신뢰적인 인터넷 네트워크 계층 상위 계층에서 신뢰적인 데이터 전달 서비스를 제공
    • 파이프라인 되는 세그먼트
    • 누적 ACKs
    • 단일 재전송 타이머
  • 재전송 시점
    • 타임아웃 이벤트
    • 중복 ACKs

빠른 재전송(Fast Retransmit)

  • 타임아웃 주기가 상대적으로 길어질 수 있음
  • 중복 ACK를 사용하여 손실된 패킷들을 감지
    • 송신자는 종종 많은 개수의 세그먼트들을 연속적으로 보냄
    • 세그먼트가 손실되면 많은 중복 ACK 발생
  • 빠른 재전송
    • 송신자가 같은 데이터에 대해 3개의 중복 ACK를 수신하게 되면 ACK 응답된 세그먼트의 다음 세그먼트가 손실되었다고 가정
    • 타이머가 만료되기 전에 재전송

🍒 흐름제어

  • 수신자는 TCP 송신 세그먼트의 헤더에 rwnd값을 포함시켜 버퍼의 여유 공간을 송신자에게 알려줌
  • 송신자는 전송 확인응답(ACK)이 안된 데이터의 양이 수신자의 rwnd 여유 공간보다 작은 값을 가지도록 유지
  • 수신자의 버퍼가 오버플로우 되지 않도록 보장

🎀 연결관리

  • TCP 송신자/수신자는 데이터 교환 전에 핸드 세이크
    • 연결(connection)을 설정 (서로 연결할 의사가 있음을 확인)
    • 연결 파라미터 값들 합의

TCP 3-way 핸드셰이크

  • 1단계 : 클라이언트는 서버에 SYN 세그먼트를 송신
    • 세그먼트 헤더의 SYN 비트 플래그 세트
    • 최초의 순서번호를 기술
    • 데이터 없음
  • 2단계 : 서버는 SYN을 받고, SYNACK 세그먼트를 응답
    • 서버는 TCP 버퍼와 변수를 할당
    • 서버의 최초 순서번호를 기술
  • 3단계 : 클라이언트는 SYNACK를 받고, ACK 응답
    • 클라이언트는 TCP 버퍼와 변수를 할당
    • ACK 응답에 데이터(세그먼트 페이로드)가 포함될 수도 있음

TCP 연결 종료 (4-way 핸드셰이크)

  • 1단계 : 클라이언트는 서버에 FIN 세그먼트를 송신
  • 2단계 : 서버는 FIN을 받고, ACK 세그먼트를 응답, FIN 세그먼트를 송신
  • 3단계 : 클라이언트는 FIN을 받고, ACK 세그먼트를 응답
  • 4단계 : 서버는 ACK를 받고, 연결이 종료됨

🧵 혼잡제어의 원리

  • 혼잡 : 네트워크가 감당할 수 없을 정도로 너무 많은 출발지(source)에서 너무 많은 데이터를 너무 빨리 송신
  • 혼잡 원인을 처리하기 위해선 혼잡을 일으키는 송신자들을 억제하는 메커니즘이 필요
  • 혼잡 제어 ≠ 흐름 제어
  • 혼잡 결과 : 패킷 손실, 긴 패킷 지연

혼잡 원인과 비용 시나리오

  • 처리율은 용량을 초가활 수 없음
  • 용량의 한계에 접근할 수록 지연 증가
  • 손실/재전송 발생하면 처리율 감소
  • 불필요한 중복 패킷으로 처리율 더욱 감소
  • 하위 스트림에서의 패킷 손실로 상위 스트림의 전송 용량/버퍼 낭비

혼잡 제어 접근 방식

  • 종단 간 혼잡 제어
    • 네트워크로부터 명시적인 피드백 없음
    • 손실과 지연으로 혼잡 추정
    • TCP가 채택한 방식
  • 네트워크가 혼잡 제어 지원
    • 라우터 송수신 호스트에 혼잡 여부 피드백 직접 제공
    • 혼잡 수준이나 명시적인 송신률 등을 표시
    • TCP ECN, ATM, DECbit 프로토콜

🦴 참고

Computer Networking A Top-Down Approach 7th

profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글