[정보통신망] #9. TCP/IP 전송 계층

bien·2024년 6월 6일
0

정보통신망

목록 보기
9/13

0. 학습목표

  • 전송 계층의 역할을 설명하고, 전송 계층의 프로토콜을 나열할 수 있다.
  • UDP의 기본 개념과 체계에 대하여 설명할 수 있다.
  • TCP의 기본 개념과 체계에 대하여 설명할 수 있다.

1. 전송 계층

01) 전송 계층 개요

  • 전송 계층
    • 시스템 종단에서 투명한 데이터양방향으로 전달하는 계층
    • 네트워크 계층은 데이터 전송에 대한 신뢰성을 보장하지 않음
    • 오류를 점검하여 오류 발생 시 재전송을 요청함으로써 신뢰성 제공

02) 전송 계층 프로토콜

  • 전송 계층 프로토콜
    • 인터넷에서 가장 많이 사용되는 프로토콜
    • UDP (User Datagram Protocol)
    • TCP (Transmission Control Protocol)
    • 연결형 통신 vs 비연결형 통신

03) 전송 계층의 통신방식


2. UDP

01) UDP 비연결형 서비스

UDP: User Datagram Protocol

  • 전송 계층 프로토콜
    • process-to-process protocol
    • [비교] IP : host-to-host protocol
  • 비연결성과 비신뢰성
  • 기본적인 IP 데이터 전달 서비스프로세스 간 통신이 추가된 형태
  • 연결성 보장과 신뢰적 전송에 소요되는 오버헤드가 없음 (장점)
  • 간단한 메시지를 송수신하는 데 유리

응용 프로세스의 데이터 전송

  • 응용 프로세스는 다음 프로토콜을 이용하여 데이터를 다른 응용 프로세스 전송할 수 있음
    • UDP: 비연결형, 비신뢰성 전송 서비스
      • 우편 전송과 유사 (중간에 유실될 수도 있음)
    • TCP: 연결형, 신뢰성 전송 서비스
      • 1대1 전화와 유사
  • 포트 번호 사용 (프로세스들을 구별하기 위함)

특징

  • 최종 목적지의 데이터 수신 여부를 확인하지 않음
    • 데이터 손실 가능성
  • 메시지의 도착 순서를 재조정하지 않음
    • 데이터의 순서가 틀릴 가능성
  • 호스트 사이에 데이터 흐름 제어 없음
    • 수신자 처리 용량을 초과하는 데이터 발생 가능성
  • UDP = 비연결형 IP 전달 서비스 + 검사합(checksum) 기능

장단점

  • 장점: TCP보다 데이터 전송속도가 빠르고, 응용 프로그램이 간단해짐.
  • 단점: UDP를 사용하는 응용 프로그램은 메시지 손실, 중복 수신, 수신 지연, 잘못된 순서 등을 처리하기 위한 신뢰성 제어기능을 제공해야 함.

02) UDP 사용자 데이터그램

UDP 데이터그램 형식

  1. UDP 발신지 포트 (16 비트)
    • 발신지 프로세스 포트 번호
  2. UDP 목적지 포트 (16 비트)
    • 목적지 프로세스 포트 번호
  3. UDP 전체 길이 (16 비트)
    • 데이터그램 전체 길이 (= 헤더 길이 + 데이터 길이)
  4. UDP 검사합 (16비트)
    • 데이터그램 전체의 오류 검사용

03) UDP 가짜 헤더

UDP 가짜 헤더 (pseudo header)

  • 검사합을 계산하기 위해 12바이트 가짜헤더를 사용
  • UDP 데이터그램이 정확히 목적지에 도착하였는지를 2중으로 인증하기 위함(IP 주소 확인, 오류 검증(검사합))
    • UDP 헤더는 단지 포트번호만 가지고 있고 IP 주소 정보는 없음.
  • 가짜 헤더의 값은 IP헤더로 부터 얻음
  • 데이터그램이 16비트의 배수가 되도록 '0'으로 패딩한 후 전체 UDP 데이터그램의 검사합을 계산
  • 가짜 헤더와 패딩은 실제로 전송되지 않아 길이에 포함 안됨
  • 수신자는 검사합 필드를 '0'으로 저장하여, 가짜헤더, UDP 헤더 및 사용자 데이터를 모두 포함하여 검사합을 계산.

04) UDP 포트 번호

Process-to-process 통신

호스트까지는 IP주소로 충분하지만, 어떤 프로세스에게 데이터를 전달할지를 판단하기 위해서는 port가 필요한데, 이같은 통신을 ptp 통신이라고 한다.

  • 포트 번호
    • 서버 프로세스는 잘 알려진 포트 번호(13) 사용
    • 클라이언트 프로세스는 임시 포트 번호(52000) 사용

UDP Well-known Ports

잘 알려진 포트들


3. TCP

01) 전송제어 프로토콜

  • Transmission Control Protocol
    • 전송 계층 프로토콜
      • process-to-process protocol (프로세스 간 연결)
    • 연결 지향(connection-oriented) 전송 서비스
      • 연결 설정- 데이터 전송 - 연결 해제
      • TCP 연결 식별자
        • 송신측 TCP 종점 주소
        • 수신측 TCP 종점 주소
    • 신뢰성
      • 흐름제어 (sliding window protocol)
      • 오류제어 (응답패킷, 시간초과, 재전송 방식)
    • 신뢰성이 요구되는 응용
      • UDP: 응용 프로그램에서 신뢰성 보장
      • TCP: 전송 계층(TCP)에서 신뢰성 보장
    • 방대한 양의 데이터 전송 -> TCP 사용
      • [비교] 간단한메시지 송수신 -> UDP 사용

02) 신뢰성 제공

  • 신뢰성 제공 방법
    • 연결지향(connection-oriented) 데이터 전송
    • Segment 단위의 전송 (MSS: Maximum Segment Size)
    • 흐름 제어(flow control, sliding window 사용)
    • 오류 제어(응답 패킷, 시간 초과, 재전송 방식)
      • 타이머 관리
      • checksum, 순서 보장, 중복 패킷 방지

오류제어 - 재전송(타이머 이용)

패킷 전송 후 타이머 기간 내 응답이 없는 경우, 재전송이 이루어진다.

한정된 버퍼 용량으로 흐름제어 - 슬라이딩 윈도우

03) TCP 세그먼트 형식

TCP Segment

  • 헤더 (20 ~ 60 bytes) + 데이터

  1. 발신지 포트(2byte)
    • 발신지 TCP 사용자 프로세스 식별
  2. 목적지 포트(2byte)
    • 목적지 TCP 사용자 프로세스 식별
  3. 순서번호(sequence number; 4 bytes)
    • 데이터 필드의 첫 번째 데이터 바이트의 순서 번호
  4. 응답번호(ACK number; 4 bytes)
    • 송신측으로부터 받은 세그먼트에 대한 응답
    • 바로 다음에 받기를 기대하는 순서 번호를 의미함
    • 예) 순서번호가 x인 세그먼트를 수신하면 응답번호는 x+1을 사용함.
  5. 헤더 길이(HLEN; 4 bits)
    • 4바이트 단위로 표시되는 헤더의 길이
    • 5 ~ 15 사이의 값 (20바이트 ~ 60바이트)
  6. 예약 (Reserved; 6 bits)
  7. 제어 (flag bits; 6 bits)
    1) URG: 긴급 포인터(urgent pointer) 필드가 유효함을 표시함.
    2) ACK: 응답번호가 유효함을 표시함.
    3) PSH: 가능한 빨리 현재 세그먼트를 상위 계층에 전달해야 함.
    4) RST: 연결을 재설정(reset)함.
    5) SYN: 연결을 초기화하기 위해 순서번호를 동기화시킴.
    6) FIN: 연결을 해제시키기 위해 현재 세그먼트가 마지막 데이터임을 표시함.
  8. 윈도우 크기 (window size; 2 bytes)
    • 흐름제어를 위한 윈도우의 크기를 명시
    • (최대 크기 = 2^16 [65,535 바이트])
  9. 검사합 (checksum; 2 bytes)
    • 오류제어를 위한 검사합 부분
  10. 긴급포인터(urgent pointer; 2 bytes)
  • URG flag = 1일 때, 긴급 데이터의 마지막 바이트의 순서 번호 = 긴급포인터 + 순서번호
  1. 옵션(option; 0 ~ 40bytes)
  • Maximum Segment size (MSS)
  • 윈도우 크기를 증가시키기 위한 값
  • time stamp 등

04) TCP 연결형 서비스

  • TCP는 연결-지향 프로토콜
  • 데이터를 전송하기 전에 발신지와 목적지간의 가상 경로를 설정하고 데이터 전송 후 해제
  • TCP 모든 세그먼트는 가상 경로를 통해 전송
  • 이에 따른 손상 또는 손실된 세그먼트의 재전송 및 확인 응답 처리 가능
  • TCP 종단(endpoint) 식별자 [=socket address]
    • 호스트 IP 주소포트번호로 정의
    • 예: 방송대와 고려대사이의 TCP 연결
      • 한국방송통신대학교의 호스트(211.110.34.15)
      • 고려대학교 호스트(211.110.34.15)
      • (211.110.34.15, 12345) 및 (211.110.34.15, 20)
        • port numbers: 12345 (client)
        • port numbers: 20 (FTP server)

전이중(full-duplex) 데이터 전송 서비스

연결설정: 3-way handshaking

  • 초기 순서번호 (ISN: Initial Sequence Number)
    • 난수발생기
    • 양 방향이 서로 다른 ISN을 사용함.
      • 예: 14531, 35731

연결종료

  • 양방향 모두 연결종료 해야함

Reference

  • 한국방송통신대학: 정보통신망 - 박지수
profile
Good Luck!

0개의 댓글