type
status
date
slug
summary
tags
category
icon
password
정의
신뢰성 있는 데이터 전송을 보장하는 프로토콜
TCP(Transmission Control Protocol)는 데이터 전송 중 손실이나 중복 없이 정확하게 전달되도록 보장합니다. 연결 설정, 데이터 전송, 연결 종료 과정에서 오류 복구와 흐름 제어 기능을 제공합니다.
특징
- 1:1 통신(Point-to-Point)
- 신뢰성 있는 데이터 전송 보장
- 연결 설정 및 종료 과정 제공
- 오류 복구 기능 포함
- 흐름 제어 기능 제공
- 데이터 전송 중 손실이나 중복 방지
- 순서 보장
- 혼잡 제어 기능 포함
연결 및 해제
TCP 3-Way Handshake (연결)
TCP 연결을 설정하기 위해 3-Way Handshake 과정을 거칩니다. 이 과정은 클라이언트와 서버가 서로 통신을 시작하기 전에 연결을 설정하는 절차입니다.

- SYN: 클라이언트가 서버에 연결 요청을 보냅니다.
- SYN-ACK: 서버가 클라이언트의 요청을 수락하고, 연결을 확인하는 응답을 보냅니다.
- ACK: 클라이언트가 서버의 응답을 확인하고, 연결이 설정됩니다.
TCP 4-Way Handshake (해제)
TCP 연결을 해제하기 위해 4-Way Handshake 과정을 거칩니다. 이 과정은 클라이언트와 서버가 연결을 종료하기 위한 절차입니다.

- FIN: 클라이언트가 서버에 연결 종료 요청을 보냅니다.
- ACK: 서버가 클라이언트의 요청을 확인하고, 연결 종료를 수락합니다.
- FIN: 서버가 클라이언트에 연결 종료 요청을 보냅니다.
- ACK: 클라이언트가 서버의 요청을 확인하고, 연결이 종료됩니다.
TCP 헤더
- Source Port Number: 송신 측 포트 번호를 나타냅니다.
- Destination Port Number: 수신 측 포트 번호를 나타냅니다.
- Sequence Number: 송신된 데이터의 순서를 나타내는 번호입니다. 데이터 전송 중 순서를 보장하기 위해 사용됩니다.
- Acknowledgment Number: 수신 측이 다음에 받을 데이터의 순서를 나타내는 번호입니다. 송신 측에 데이터가 제대로 수신되었음을 확인시켜줍니다.
- Data Offset: TCP 헤더의 길이를 나타내며, 옵션 필드의 시작 위치를 지정합니다.
- Reserved: 미래에 사용하기 위해 예약된 비트입니다.
- Flags: 여러 제어 플래그가 포함되어 있으며, 각 비트는 특정 제어 기능을 나타냅니다.
- NS: ECN-Nonce - Explicit Congestion Notification nonce 비트.
- CWR: Congestion Window Reduced - 혼잡 윈도우 감소 비트.
- ECE: ECN-Echo - 혼잡 알림 응답 비트.
- URG: Urgent - 긴급 포인터 필드가 유효함을 나타냅니다.
- ACK: Acknowledgment - 확인 번호 필드가 유효함을 나타냅니다.
- PSH: Push - 수신 측에 데이터를 즉시 전달할 것을 요청합니다.
- RST: Reset - 연결을 재설정합니다.
- SYN: Synchronize - 시퀀스 번호 동기화를 시작합니다.
- FIN: Finish - 연결을 종료합니다.
- Window: 수신 측이 한 번에 받을 수 있는 최대 데이터 크기를 나타냅니다.
- Checksum: 헤더와 데이터의 오류를 확인하기 위한 체크섬입니다.
- Urgent Pointer: 긴급 데이터의 끝을 나타냅니다.
- Options: 선택적으로 추가 정보를 포함할 수 있는 필드입니다.
- Data: 실제 전송되는 데이터입니다.