TCP (Transmission Control Protocol)

I. 연결 지향적 신뢰 기반 프로토콜, TCP의 개념

가. TCP (Transmission Control Protocol의 정의

전송 계층에서 3-Way Handshaking을 통해 연결 지향적 신뢰성 있는 데이터 전송 프로토콜

나. TCP의 응용계층 제공 서비스

프로세스 대
프로세스 통신
– 송/수신지의 포트 번호를 통해 프로세스 간 연결을 수립하여 데이터 전송 수행
스트림 배달
서비스
– 두 프로세스 간 바이트 스트림 형태로 생성/소비되도록 스트림을 전달

다. TCP의 특징 

구분특징설명
구성
형태
측면
송신 버퍼와
수신 버퍼
– 송/수신 데이터 전송 속도 차이 보정
– 흐름 및 오류 제어 메커니즘에 활용
세그먼트
형태로 전송
– IP 계층에서는 패킷 형태로 전송하므로 바이트를 세그먼트 형태로 그룹화
서비스
측면
다중화와
역다중화
– 연결 지향 프로토콜이므로 송/수신지의 해당 프로세스 간 연결 설정
연결 지향
서비스
– 연결 수립-데이터 전송-연결 종료의 3단계로 가상의 연결 기반 서비스
신뢰성 있는
서비스
– 데이터가 오류없이 전송되는지 확인 위해 확인/응답 메커니즘 이용

– TCP는 신뢰성 있는 서비스를 위해 연결 지향성 특징을 가지며, 흐름 제어를 수행

 

II. 신뢰성 있는 서비스 위한 TCP의 연결 지향성 특징

가. TCP 연결 지향성 특징 구성도

 

나. TCP 연결 지향성 특징 요소

구분특징설명
서비스
특징
논리적
연결
– 호스트 간 연결 지향 데이터 전송을 위해 논리적 연결 설정 및 해제
바이트
순서 정렬
– IP 계층에서 패킷 순서가 바뀌어 수신되어도 바이트 번호 기반 정렬
절차적
특징
3-Way
Handshaking
– 연결 수립-데이터 전송-연결 해제의 3단계 절차를 통해 신뢰성 확립
헤더 제어
필드 활용
– TCP 헤더의 제어 필드를 활용하여 SYN, ACK, FIN 등의 절차 수행

– TCP 연결 수립 후 데이터 전송 시 송/수신 속도 제어를 위해 윈도우 기반 흐름 제어를 수행

 

III. 송수신 속도 제어 위한 네트워크 흐름 제어 기법

가. 네트워크 흐름제어 기법 사례

나. 네트워크 흐름제어 사례를 통한 기법 설명

NoClient 상황전송Server 상황
– 서버로 200
bytes 전송
Client SeqNo: 101
Data: 200 bytes
– Data 수신
– rwnd→600 감소
– 송신 버퍼
Size→600
Server AckNo: 301
rwnd: 600
– 수신 응답
– rwnd→600 조정
– 서버로 300
bytes 전송
Client SeqNo: 301
Data: 300 bytes
– 수신, 100byte처리
– rwnd→400 감소
– 송신 버퍼
Size→400
Server AckNo: 601
rwnd: 400
– 수신 응답
– rwnd→400 조정
– 송신 버퍼
Size→600
Server AckNo: 601
rwnd: 600
– 응답, 200byte처리
– rwnd→600 조정

– TCP 흐름 제어는 속도 차이를 극복할 수 있으나, 적은 데이터 전송 시 오버헤드 발생 등 문제점 존재

 

IV. TCP 통신 시 발생 가능 문제점 및 해결 방안

문제점해결 방안
Data 1 byte 생성 시 헤더 포함 41byte 전송 필요충분한 Data를 버퍼에 저장하는 Nagle 알고리즘 사용
Data 1 byte 소비 시 송신 대기 현상 발생충분한 버퍼 확보 시 까지 윈도우 크기를 0으로 통보
데이터 시작과 끝의 개념이 없음recoed-oriented 특성 도입, datagram 단위 전송
연결지향 통신 특성으로
TCP 소켓 범위의 제약
멀티스트리밍, 멀티호밍,
SCTP 프로토콜 사용

– SCTP는 TCP와 UDP의 장점을 융합하여 만든 프로토콜이며, LTE 등 이동통신에서 SCTP 활용 중
 

댓글을 남겨주시면 감사드려요~*^^*