본문 바로가기

네트워크

TCP

개요

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)

 

 

 

 

참조: 데이터 통신과 네트워킹