개요
OSI 참조 모델의 수송계층에 해당하는 프로토콜로, 신뢰성 있는 스트림 전송 서비스의 제공을 목적으로 한다.
· 프로세스 대 프로세스 프로토콜
· 종단간 흐름제어 및 오류제어 기능이 있어 데이터 전송의 신뢰성을 제공한다. (IP와의 차이)
→ 종단간? 데이터 전송이 처음 시작되는 소스 호스트 컴퓨터 ~ 최종 목적지 호스트 컴퓨터
데이터링크 계층: 이웃 노드간의 오류제어
· 세그먼트: 두 호스트 간의 TCP 프로토콜 사이에서의 전송 단위
· 신뢰성 있는 전송을 위해 호스트 컴퓨터는 사용자 데이터 세그먼트와 함께 ACK 세그먼트를 사용한다.
신뢰성 있는 스트림 전송서비스
· 데이터의 중복이나 손실 없이 종단간 데이터의 전송을 보장함.
· p-ACK 재전송 기법: 수신 측에서 데이터를 수신하면 'ACK' 메시지를 재전송하는 기법.
- 전송 측에서는 전송한 각각의 세그먼트에 대한 정보를 갖고, 그 다음 패킷을 전송하기 전 이미 전송한 메시지에 대한 ACK 메시지가 도착하기를 기다린다.
· 패킷 손실에 따른 타임아웃
- 세그먼트 1 전송, 타이머 작동 → ACK 도착하지 않음 → 타임아웃 → 세그먼트 1 재전송, 타이머 작동 → ACK1 전송 → ACK 수신, 타이머 리셋
특성
· 기본단위: 옥텟 or 바이트 → 사용자 데이터를 스트림 형태로 처리
· 스트림 전송서비스: 전송 측에서의 데이터 순서가 최종 목적지에서도 일치되도록 한다.
· 가상 회선 연결: 데이터를 전송할 준비를 마치면 연결 설정 과정을 실행한다. (논리적인 연결) → 연결 지향 수송계층 프로토콜
· 버퍼 이용: 다양한 형태의 크기를 갖는 데이터 블록들을 사용
· 전이중 양방향 전송 지원 → 하나의 데이터 스트림에 대해 반대 방향으로 제어 정보를 보낼 수 있어 전송되는 데이터 트래픽 양의 감소로 효율적인 전송이 가능해진다.
three-way handshaking
먼저, 전송 측과 수신 측 양측 모두 일련번호를 초기화시키고, 데이터 전송 대기상태로 만든다.
일련번호는 교신 과정 동안 전송되고 응답된다.
1. 첫 번째 세그먼트: 코드 영역 중 SYN 플래그 비트를 1로 설정한 'SYN 세그먼트'. ACK 번호와 윈도우 크기 값을 포함하지 않음
2. 두 번째 세그먼트: SYN 세그먼트에 대한 응답인 ACK 세그먼트. 교신 과정이 진행 중이란 의미를 갖는 [SYN+ACK] 세그먼트
3. 세 번째 세그먼트: 목적지에 양측의 연결이 설정되었음을 알림.
슬라이딩 윈도우
TCP에서 사용하는 흐름제어 기법
윈도우: 데이터 전송을 위해 사용하는 버퍼. 버퍼에 들어있는 데이터는 ACK를 받지 않아도 즉시 전송이 가능한 데이터.
기본단위: 바이트
동작: 열림, 닫힘, 축소 - 수신 측의 제어에 따라 움직인다.
윈도우 크기 결정: 수신측 윈도우, 혼잡 윈도우 사용 → min(rwnd, cwnd)
참조: 데이터 통신과 네트워킹