TCP(전송 제어 프로토콜)란?
Transmission Control Protocol의 약자. 전송 계층의 연결형 프로토콜. 3-way 핸드셰이크로 연결을 설정하고, 시퀀스 번호, 확인 응답(ACK), 재전송을 통해 데이터를 빠짐이나 중복 없이 보낸 순서대로 전달한다. 흐름 제어와 혼잡 제어로 보내는 양도 조절한다. 웹 접속(HTTP/1.1·HTTP/2), 메일, SSH 등이 사용한다.
일본어 명칭: TCP
TCP(전송 제어 프로토콜)은(는) 네트워크 기초, 네트워크 설계와 운용, 웹 기술 기초 등 3개 분야의 연습 문제 21개에 나와요.
분야: 네트워크 기초
헤더와 연결 관리
TCP 헤더는 옵션 없이 20바이트입니다. 출발지와 목적지의 포트 번호, 시퀀스 번호, 확인 응답 번호, SYN·ACK·FIN·RST 등의 플래그, 윈도 크기, 체크섬이 들어갑니다. 하나의 연결은 출발지와 목적지의 IP 주소와 포트 번호 4개의 조합으로 구별됩니다. 연결은 3-way 핸드셰이크로 시작하고, 양방향이 각각 FIN을 보내 닫습니다. 세그먼트 하나가 손실되면 뒤의 데이터가 도착해 있어도 애플리케이션에 넘기지 못하고 기다리게 되므로(HOL 블로킹, head-of-line blocking), HTTP/3에서는 UDP 위의 QUIC가 쓰입니다.
자주 묻는 질문
TCP와 UDP의 차이는 무엇인가요?
TCP는 연결을 설정하고, 확인 응답과 재전송, 순서 제어로 데이터를 확실하게 전달합니다. UDP는 연결 절차도 재전송도 없이 데이터그램을 보내기만 하므로 헤더가 작고 지연도 적습니다. 확실성이 필요한 웹이나 파일 전송에는 TCP, 약간의 손실보다 지연이 적은 것이 중요한 통화나 질의가 짧은 DNS에는 UDP가 쓰입니다.
TCP의 재전송은 언제 일어나나요?
두 가지 계기가 있습니다. 하나는 보낸 뒤 재전송 타임아웃 시간(RTT 측정으로 계산)이 지나도 ACK가 오지 않을 때, 또 하나는 같은 확인 응답 번호의 ACK를 3개 연속으로 받았을 때이며, 후자를 빠른 재전송이라고 부릅니다. 재전송이 계속되면 타임아웃 시간을 2배씩 늘립니다.
TCP의 처리량이 회선 속도보다 낮은 이유는 무엇인가요?
1왕복 시간(RTT)에 보낼 수 있는 것은 윈도 크기까지이므로, 상대가 멀수록, 윈도가 작을수록 처리량이 떨어집니다. 패킷 손실로 혼잡 제어가 윈도를 줄였을 때나 수신 측 애플리케이션의 읽기가 느릴 때도 떨어집니다.