- TCP(Transmission Control Protocol) 은 불안정한 네트워크 환경에서도 신뢰성 있고 순서가 보장된 데이터 전송을 가능하게 하는 인터넷의 핵심 프로토콜
- IP가 호스트 간 데이터 전달만 담당하는 반면, TCP는 포트 기반의 프로세스 간 통신과 오류 복구·재전송·순서 제어를 수행
- 흐름 제어(flow control) 와 혼잡 제어(congestion control) 를 통해 수신 버퍼나 네트워크 대역폭의 한계를 초과하지 않도록 조절
- C 언어로 구현한 단순 TCP 서버와 HTTP 서버 예제를 통해 소켓 생성, 바인드, 리슨, 연결 수락, 송수신 과정이 구체적으로 설명됨
- TCP의 시퀀스·ACK 번호, 윈도우, 체크섬, 플래그(SYN/ACK/FIN/RST) 등 내부 구조는 오늘날 인터넷의 안정적 동작을 가능하게 하는 핵심 기반임
TCP의 필요성과 역할
- IP는 호스트 간 패킷 전달만 담당하며, 프로세스 간 통신을 위해서는 TCP/UDP 같은 전송 계층이 필요
- IP 주소는 ‘건물’, 포트는 ‘아파트’에 비유되어, 각 애플리케이션이 포트에 바인드되어 통신함
- TCP는 패킷 손실·중복·순서 뒤바뀜 등 네트워크 불안정성을 감추고, 재전송·체크섬 등으로 신뢰성을 보장
- 라우터는 단순하게 유지되고, 신뢰성은 통신 양 끝단에서 처리되어 네트워크 인프라의 복잡성을 줄임
- 이러한 구조 덕분에 HTTP, SMTP, SSH 등 주요 인터넷 서비스가 안정적으로 동작
흐름 제어와 혼잡 제어
- 수신 측은 커널의 수신 버퍼(receive buffer) 를 통해 데이터를 임시 저장하며, 버퍼 크기는
net.ipv4.tcp_rmem으로 설정 - 송신 측은 수신 측이 허용 가능한 데이터 양을 윈도우(window) 필드로 전달받아 전송량을 조절
- 네트워크 전체의 대역폭 차이로 인한 혼잡(congestion) 을 방지하기 위해 TCP는 혼잡 제어 알고리듬을 도입
- 1986년 발생한 혼잡 붕괴(congestion collapse) 사건을 계기로 ‘백오프(back-off)’ 메커니즘이 추가됨
TCP 서버 및 HTTP 서버 예제
- C 언어로 작성된 기본 TCP 에코 서버는 클라이언트의 입력을 받아 “you sent:”를 붙여 다시 전송
-
socket(),bind(),listen(),accept(),send(),recv()등 Berkeley 소켓 API 사용 - 서버가
sleep()중일 때 클라이언트의 데이터는 수신 버퍼에 대기하며, 이후 순차적으로 처리됨
-
- 간단한 HTTP/1.1 서버 예제에서는 TCP 연결을 통해 요청을 수락하고,
HTTP/1.1 200 OK헤더와 본문을 전송- 요청 횟수를
i로 카운트하며,curl localhost:8080요청 시 “[1] Yo, I am a legit web server” 형태의 응답 출력
- 요청 횟수를
TCP 세그먼트 구조와 핵심 필드
- TCP 세그먼트는 출발지·목적지 포트, 시퀀스 번호, ACK 번호, 윈도우 크기, 체크섬, 플래그 등으로 구성
- 포트는 16비트씩 할당되어 최대 64K 포트 사용 가능
- 연결은
(프로토콜, 출발지 IP, 출발지 포트, 목적지 IP, 목적지 포트)의 5-튜플로 식별
-
시퀀스 번호는 전송된 바이트 범위를, ACK 번호는 수신 완료된 바이트를 나타냄
- 누락된 데이터가 있을 경우 ACK는 해당 지점에서 멈추며, 재전송 후 누적 ACK로 갱신
-
플래그 비트는 연결 상태를 제어
-
SYN/ACK는 3-way 핸드셰이크를 통해 연결 수립 -
FIN은 4-way 핸드셰이크로 연결 종료 -
RST는 비정상 종료나 오류 시 즉시 연결 해제
-
-
윈도우 필드는 수신 가능한 데이터 양을 표시하며,
ss명령으로 버퍼 상태(rb131072,tb16384) 확인 가능 - 체크섬(checksum) 은 세그먼트 내 16비트 단위 합산으로 오류 검출 수행
결론
- TCP는 신뢰성·순서·무결성을 보장하며, 불안정한 인터넷 환경에서도 애플리케이션이 정상 동작하도록 지원
- 수십 년 전에는 수 KB 전송도 어려웠지만, 오늘날 4K 스트리밍이 일상화될 만큼 발전
- 이러한 안정적 통신을 가능하게 한 TCP 설계와 구현의 정교함이 인터넷의 지속적 성장 기반임