TCP 프로토콜

이정민·2022년 6월 9일
0

네트워크

목록 보기
9/12

전송 계층의 기능

전송 계층은 데이터 링크 계층과 유사

  • 오류 제어, 흐름 제어, 데이터 순서화
  • 데이터 링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송
  • 전송 계층은 논리적으로 1:1 연결된 호스트 사이의 전송

전송 계층의 주요 기능: 흐름제어, 오류제어, 분할과 병합, 서비스
전송 계층 설계시 고려 사항: 주소 표현, 멀티플렉싱, 연결 설정, 연결 해제

전송 계층의 주요 기능

흐름 제어

  • 데이터 링크 계층
    • Timeout, ACK, NACK, Sliding Window(Go-back-N, Selective Retransmit), Piggy-backing
  • 전송 계층
    • 데이터 링크 계층의 기법을 포트 간에 적용
    • 수신 호스트가 슬라이딩 윈도우 프로토콜의 윈도우 하단 값을 조정

오류 제어

  • 데이터 링크 계층
    • 데이터 분실: 타임아웃 기능으로 재전송
    • 데이터 변형: NAK 프레임을 수신하고 재전송
  • 전송 계층
    • 데이터 변형과 데이터 분실: 재전송에 의한 오류 제어 기능에 의해 복구
    • 전송 계층의 오류는 대부분 데이터 분실
    • (NAK 패킷) 수신 프로세스가 재전송을 요구할 수도 있고,
    • (타임 이웃) 송신 프로세스가 스스로 판단해서 재전송 할 수도 있다.

분할과 병합

  • 데이터 링크 계층
    • 순서 번호: 0부터 N-1 까지 프레임에 부여되는 일련 번호
  • 전송 계층
    • 분할: 데이터를 전송하기 전에 적합한 크기로 나누는 과정
    • 병합: 수신 프로세스가 수신한 데이터를 원래 크기로 다시 모으는 과정
    • TCP 헤더에 Sequence Number 포함: 세그먼트를 보내는 프로세스가 부여

서비스 프리미티브

  • 전송 계층 사용자가 전송 계층 서비스를 사용하기 위한 인터페이스
  • 전송 계층이 상위 계층에게 지원하는 서비스
    • 연결형 서비스(TCP)
    • 비연결형 서비스(UDP)

전송 계층 설계시 고려 사항

주소 표현

  • TSAP(Transmit Service Access Point): 전송 계층의 주소
    • TCP/IP의 주소 표현: IP주소+포트번호
      구조적 표현
  • 여러 개의 계층적 필드로 구성되어 있어 호스트의 위치를 파악하기 쉽다
  • ex) 도메인 주소
    비구조적 표현
  • 주소값을 해석해서 호스트의 논리적 위치를 파악하기 어렵다
  • ex) IP주소: 네트워크와 호스트의 계층 정보를 제공하지만, 위치 정보와 관련해서는 비구조적

멀티플렉싱

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

연결 설정

  • 개념적 연결 설정
    • Conn_Req: 프로세스의 연결 설정 요구
    • Conn_Ack: 상대편 프로세스에서 연결 수락을 의미
    • 연결 요청은 양자의 합의에 의해서만 가능
  • 3단계 연결 설정
    • 오류 발생 가능성을 고려하여, 순서 번호를 사용한다.

연결 해제

  • 일방적 연결 해제 절차 방식
    • 한 개의 채널이 양방향 통신을 지원하는 것으로 생각한다.
    • 통신하는 한쪽 프로세스가 일방적으로 Disc_Req를 전송해 연결 종료를 선언
    • 전송이 진행중인 데이터의 처리가 완료되지 못함
  • 점진적 연결 해제 절차 방식
    • 두 개의 단방향 연결이 있는 것으로 생각한다.
    • 연결을 해제하려면 두 프로세스 모두 Disc_Req를 전송해야 함(양쪽 합의 하에 해제)

UDP 프로토콜

UDP: 프로토콜 중 구조가 가장 간단
특징

  • 비연결형 서비스를 제공
  • 헤더와 전송 데이터에 대한 체크섬 기능을 제공
  • Best Effort 전달 방식을 지원: 데이터그램이 목적지까지 도착했는지 확인하지 않는다.

용도

  • 신뢰성이 떨어지지만
  • 프로토콜을 처리하는 기능이 작아
  • TCP보다 데이터 처리가 빠르므로
  • 데이터 전송 시간에 민감한 응용 환경에서는 UDP를 사용하는 것이 유리

UDP 서비스

  • 포트 번호 기반 다중화 서비스
    • 서버 포트: well-known port
    • 클라이언트 포트: Ephemeral port
  • 비 연결형 전송 서비스
    • 소켓 연결 설정이 없다.
    • UDP(IP:Port) <---> 서버 UDP(IP:Port)
  • 실시간 데이터그램 전송 서비스
    • 각 데이터그램은 독립적으로 목적지 UDP 소켓으로 전송

응용 분야

  • 인터넷 전화
  • DNS: 크기가 작고 빠른 응답 필요
  • 멀티캐스트: 1:N, N:1 데이터 그램 통신 서비스

UDP 헤더 구조

  • Source Port/Destination Port
    • 송수신 프로세스에 할당된 네트워크 포트 번호
    • 프로세스 구분
    • UDP 포트와 TCP 포트는 따로 관리된다.
  • Length
    • 프로토콜 헤더를 포함한 UDP 데이터그램의 전체 크기
    • 바이트 단위, 최소값은 8 (헤더만 있을 때), 최대 크기는 2^16-1
  • Checksum
    • 프로토코 헤더와 데이터에 대한 체크섬 값을 제공
    • Checksum = (16비트 단위 합)에 대한 1의 보수

UDP의 데이터그램 전송

  • 비연결형 서비스를 이용하여 데이터그램을 전송
  • 흐름 제어 기능이 없어 버퍼 오버플로에 의한 데이터 분실 오류가 발생할 수 있음
  • 오류 유형
    • 데이터 분실: 데이터가 목적지에 도착하지 못함
    • 도착순서 변경: 데이터그램의 도착 순서가 변경

Transport layer checksum
방법

  • 헤더 및 데이터를 16비트 단위로 분할
  • 비트 합 (end-around-carry 적용)
  • checksum = 비트 합에 대한 1의 보수

단점

  • 변형된 데이터에 대한 checksum 값이
  • 원본 checksum과 같으면 오류 검출 불가

TCP 프로토콜

TCP 주요 기능

  • 연결형 서비스를 제공
  • 전이중(Full Duplex) 방식의 양방향 가상 회선을 제공
  • 신뢰성 있는 데이터 전송을 보장
  • TCP는 데이터를 세그먼트라는 블록단위로 분할해 전송

TCP 헤더 구조

  • Source Port/Destination Port(송신 포트/수신 포트)
    • TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당된 네트워크 포트 주소
    • TCP, UDP가 별도의 주소 공간을 갖기 때문에 같은 번호를 사용할 수 있다.
    • Source Port: 프로세스가 선택
    • Destination Port: 서비스 프로세스 번호
  • Sequence Number(순서 번호)
    • 송신 프로세스가 지정하는 순서번호
    • 세그먼트로 전송되는 바이트 수를 기준으로 증가
    • 최초 데이터를 전송할 때는 임의의 순서번호 선택
  • Acknowledgement Number(응답 번호)
    • 수신 프로세스가 제대로 수신한 바이트 수
    • ACK 비트가 세트되었을 때 유효
    • ACK 응답을 받은 송신 프로세스는 수신 프로세스가 (Seq.No ~ SeqNo-1)을 올바로 수신했음을 알 수 있다.
  • Data Offest
    • TCP 세그먼트가 시작되는 위치를 기준으로 데이터 시작 위치
    • TCP 헤더의 크기
  • Reserved: 예약 필드
  • Window
    • 흐름 제어용
    • 슬라이딩 윈도우 프로토콜에서 수신 윈도우의 크기 지정(수신 프로세스가 수신할 수 있는 바이트 수)
    • 0이면, 수신 프로세스가 데이터를 받을 수 없다는 의미
  • Checksum
    • TCP 세그먼트에 포함되는 프로토콜 헤더와 데이터 모두에 대한 변형 오류를 검출하려고 사용
  • Urgent Pointer(긴급 포인터)
    • URG 플래그 비트가 세트되었을 때 유효
    • ex) SeqNo =2000, Urgent Pointer= 100일 때, 2000~2099 까지 긴급 처리

TCP 헤더의 플래그 비트

  • URG
    • TCP는 기본적으로 데이터를 FIFO 형태로 처리한다.
    • 긴급 데이터 전송: 먼저 제공한 데이터보다 우선 전송하라
    • Urgent Pointer로 긴급 데이터의 크기를 표시한다.
  • ACK
    • Acknowledgement Number 필드가 유효한지를 나타냄(Piggybacking)
  • PSH
    • 송신 측: 다른 데이터를 기다리지 말고, 바로 전송하라(즉각 반응)
    • 수신 측: 현재 세그먼트에 포함된 데이터를 상위 계층에 즉시 전달한다.
  • RST
    • 연결 리셋(비정상 연결 끊기): 즉시 연결을 끊고자 할 때 사용한다.
  • SYN
    • 연결 설정 요구를 의미하는 플래그 비트
    • 가상 회선 연결을 설정하는 과정에서 사용
  • FIN
    • 한쪽 프로세스에서 더는 전송할 데이터가 없어 연결을 종료하고 싶다는 의사 표시
    • 양쪽 프로세스가 모두 FIN을 전송해야 연결 해제 완료

혼잡 제어

  • ECN(Explict Congestion Notification) 기능
    • 라우터가 송신 프로세스에 명시적으로 혼잡 발생을 알려주어 송신 프로세스 스스로 트래픽을 완화하는 기술
  • ECE(Explict Congestion Notification Echo)
    • ECN-Echo로도 약칭되며,
    • 네트워크 트래픽이 많아질 때 라우터가 송신 프로세스에 명시적으로 혼잡을 알리려고 사용
  • CWR(Congestion Window Reduced)
    • ECE 비트를 수신한 송신 프로세스가 전송 윈도우 크기를 줄였음을 통지함

캡슐화

  • IP 패킷 데이터 = {TCP 헤더, 상위 계층 데이터}
  • IP 헤더에 캡슐화되어 데이터 링크 계층으로 보내짐

포트 번호

  • TCP와 UDP가 상위 계층에 제공하는 주소 표현 방식
  • Well-known 포트: 인터넷 환경에서 많이 사용하는 포트 번호
    • FTP(데이터 채널): 20
    • FTP(제어 채널): 21
    • Telnet: 23
    • SMTP: 25
    • DNS: 53
    • TFTP: 69
    • HTTP: 80
    • rlogin: 513
    • rsh: 514
    • portmap: 111

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

TCP 프로토콜

  • 전이중 방식의 양방향 통신을 지원
  • 전송 데이터와 응답 데이터를 함께 전송한느 피기배킹 기능을 사용
  • 데이터 전송: 연결 설정 -> 데이터 전송 -> 연결 해제

연결 설정

  • 3단계 설정(Three-Way Handshake) 방식

데이터 전송

  • 슬라이딩 윈도우 프로토콜 사용
  • 흐름 제어
    • 수신 프로세스는 응답 세그먼트 헤더의 Window 필드로 자신이 받을 수 있는 데이터 양을 송신 프로세스에게 알려준다.
  • 윈도우 필드
    • 수신 프로세스: 자신이 받을 수 있는 데이터 양으로 설정
    • 송신 프로세스: Window 크기 이상 데이터를 전송하지 않는다.
  • 데이터 전송 오류
    • TCP는 NAK를 사용하지 않는다.
    • 송신 세그먼트에 대한 ACK가 일정시간 안에 도착하지 않으면 재전송한다.

연결 해제

  • 4-way Hankshake (ACK, FIN을 동시에 전송 가능)
  • 연결을 해제하고자 하는 쪽에서 FIN 플래그를 지정해 요구
  • 양쪽 프로세스의 동의하에 진행됨

혼잡 제어

  • ECN 기능: TCP 혼잡 제어
  • 혼잡 제어 과정
    • SYN, ACK, ECE 플래그를 지정하여 응답: ECN 기능 사용
    • SYN, ACK 플래그만 지정하여 응답: ECN 기능 사용하지 않음
  • ECN의 동작
    • 수신 프로세스의 중개를 거쳐 간접적으로 송신 프로세스에 혼잡을 통지
    • 혼잡을 인지한 라우터 다음의 라우터들이 ECN 기능을 반복적으로 수행하지 못하도록 함
profile
으악

0개의 댓글