11. 전송 계층 TCP 프로토콜& UDP 프로토콜

윤주원·2023년 7월 20일
0

컴퓨터 네트워크

목록 보기
11/15
post-thumbnail

전송계층

기능

  • 수신지에 신뢰할 수 있는 데이터를 전송하기 위해 필요한 계층
    : 네트워크 계층에서는 수신지까지 데이터를 전송
    : 오류를 점검하는 기능을 통해 재전송을 요청

  • 전송된 데이터의 수신지가 어떤 어플리케이션인지 식별 (port를 이용하여)

  • TCP

  • 전송 계층은 데이터 링크 계층과 유사
    : 데이터 링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송
    : 전송 계층은 논리적으로 1:1 연결된 호스트 사이의 전송

전송 계층의 주요 기능

  • 흐름제어
    : 수신 호스트가 슬라이딩 윈도우 프로토콜의 윈도우 하단 값을 조정
  • 오류제어
    : 데이터 변형과 분실 – 재전송에 의한 오류 제어 기능에 의해 복구
  • 분할과 병합
    : 분할 – 데이터를 전송하기 전에 적합한 크기로 나누는 과정
    : 병합 – 수신 프로세스가 수신한 데이터를 원래 크기로 다시 모으는 과정
  • 서비스 프리미티브
    : 전송 계층 사용자가 전송 계층 서비스를 사용하기 위한 인터페이스

전송 계층 설계 시 고려 사항

  • 주소 표현
    : TSAP(Transport Service Access Point) : 전송 계층의 주소
  • 구조적 표현
    : 여러 개의 계층적 필드로 구성
    : 대한민국:서울:한국대학교:정보통신공학과:네트워크연구실:홍길동:50
    : www.korea.co.kr
  • 비구조적 표현
    : 초등학교 반번호

멀티플렉싱

  • 상방향 멀티플렉싱
    : 다수의 전송 계층 연결에 대해 하부의 네트워크 계층에서 연결이 하나 생성
    : 네트워크 계층에서 만들어지는 가상 회선 연결의 개수를 줄일 수 있음
  • 하방향 멀티플렉싱
    : 하나의 전송 연결 설정을 의미하는 포트에 다수의 가상 회선을 할당
    : 전송 속도를 높이고 데이터의 특성에 따라 개별 가상 회선을 할당하여 효과적 통신

전송 계층 통신 방식

  • 연결형 (tcp)과 비연결형 (udp) 통신

TCP 프로토콜

주요 기능

  • 연결형 서비스를 제공
  • 전이중 방식의 양방향 가상 회선을 제공
  • 신뢰성 있는 데이터 전송을 보장

TCP 헤더 구조

  • TCP는 데이터를 세그먼트라는 블록단위로 분할하여 전송
  • IP 헤더와 유사하게, Options과 Padding은 생략이 가능하다.

  • Source / Destination Port
    : TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당된 네트워크 포트 주소

  • Sequence Number
    : 송신 프로세스가 지정하는 순서 번호

  • Acknowledgement Number
    : 수신 프로세스가 제대로 수신한 바이트의 수를 응답하기 위해 사용 Data Offset
    : TCP 세그먼트가 시작되는 위치를 기준으로 데이터의 시작위치를 나타냄

  • Reserved
    : 예약 필드

  • Window
    : 수신 윈도우의 버퍼 크기를 지정하려고 사용

  • Checksum
    : TCP 세그먼트에 포함되는 프로토콜 헤더와 데이터 모두에 대한 변형 오류를 검출하기
    위해 사용

  • Urgent Pointer
    : 긴급 데이터를 처리하기 위한 것으로 URG필드가 지정된 경우에 유효함

TCP 헤더의 플레그 비트

  • ECE, CWR은 혼잡 제어 용도로 사용
  • URG : Urgent Pointer 필드가 유효한지 의미
  • ACK : Acknowledgment Number 필드가 유효한지 의미
  • PSH : 현재 세그먼트에 포함된 데이터를 상위 계층에 즉시 전달하도록 지시
  • RST : 연결의 초기화 및 유효하지 않은 세그먼트에 대한 응답용으로 사용
  • SYN : 연결 설정 요구를 의미하는 플래그 비트
  • FIN : 한쪽 프로세스에서 더 이상 전송할 데이터가 없는 경우, 연결 종료를 위해 사용

포트 번호

  • Well-known 포트
    : 인터넷에서 많이 사용하는 포트 번호

TCP 프로토콜을 이용한 데이터 전송

데이터 전송

  • TCP 프로토콜 : 전이중 방식의 양방향 통신을 지원
    : 전송 데이터와 응답 데이터를 함게 전송하는 피기배킹 기능을 사용
    : 데이터 전송시 연결 설정, 데이터 전송, 연결 해제라는 3단계를 순차적으로 진행

연결 단계

  • 3단계 설정 방식
  • A 프로세스가 전송 할 데이터가 없을 때 연결하는 방식

  • 연결 설정 단계에서 윈도우 크기 설정

데이터 전송

  • 정상적인 데이터 전송
  • 앞의 그림에서 A 프로세스가 전송할 데이터가 있다고 가정하여 데이터 전송을 수행


데이터 전송 오류

  • A 프로세스가 TCP 세그먼트 세 개를 연속으로 전송, 이 중 세 번째 세그먼트에 오류가 발생했다고 가정한 경우

연결 해제

: 연결을 해제하고자 하는 쪽에서 FIN 플래그를 지정해 요구
: 양쪽 프로세스의 동의 하에 진행됨


혼잡 제어 방식

TCP 혼잡 제어 방식 : AIMD ( Additive Increase / Multiplicative Decrease)

  • 패킷을 하나씩 보내고 문제가 없으면 윈도우의 크기를 1씩 증가시키면서 전송
  • 전송에 실패하면 윈도우의 크기를 반으로 줄인다.
  • 진입 초기에는 대역폭을 충분히 활용하지 못 함

TCP 혼잡 제어 방식 : Slow Start

  • AIMD방식은 제대로 된 속도가 나오기까지 오랜 시간이 걸림
  • Slow Start는 윈도우 크기를 1, 2, 4, 8과 같이 지수적으로 증가시키다가, 혼잡이 감지되면 윈도우 크기를 1로 줄이는 방식

  • Slow Start를 사용하면 윈도우의 크기를 지수적으로 증가시킴
  • 이 때, 네트워크의 혼잡이 예상되는 상황에서 빠르게 값을 증가시키기 보다는 조금씩 증가시키는 편이 안전할 것.
  • 특정 임계점이 넘어가면 AIMD방식을 통해 선형적으로 윈도우를 증가시킴

빠른 재전송

  • 기존의 데이터 전송 오류는 송신 프로세스의 타임아웃 기능에만 의존
  • 송신 프로세스가 3번 이상의 중복된 승인번호를 받으면, 타이머가 만료되기 이전에 즉각적으로 해당 번호에 해당하는 데이터를 전송
  • 해당 번호의 데이터를 정상적으로 수신하고나면, 오류제어방식에 따라 어떤 패킷을 보내야하는지 알릴 것

TCP Tahoe

  • Slow Start를 사용한 혼잡 제어 정책의 초기 버전
  • Slow Start 임계점을 만나면 AIMD방식을 사용
  • ACK Duplicated나 Timeout이 발생하면 네트워크에 혼잡이 발생했다고
    판단하고, 임계점과 윈도우를 수정함.

TCP Reno

  • TCP Tahoe와 유사하게 Slow Start로 시작하여 임계점을 넘어서면 AIMD 방식을 사용
  • 단, ACK Duplicated와 Timeout을 구분한다.
  • ACK Duplicated의 경우 윈도우를 반으로 줄이고, 임계점을 줄어든 윈도우의 값으로 정한다.
  • Timeout의 경우 윈도우를 1로 줄이고, 임계점은 그대로 둔다.

UDP 프로토콜

UDP(User Datagram Protocol) : 프로토콜 중 구조가 가장 간단

  • 비연결형 서비스를 제공
  • 헤더와 전송 데이터에 대한 체크섬 기능을 제공
  • Best Effort 전달 방식을 지원
  • 신뢰성이 떨어지지만 프로토콜을 처리하는 기능이 작아 TCP보다는 데이터 처리가 빠르므로, 데이터 전송 시간에 민감한 응용 환경에서는 UDP를 사용하는 것이 유리

UDP 헤더 구조

  • 프로토콜의 오버헤드가 작은 편임

  • Source / Destination Port : 송수신 프로세스에 할당된 네트워크 포트 번호

  • Length : 프로토콜 헤더를 포함한 UDP 데이터 그램의 전체 크기

  • Checksum : 프로토콜 헤더와 데이터에 대한 체크섬 값을 제공

UDP의 데이터그램 전송

  • 비연결형 서비스를 이용하여 데이터그램을 전송
  • 흐름 제어 기능이 없어 버퍼 오버플로우에 의한 데이터 분실 오류가 발생할 수 있음

오류 유형

  • 데이터가 목적지에 도착하지 못하는 데이터그램 분실

  • 데이터 그램의 도착 순서가 바뀌는 도착 순서 변경

  • UDP에서의 데이터그램 분실
    : 데이터의 순서 번호 기능이 없음

profile
안녕하세요

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

가치 있는 정보 공유해주셔서 감사합니다.

답글 달기