컴퓨터네트워크

컴퓨터 네트워크 3-1 트랜스포트 계층

begong 2023. 1. 1. 03:07
반응형
참고서적 : 컴퓨터 네트워킹 하향식 접근 제 6판 Kurose, Ross

1. 트랜스포트 계층 서비스 및 개요

  • 트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적 통신을 제공
  • 트랜스 포트 계층 프로토콜은 종단 시스템에서 구현됨.
  • 송신 측의 트랜스포트 계층은 송신 애플리케이션 프로세스로부터 수신한 메시지를 트랜스포트 계층 패킷으로 변환.

1.1 트랜스포트 계층과 네트워크 계층 사이의 관계

  • 트랜스포트 계층 프토토콜
    • 서로 다른 호스트에서 동작하는 프로세스들 사이의 논리적 통신을 제공
    • 종단 시스템에 존재
    • 애플리케이션 프로세스에서 네트워크 계층까지 메시지를 운반, 네트워크계층에서 애플리케이션 프로세스로 메시지를 운반
  • 네트워크 계층 프로토콜
    • 호스트 사이의 논리적 통신을 제공

1.2 인터넷 트랜스포트 계층의 개요

  • 인터넷은 애플리케이션 계층에게 두가지 구별되는 트랜스포트 계층 프로토콜들을 제공
  • 트랜스 포트 계층 패킷 : 세그먼트
  • 네트워크 계층 패킷 : 데이터 그램
  • UDP(User Datagram Protocol)
    • 비신뢰적
    • 비연결지형
  • TCP(Transmission Control Protocol)
    • 신뢰적
    • 연결지향형
    • 신뢰적인 데이터 전달(reliable data transfer) 제공
    • 혼잡제어 (congestion coltrol) : 링크와 스위치가 폭주되게 하는 것을 방지

2. 트랜스포트 계층 다중화(transport multiplexing) 역다중화(demultiplexing)

  • 역다중화(demultiplexing)
    • 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업
    • 세그먼트에 있는 수신 소켓을 식별하는 필드를 검사
  • 다중화(multiplexing)
    • 세그먼트들을 네트워크 계층으로 전달하는 작업
    • 각데이터에 헤더정보로 캡슐화
     

TCP/UDP segment format

  • 비연결형 다중화와 역다중화
    • 데이터그램을 생성할때 목적지 포트번화와 ip주소를 가지고 이동.
    • 목적지 포트번화와 ip주소가 같다면 메시지가 동일한 프로세스로 향함
    • 출발지 포트 번호는 '복귀 주소'의 한 부분으로 사용됨.
  • 연결지향형 다중화와 역다중화
    • TCP 소켓은 4개의 요소들의 집합에 의해서 식별
      • 출발지 IP주소
      • 출발지 포트번호
      • 목적지 IP주소
      • 목적지 포트번호
    • 네트워크로부터 호스트에 TCP 세그먼트가 도착하면, 호스트는 해당되는 소켓으로 세그먼트를 전달(역다중화)하기 위해서 4개의 값을 모두 사용
    • UDP와는 다르게 다른 출발지 주소 또는 다른 출발지 포트 번호를 가지고 도착하는 2개의 TCP 세그먼트는 다른 소켓으로 향함.

 

3. 비연결형 트랜스포트 : UDP

  • UDP는 트랜스포트 계층 프로토콜이 할 수 있는 최소 기능으로 동작한다.
    • 다중화/역다중화, 간단한 오류 검사
    • 송신하기 전 송신 트랜스포트 계층 개체들과 수신 트랜스포트 계층들 사이에 핸드셰이크를 사용하지 않음 => 비연결형
  • DNS는 UDP를 사용하는 애플리케이션 계층 프토로콜
  • 특징
    • 애플리케이션 레벨이 데이터 송신에 대해서 정교한 제어를 할 수 있다
      • TCP의 경우 혼잡제어 메커니즘을 가지고 있어 트랜스포트 계층 TCP송신자를 조절, 수신여부를 응답 확인할 때까지 세그먼트 제전송
      • 실시간 애플리케이션은 최소 전송률, 지연을 원하지 않기 때문에 UDP사용
    • 연결 설정이 없다
      • 형식적인 예비동작 없이 전송하기 때문에 연결을 설정하기 위한 지연이 없음.
    • 연결 상태가 없다
    • 작은 패킷 헤더 오버헤드
      • 8바이트의 오버헤드를 가짐 (TCP : 20 바이트)

3.1 UDP 세그먼트 구조

UDP segment format

  • UDP 헤더는 2바이트(16bit)씩 4개의 필드를 가짐
  • 포트번호 : 목적지 호스트가 목적지 종단 시스템에서 동작하는 정확한 프로세스에게 애플리케이션 데이터를 넘기게 해줌
  • 체크섬 (checksum) : 세그먼트에 오류가 발생했는지 검사하기위해 사용
  • 길이 (length) : 헤더를 포함하는 UDP 세그먼트의 길이를 나타냄

3.2 UDP 체크섬

  • 오류 검출을 제공
  • 송신 측 : 세그먼트안에 있는 모든 16 비트 워드 단위로 더하고 이에 대하여 다시 1의 보수를 수행, 덧셈 과정에서 발생하는 오버플로우는 '윤회식 자리올림 (wrap around)함.
  • 체크섬과 모든 16비트 워드를 더했을 때 모든 자리수가 1이면 오류가 없음, 0이 하나라도 있으면 오류가 있는것

 

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

  • 신뢰적인 채널에서는 전송된 데이터가 손상되거나 손실되지 않는다.
  • 모든 데이터는 전송된 순서대로 전달된다
  • rdt : 신뢰적 데이터 전송 (reliable data transfer) 프로토콜

(추후작성예정)

 

5. 연결지향형 트랜스포트 :TCP

5.1 TCP연결

  • 연결 지향형
  • 전이중 (full-duplex) 서비스 제공
    • A와 B 사이에 TCP 연결이 있다면 애플리케이션 계층 데이터는 B에서 A로흐르는 동시에 A에서 B로 흐를 수 있음.
  • 점대점(Point-to-point)
    • 하나의 송신자, 하나의 수신자
    • 멀티캐스팅 불가
  • '세방향' 핸드셰이크 (three- way handshake)

5.2 TCP 세그먼트 구조

TCP 세그먼트 구조

  • 일반적으로 20바이트 
  • 순서번호 필드 (sequence number field)와 확인응답번호 필드(acknowledge-ment number field):(32비트) 신뢰적인 데이터 선송 서비스 구현에서 TCP송신자와 수신자에 의해서 사용
  • 수신 윈도우(recieve window) : (16비트)흐름제어에 사용
  • 헤더길이(header length) : (4비트) 32비트 워드 단위로 TCP헤더의 길이를 나타냄
  • 옵션필드 (길이 가변) : 최대 세그먼트 크기를 협상하거나 고속 네트워크에서 사용하기 위한 윈도우 확장요소로 이용
  • 플래그(flag) : (6비트) 
    • ACK 비트 : 확인 응답 필드에 있는 값이 유용함을 가리키는 데 사용
    • RST, SYN, FIN : 연결 설정과 해제에 사용
    • PSH :  수신자가 데이터를 상위 계층에 즉시 전달해야함을 가리킴
    • URG : 상위 계층 개체가 '긴급'으로 표시하는 데이터임를 가리킴
  • 순서번호와 확인응답 번호
    • 세그먼트에 대한 순서번호 : 세그먼트에 있는 첫번째 바이트의 바이트 - 스트림 번호
    • 확인 응답 번호 : 응답 오기를 기대하는 다음 바이트의 순서번호

 

5.4 신뢰적인 데이터 전달

  • TCP는 IP의 비신뢰적인 '최선형(best-effort)' 서비스에서 신뢰적인 데이터 전달 서비스(reliable data transfer service)를 제공한다.
  • TCP는 데이터 스트림이 손상되지 않았으며, 손실이나 중복이 없다는것, 순서가 유지된다는것을 보장
  • (RTT 작성)
  • 빠른 재전송(Fast Retransmit)
    • 중복 ACK를 수신하는 경우 손실이 난 것으로 판단하여 세그먼트의 타이머가 만료되기 이전에 손실 세그먼트를 재전송

5.5 흐름제어

  • 송신자가 수신자의 버퍼를 오버플로우시키는 것을 방지하기 위해 제공
  • 수신하는 애플리케이션이 읽는 속도와 송신자가 전송하는 속도를 같게함
  • 수신윈도우(receive window)
    • 수신 측에서 가용한 버퍼 공간이 얼마나 되는지를 송신자에게 알려 주는 데 사용됨.
    • 송신자는 별개의 수신윈도우를 유지

5.6 연결 관리

  • TCP 연결이 어떻게 설정되고 해제되는가
  • 세 방향 핸드셰이크(three - way handshake)
    • 1단계 : 클라이언트 측 TCP는 서버 TCP에게 특별한 TCP 세그먼트 송신 (헤더의 SYN비트를 가짐, 최초의 순서번호 선택)
    • 2단계 : 서버는 데이터그램으로부터 TCP SYN 세그먼트를 뽑아냄, 클라이언트에게 연결승인 세그먼트 송신
      • SYNACK 세그먼트 : SYN비트 1,  확인 응답 필드 : 클라이언트 순서번호 +1, 자신의 최초 순서번호 
    • 3단계 : 연결 승인 세그먼트를 수신하면 클라이언트는 연결에 버퍼와 변수들을 할당.
      • SYN 비트 : 0, 순서번호 : 본인의 순서번호+1, 확인응답필드 : 서버 순서번호+1
  • 연결 종료 시
    • 1단계 : 클라이언트 TCP가 서버 프로세스에게 특별한 TCP 세그먼트를 보냄 (헤더의 FIN비트를 가짐)
    • 2단계 : 세그먼트를 수신하면, 서버는 클라이언트에게 확인 세그먼트를 보냄
    • 3단계 : 서버가 FIN비트가 1로 설정된 자신의 종료 세그먼트를 송신
    • 4단계 : 클라이언트는 서버의 종료 세그먼트에 확인응답을 함

6 혼합제어의 원리

6.2 혼잡제어데 대한 접근법

  • 종단간의 혼합제어
    • TCP는 윈도우 크기를 줄여서 해결
  • 네트워크 지원 혼잡제어
    • 라우터가 각각의 출발지에게 처리하는 패킷의 패킷 헤더 안에 어떻게 출발지의 전송률을 증가시키거나 감소시킬 것인지에 관한 정보를 넣어 보냄
  • 초크 패킷(choke packet) : 네트워크 라우터에서 송신자에게 혼잡상태임을 알리는 메시지

7 TCP 혼잡제어

  • 접근방식 : 네트워크 혼잡에 따라 연결에 트래픽을 보내는 전송률을 각 송신자가 제한하도록 함
    • 혼잡이 없을 경우 : 송신자가 송신율을 높임, 송신률을 조금씩 올림 =>Additive Increase
    • 혼잡을 감지할 경우 : 송신자는 송신율을 줄임 , 송신률을 급격히 줄임=>Multiplicative Decrease 
    • "AIMD"
  • Slow Start
    • 연결이 시작될 때 전송률을 지수함수적으로 늘림
    • ssthreash (slow start threshold): 슬로 스타트 임계치
    • cwnd : 혼잡 윈도우 송신자가 네트워크로 트래픽을 전송할 수 있는 비율을 제한 
    • MSS(Maximum Segment Size) : TCP 상에서 전송할 수 있는 사용자 데이터의 최대 크기 
      • 첫슬로우 스타트 시 타임아웃이 발생하면 정해짐
      • 혼잡이 검출되었을 시점에서 혼잡 윈도우값의 반
    •  지수적으로 값을 늘리며 전송률이 ssthresh까지 증가되면 슬로 스타트 종료
    • 슬로스타트 종료 후 혼잡회피 모드로 전환
  • 혼잡 회피
    • 혼잡 회피 상태로 들어가는 시점에서 cwnd의값은 대략 혼잡이 마지막 발견된 시점에서의 값의 반
    • 따라서 cwnd값을 두배로 하기보다 하나의 MSS만큼 증가시킴(한개 단위 증가)
    • slow start와 마찬가지로 혼잡회피의 선형증가는 혼잡이 발생되었을때 끝남
    • cwnd의 값을 1로, ssthresh의 값은 손실 이벤트가 발생할 때의 cwnd값으 반으로 설정
    • 그 후 빠른 회복 상태로 들어감
  • 빠른회복
    • TCP Tahoe
      • 타임아웃 발생 시 혼잡윈도우(cwnd)를 1로 줄이고 슬로스타트 단계로 들어감
    • TCP Reno
      • 타임아웃 발생 시 혼잡윈도우를 손실 발생 시 임계치 (ssthresh)로 줄이고 선형적으로 증가

TCP의 혼잡 윈도우의 발달

반응형