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: 연결형, 신뢰성 전송 서비스
- 포트 번호 사용 (프로세스들을 구별하기 위함)
특징
- 최종 목적지의 데이터 수신 여부를 확인하지 않음
- 메시지의 도착 순서를 재조정하지 않음
- 호스트 사이에 데이터 흐름 제어 없음
- 수신자 처리 용량을 초과하는 데이터 발생 가능성
- UDP = 비연결형 IP 전달 서비스 + 검사합(checksum) 기능
장단점
- 장점: TCP보다 데이터 전송속도가 빠르고, 응용 프로그램이 간단해짐.
- 단점: UDP를 사용하는 응용 프로그램은 메시지 손실, 중복 수신, 수신 지연, 잘못된 순서 등을 처리하기 위한 신뢰성 제어기능을 제공해야 함.
02) UDP 사용자 데이터그램
UDP 데이터그램 형식
- UDP 발신지 포트 (16 비트)
- UDP 목적지 포트 (16 비트)
- UDP 전체 길이 (16 비트)
- 데이터그램 전체 길이 (= 헤더 길이 + 데이터 길이)
- UDP 검사합 (16비트)
- 데이터그램 전체의 오류 검사용

03) UDP 가짜 헤더
- 검사합을 계산하기 위해 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

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