Search

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

제목
Tag
작성일

1. 전송 계층

1.1 전송 계층 개요

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

1.2 전송 계층 프로토콜

인터넷에서 가장 많이 사용되는 두 프로토콜: UDP, TCP
연결형 통신 vs 비연결형 통신
구분
UDP
TCP
연결 방식
비연결형
연결형
신뢰성
없음
있음
속도
빠름
상대적으로 느림
적합한 용도
간단한 메시지
방대한 데이터 전송

1.3 전송 계층의 통신 방식

연결형 통신 (TCP)
① 데이터를 보내도 되나요?
② 네, 보내세요.
③ 보냅니다.
④ 받았습니다.
⑤ 확인했습니다.
비연결형 통신 (UDP)
사전 협상 없이 바로 데이터 전송
수신 확인 없음

2. UDP

2.1 UDP 비연결형 서비스

정의: User Datagram Protocol
전송 계층 프로토콜 (process-to-process)
IP는 host-to-host
특징
비연결성과 비신뢰성
기본 IP 전달 서비스 + 프로세스 간 통신 + 검사합(checksum)
연결 설정/해제 오버헤드 없음
간단한 메시지 송수신에 유리
UDP의 한계
수신 여부 미확인 → 데이터 손실 가능
도착 순서 재조정 없음 → 순서 오류 가능
흐름 제어 없음 → 수신 버퍼 초과 가능
장단점
장점: TCP보다 전송 속도 빠름, 응용 프로그램 구조 단순
단점: 메시지 손실·중복·지연·순서 오류를 응용 계층에서 직접 처리해야 함

2.2 UDP 사용자 데이터그램

UDP 데이터그램 = 헤더(8 bytes) + 데이터
필드
크기
설명
UDP 발신지 포트
16 bits
발신지 프로세스 포트 번호
UDP 목적지 포트
16 bits
목적지 프로세스 포트 번호
UDP 전체 길이
16 bits
헤더 + 데이터 전체 길이
UDP 검사합
16 bits
데이터그램 전체 오류 검사

2.3 UDP 가짜 헤더 (Pseudo Header)

검사합 계산을 위해 12바이트 가짜 헤더 사용
UDP 데이터그램이 정확히 목적지에 도착했는지 이중 인증
UDP 헤더에는 포트번호만 있고 IP 주소 정보가 없음
→ IP 헤더에서 주소 정보를 빌려와 검사합 계산
필드
크기
발신지 IP 주소
32 bits
목적지 IP 주소
32 bits
0 + 프로토콜(17) + UDP 길이
32 bits
가짜 헤더와 패딩은 실제로 전송되지 않으며 길이에 포함되지 않음
수신자는 검사합 필드를 '0'으로 저장한 후, 가짜 헤더 + UDP 헤더 + 데이터 전체로 검사합 계산

2.4 UDP 포트 번호

소켓 주소 = IP 주소 + 포트 번호 → 프로세스 식별
서버 프로세스: 잘 알려진 포트(Well-known) 사용
클라이언트 프로세스: 임시 포트(Ephemeral) 사용
포트 번호
서비스
설명
7
echo
UDP 데이터그램 에코
9
discard
수신 데이터그램 폐기
13
daytime
날짜 및 시간 반환
53
nameserver
DNS 네임 서버
67
bootps
Bootstrap 프로토콜 서버
68
bootpc
Bootstrap 프로토콜 클라이언트
69
tftp
TFTP 서버

3. TCP

3.1 전송제어 프로토콜 (TCP 정의)

정의: Transmission Control Protocol
전송 계층 프로토콜 (process-to-process)
연결지향(connection-oriented) 전송 서비스
연결 흐름: 연결 설정 → 데이터 전송 → 연결 해제
TCP 연결 식별자: 송신측 TCP 종점 주소 + 수신측 TCP 종점 주소
신뢰성 보장 방식
UDP: 응용 프로그램에서 신뢰성 처리
TCP: 전송 계층에서 신뢰성 처리
방대한 데이터 전송 → TCP / 간단한 메시지 → UDP

3.2 신뢰성 제공 방법

연결지향 데이터 전송
Segment 단위 전송 (MSS: Maximum Segment Size)
흐름 제어 — 슬라이딩 윈도우(Sliding Window)
수신자의 버퍼 용량에 맞게 송신 속도 조절
응답(ACK) 수신 시 윈도우가 오른쪽으로 이동
오류 제어 — ACK + 타이머 + 재전송
패킷 손실: 타이머 종료 → 자동 재전송
응답 손실: 동일하게 재전송 처리
Checksum, 순서 보장, 중복 패킷 방지

3.3 TCP 세그먼트 형식

TCP 세그먼트 = 헤더(20~60 bytes) + 데이터
필드
크기
설명
발신지 포트
2 bytes
발신지 프로세스 식별
목적지 포트
2 bytes
목적지 프로세스 식별
순서 번호 (Sequence Number)
4 bytes
데이터 첫 번째 바이트의 순서 번호
응답 번호 (ACK Number)
4 bytes
다음에 받기를 기대하는 순서 번호 (seq=x → ACK=x+1)
헤더 길이 (HLEN)
4 bits
4바이트 단위, 값 5~15 → 20~60 bytes
예약
6 bits
미사용
제어 비트 (Flags)
6 bits
URG, ACK, PSH, RST, SYN, FIN
윈도우 크기
2 bytes
흐름 제어용, 최대 65,535 bytes
TCP 검사합
2 bytes
오류 검사
긴급 포인터
2 bytes
URG=1일 때 긴급 데이터 마지막 바이트 위치
옵션
0~40 bytes
MSS, 윈도우 스케일, timestamp 등
제어 비트 (Flag Bits) 6종
플래그
설명
URG
긴급 포인터 필드 유효
ACK
응답 번호 유효
PSH
즉시 상위 계층 전달
RST
연결 재설정
SYN
연결 초기화, 순서번호 동기화
FIN
마지막 데이터, 연결 해제

3.4 TCP 연결형 서비스

전이중(full-duplex) 데이터 전송 서비스
소켓 주소 = IP 주소 + 포트 번호로 TCP 종단 식별
연결 설정 — 3-way Handshaking
1단계: 클라이언트 → 서버 SYN (seq=14531) 연결 요청, ISN 전달
2단계: 서버 → 클라이언트 SYN+ACK (seq=35731, ACK=14532) 수락 및 서버 ISN 전달
3단계: 클라이언트 → 서버 ACK (ACK=35732) 확인, 연결 완료
※ ISN(Initial Sequence Number)은 난수 발생기로 생성, 양 방향이 서로 다른 값 사용
연결 종료 — 4-way Handshaking
1단계: 클라이언트 → 서버 FIN (seq=x) 종료 요청
2단계: 서버 → 클라이언트 ACK (x+1) 확인, 서버 측 EOF 전달
3단계: 서버 → 클라이언트 FIN (seq=y) 서버 측 종료 요청
4단계: 클라이언트 → 서버 ACK (y+1) 확인, 양방향 종료 완료