9. Transport Layer

이세진·2022년 4월 4일
0

Computer Science

목록 보기
72/74

생성일: 2021년 11월 6일 오후 3:24

9.1 전송계층 서비스

  • 전송층은 응용층과 네트워크층 사이에 위치, 응용층에 서비스를 제공하는 책임이 있다. 이것은 네트워크층으로부터 서비스를 받는다.
  • 전송층은 논리적 연결의 책임을 지고 있다.

라우터와 스위치에는 전송층이 없다.

  • 포트번호 (Port Number)
    • 프로세스 간 통신을 달성하는 몇가지 방법중 가장 일반적인 방법은 클라이언트-서버 패러다임을 사용하는 것

    • 클라이언트라고 하는 로컬 호스트의 프로세스는 일반적으로 서버라고 하는 원격 호스트의 프로세스에서 서비스를 필요로 함

      포트번호

      IP주소 대 포트번호

      소켓주소

  • 캡슐화와 캡슐제거 (Encapsulaton & Decapsulation)
    • 한 프로세스에서 다른 프로세스로 메시지를 보내기 위해 전송 계층 프로토콜은 메시지를 캡슐화하고 캡슐화를 제거

    • 전송층은 데이터를 수신하고 전송 계층 헤더를 추가

      캡슐화와 캡슐제거

  • 다중화와 역다중화 (Multiplexing & Demultiplexing)
    • 엔티티가 둘 이상의 소스에서 항목(items)을 받을 때, 이를 다중화라고 한다.
    • 엔티티가 둘 이상의 목적지에서 항목을 전달할 때마다 이를 역다중화라고 한다.
    • 소스의 전송층은 다중화, 목적지의 전송층은 역다중화 실행
  • 흐름제어(Flow Control)
    • 데이터가 많아서 넘치거나 적어서 부족한 상황을 방지

    • 전송층 통신에서 우리는 4개의 엔티티(Entity)를 처리

      • 발신자 프로세스, 발신자 전송계층, 수신자 전송 계층, 수신자 프로세스
    • 전송 프로세스는 생산자(producer) : 메시지 청크(Chunk)를 생성하여 전송 계층으로 푸쉬

    • 송신 전송 계층은 소비자(consumer)이자 생산자라는 이중 역할

    • 메시지를 패킷으로 캡슐화, 수신 전송 계층으로 푸시

    • 메시지를 캡슐 제거하고 어플리케이션 계층에 전달 하는 것은 발신자 및 생산자로부터 수신된 패킷에 대한 소비자

      전송층에서 흐름제어

  • 에러제어(Error Control)
    • 전송층에서 오류제어
      1. 손상된 패킷 검출, 폐기
      2. 손실되거나 폐기된 패킷 추적, 재전송
      3. 중복전송 패킷 인지, 폐기
      4. Missing 패킷이 도착할 때까지 out-of-order 패킷들을 버퍼링
  • 흐름제어와 오류제어의 결합
    • 흐름제어는 두 개의 버퍼 사용 (발신자에서, 수신자에서)

    • 오류제어를 위해 양쪽에서 시퀀스 및 승인 번호 사용

    • 이 두가지 요구 사항은 두개의 번호가 매겨진 버퍼를 사용하는 경우 결합 가능

      선형 형태의 슬라이딩 윈도우

  • 비연결형과 연결-지향 프로토콜
    • 전송층에서는 패킷의 물리 경로에 대해서는 관여 X
    • 비연결형 서비스는 패킷 간의 독립성 의미, 연결 지향은 종속성 의미

9.2 전송-계층 프로토콜

TCP/IP 프로토콜 그룹에서 전송층 프로토콜 위치

  • 서비스
    • UDP
      • UDP는 오류 제어가 응용층 프로세스에 의해 제공되는 응용에서 단순성과 효율성으로 사용되는 신뢰성 없는 비연결 전송층 프로토콜이다.
    • TCP
      • TCP는 신뢰성이 중요한 어떤 응용에 의해 사용될 수 있는 신뢰성 있는 연결-지향 프로토콜이다.
    • SCTP
      • SCTP는 UDP와 TCP의 특성을 결합한 새로운 전송층 프로토콜이다.
  • 포트번호
    • 전송층에서 종단간 주소를 제공, 전송 계층에서 마치 네트워크층에서 IP주소가 하는 역할과 동일한 다중화와 역다중화를 위해 사용된다.

9.3 UDP

  • 사용자 데이트그램 프로토콜 (UDP, user datagram protocol)
  • 비연결, 신뢰성 없는 프로토콜
  • 호스트간 통신 대신에 프로세스간 통신을 제공하는 것을 제외하고는 IP 서비스에 어떠한 것도 추가 X
  • 사용자 데이터그램 (user datagram)
    • UDP 패킷
    • 2바이트(16비트) 인 4개의 필드로 만들어진 고정된 크기의 8바이트 헤더를 가짐
    • 처음 두 필드 ⇒ 근원지와 목적지 포트 번호 정의
    • 세 번째 필드 ⇒ 헤더에 데이터를 더한 사용자 데이터그램의 전체 길이 정의
  • UDP 서비스
    • 프로세스-대-프로세스 통신
    • 비연결 서비스
    • 흐름 제어 X
    • 오류 제어
    • 검사합
    • 혼잡제어 X
    • 캡슐호와 캡슐제거
    • 큐잉
    • 다중화와 역다중화

검사합 계산을 위한 의사헤더

  • UDP 응용
    • UPD는 신뢰성이 없지만 일부 응용에서 선호 (예를 들어, 택배의 당일배송은 비용을 증가시킨다. 고속 배송과 낮은 비용은 모두 원하는 형태이지만, 이들 각각은 충돌한다.)
    • 흐름 및 오류 제어를 하지 않는 간단한 요청, 응답 통신을 요구하는 프로세스에 적당
    • 별도의 흐름 및 오류 제어 기법을 가진 프로세서에 적당하다.
    • SNMP, RIP 을 위해 사용됨
  • UDP 사양
    • 비연결 서비스
    • 오류 제어의 결여
    • 혼잡 제어의 결여

9.4 TCP

  • 전송 제어 프로토콜 (TCP, transmission control protocol)
  • 연결지향
  • 신뢰성
  • 분명하게 연결 설정, 데이터 전송, 연결 해제 단계 정의
  • TCP 서비스
    • 프로세스-대-프로세스 통신
    • 스트림 전송 서비스
    • 전이중 통신
    • 다중화와 역다중화
    • 연결지향 서비스
    • 신뢰성 있는 서비스
  • TCP 특징
    • 번호 부여 시스템
      • 바이트 번호
      • 순서 번호
      • 확인 응답 번호
  • 세그먼트
    • TCP에서 패킷을 세그먼트(segment)라고 함

      TCP 세그먼트 형식

  • TCP 헤더
    • 근원지 포트 주소 : 16 bit
    • 목적지 포트 주소 : 16 bit
    • 순서 번호 : 32 bit
    • 확인 응답 번호 (acknowledgement number) : 32 bit
      • 세그먼트 수신자가 상대방으로부터 바이트 번호 x를 성공적으로 수신했다면 x+1이 확인 응답 번호가 된다.
    • 헤더 길이 : 4 bit
      • 헤더 길이는 20~60 바이트가 될 수 있다. 따라서 이 필드의 값은 5~15 사이의 값
    • 제어 : 6 bit
    • 윈도 크기 : 16 bit
    • 검사합 : 16 bit
    • 긴급 지시자 : 16bit
    • 선택항목
  • TCP 연결
    • 연결-지향 프로토콜 ⇒ 근원지와 목적지 사이에 가상 경로 설정 ⇒ 훼손, 손실된 프레임의 재전송, 확인 응답 프로세스 가능하게 함
    • 한 메세지에 속하는 모든 세그먼트들은 이 가상 경로를 통해 전송
    • 비연결 지향성 프로토콜인 IP 서비스들을 사용하는 TCP가 어떻게 연결 지향성인가?
      • TCP 연결은 물리적이지 않고 바로 가상이라는 점이다. TCP는 상위 층에서 동작
      • TCP는 세그먼트들을 수신자에게 전달하기 위하여 IP 서비스를 사용하지만 연결 자체를 제어함
  • 캡슐화 (Encapsulation)
    • 응용 프로그램 계층에서 받은 데이터를 캡슐화

    • IP 데이터 그램으로 캡슐화 ⇒ 데이터 링크 계층의 프레임에 캡슐화

      세방향 핸드셰이크 연결 설정

  • 데이터 전송
    • 연결이 설정되면 양방향 데이터 전송 가능

    • 클라이언트와 서버는 양방향으로 데이터와 승인 정보 보낼 수 있음

    • 승인 (ackowledgement)과 동일한 방향으로 이동하는 데이터가 동일한 세그먼트에 전달된다는 것을 아는 것으로 충분

    • 승인은 데이터와 함께 피기백(piggyback)된다.

      데이터 전송

      세방향 핸드 쉐이킹을 사용한 연결 종료

  • 연결 리셋 (Connection Reset)
    • 한쪽 끝에 있는 TCP는 연결 요청을 거부하거나, 기존 연결을 중단하거나, 휴지상태(idle state)에 있는 연결을 종료할 수 있다.
    • 이 모든 것은 RST(재설정) 플래그로 수행됨
  • 상태 천이도
    • 연결 설정, 연결 종료, 데이터 전송 동안 발생하는 모든 다른 이벤트를 추적하기 위해 유한 상태 기기(FSM) 규정

일반적인 시나리오의 시간축 다이어그램

  • TCP의 윈도
    • TCP는 데이터 전송을 위한 각 방향에 대해서 2개의 윈도(송신, 수신 윈도)를 사용 ⇒ 양방향 통신을 위해 4개의 윈도 필요

      TCP의 송신 윈도 (send window)

      TCP의 수신 윈도 (receive window)

  • 흐름 제어 (flow control)
    • 생산자가 데이터를 만드는 속도와 소비자가 데이터를 사용하는 속도의 균형 맞추기

  • 윈도우 축소

    • 수신창(receive window)은 축소 불가
    • 수신자가 rwnd 값을 정의하여 창을 축소하는 경우 송신창은 축소 가능
    • 수신자는 마지막 및 새 확인 응답(last and new ack)과 마지막 및 새 rwnd 값(last and new receive window value) 사이의 다음 관계를 유지하여 송신창의 축소를 방지 해야 함
      • new ackNo + new rwnd ≥ last ackNo + last rwnd
  • 오류 제어

    • TCP는 신뢰성 O ⇒ 응용 프로그램은 TCP가 전체 스트림을 순서에 맞고 오류, 손실, 중복 없이 상대편 응용 프로그램에게 전달함을 확신
    • 훼손된 세그먼트 감지 및 재전송, 손실 세그먼트 재전송, 분실된 세그먼트가 도착 전 순서가 맞지 않는 세그먼트를 저장하고 중복 세그먼트의 감지 및 폐기
    • 검사합, 확인응답(acknowledgement), 타임아웃 (timeout) 등을 통해 수행
  • TCP 혼잡 제어

    • 혼잡 윈도우 (Congestion Window)

      • Actual window size = minimum (rwnd, cwnd)
    • TCP의 혼잡 제어를 위해 다른 정책
      - 느린 시작 : 지수 증가

      • 혼잡 회피 : 가산 증가
      • 빠른 회피

      Taho TCP의 예, SS는 느린 출발, CA는 혼잡 회피 상태를 의미한다.

      Reno TCP의 예

      가산 증가, 지수 감소

  • TCP 처리량 (Throughput)

    • 혼잡창(congeston window)동작을 기반으로 하는 TCP의 처리량 cwnd가 RTT의 상수 함수인 경우 쉽게 찾을 수 있다.
    • Throughput = (0.75) Wmax / RTT (Wmax는 혼잡시 평균 window의 크기)
  • TCP 타이머

    • TCP 동작을 순조롭게 수행하기 위해 적어도 4개의 타이머 사용
    • 재전송, 지속, 킵얼라이브, 시간-기다림 타이머
  • RTT

    • Round Trip Time(RTT)
      - RTO(retransmission time-out)을 구하기 위해서는 우선 RTT를 구해야 함
      - Measured RTT (RTTm) : how long it takes to send a segment and receive an acknowledgement of it
      - Smoothed RTT (RTTs) : Weighted average of RTTm and previous RTTs

  • 옵션
    • TCP 헤더에는 최대 40 바이트의 옵션 정보 가능
    • 목적지에게 부가 정보를 전달하거나 또는 다른 옵션의 정렬을 맞추기 위해 사용

9.5 SCTP

  • 스트림 제어 전송 프로토콜 (stream control transmission protocol)

  • 멀티미디어 통신을 위해 좀 더 좋은 프로토콜을 만들기 위해 UDP 와 TCP의 일부 장점을 결합하여 설계된 새로운 전송층 프로토콜

  • SCTP 서비스

    • 프로세스-대-프로세스 통신
    • 다중 스트림
    • 멀티홈잉
    • 전이중 통신
    • 연결지향 서비스
    • 신뢰성 있는 서비스
  • SCTP 특징

    • Transmission Sequence Number (TSN)
    • Stream Idendifier (SI)
    • Stream Sequence Number (SSN)
  • 패킷 형식

    • 필수 항목의 일반 헤더와 청크로 불리는 블록 집합 등을 가짐

    • 청크에는 제어 청크와 데이터 청크 두 가지 형태

    • 패킷에서 제어 청크는 데이터 청크 전에 온다

  • SCTP 결합

    • SCTP는 TCP 처럼 연결지향 프로토콜
    • SCTP에서는 멀티홈잉을 강조하기 위해 결합(association)이라고 함
  • 흐릅제어

    • TCP와 유사
    • TCP에서는 하나의 데이터 단위 (바이트)를 다루지만 SCTP에서는 2개의 데이터 단위인 바이트와 청크를 다룸
  • 오류 제어

    • 송신기에 수신기 버퍼의 상태를 보고하기 위해 SACK 청크 사용
    • 사로 다른 형태의 엔티티와 타이머 사용
profile
나중은 결코 오지 않는다.

0개의 댓글