- TCP 역사
- ARPAnet
- 1970년대 초창기의 인터넷은 ARPAnet이라고 불리는 작은 연구 인터네트워크에 불과
- ARPA(또는 DARPA)는 미국 국방부 고등 연구 계획국(United States Defense Advanced Research Projects Agency)의 약자
- 이 네트워크는 호스트가 서로 연결할 수 있도록 하는 기술인 네트워크 제어 프로토콜(NCP, Network Control Protocol)을 사용
- 초창기 TCP
- RFC 375로 전송 제어 프로그램(Transmission Control Program)이라 불림
- 기본적으로 애플리케이션이 인터네트워크에서 동작하기 위해 필요한 모든 것을 책임짐
- 초창기 TCP는 오늘날의 TCP와 IP 기능을 모두 가지고 있음
- TCP와 IP의 분리
- 4계층 기능은 전송 제어 프로토콜(Transmission Control Protocol)
- 3계층은 인터넷 프로토콜로 분리
- TCP 버전 4에서 확정 -> 그러므로 IP의 첫 버전도 "버전 4"로 명명
- 1981년 9월 RFC 793 "Transmission Control Protocol"은 TCP 버전 4를 정의했으며 현재까지 유효한 표준으로 쓰이고 있음
- TCP 동작 개요
- TCP/IP 프로토콜 슈트의 핵심 전송 계층 프로토콜은 전송 제어 프로토콜(TCP)이다.
- TCP는 연결형이고, 승인을 제공하며, 신뢰할 수 있는 다양한 기능을 갖춘 프로토콜로 안정적이지 않은 인터넷 프로토콜(IP) 위에서 애플리케이션이 안정적으로 데이터를 송신하는 방법을 제공한다.
- TCP는 애플리케이션이 데이터를 바이트 스트림으로 보낼 수 있도록 하며 그 바이트 스트림을 적절한 크기의 세그먼트로 자동 패키징한다.
- 그리고 TCP의 특수 슬라이딩 윈도우 체계는 수신자가 모든 데이터를 수신하고, 필요할 경우 재전송을 하며, 상대방의 송신 속도를 조절할 수 있는 흐름 제어 기능을 제공한다.
- TCP 표준
- RFC 793은 TCP를 정의하는 표준이지만 근래의 TCP가 동작하는 모든 세부 사항을 기술하지는 않음
- 보조 TCP 표준
RFC | 이름 | 설명 |
813 | Window and Acknowledgment Strategy in TCP | TCP 슬라이딩 윈도우 승인 시스템과 그로 인해 발생할 수 있는 문제, 해결 방법을 설명한다. |
879 | The TCP Maximum Segment Size and Related Topics | TCP 메시지 크기를 제어하는 중요한 최대 세그먼트 크기(MSS) 인자를 설명하고 이 인자를 IP 데이터그램 크기와 연관시킨다. |
896 | Congestion Control in IP/TCP Internetworks | 혼잡 문제를 다루며 TCP를 이용해 그 문제를 해결하는 방법을 설명한다. 제목에 나온 프로토콜 이름이 거꾸로(IP/TCP) 적혀 있다는 것에 주목하자. |
1122 | Requirements for Internet Hosts - Communication Layers | 호스트에서 TCP를 구현하는 중요한 세부 사항을 설명한다. |
1146 | TCP Alternate Checksum Options | TCP 장비가 기존과는 다른 체크섬 계산법을 사용하도록 하는 방법을 명시한다. |
1323 | TCP Extensions for High Performance | 고속 링크를 위한 TCP 확장과 새로운 TCP 옵션을 정의한다. |
2018 | TCP Selective Acknowledgment Options | TCP 장비가 특정 세그먼트만을 재전송하도록 선택하는 기능을 설명한다. |
2581 | TCP Congestion Control | TCP 네트워크에서 혼잡을 제어하는 데 사용하는 4가지 알고리즘인 느린 시작, 혼잡 회피, 빠른 재전송, 빠른 회복을 설명한다. |
2988 | Computing TCP's Retransmission Timer | 장비가 데이터를 재전송하기 전에 승인 메시지를 기다리는 시간을 정의하는 TCP 재전송 타이머를 설정하는 문제를 다룬다. |
TCP 기능
- TCP가 수행하는 기능
- 주소지정/다중화
- 여러 프로세스에서 온 데이터를 다중화하여 하위 네트워크 계층 프로토콜로 송신되도록 하는 것은 TCP의 중요한 임무다
- 동시에 이들 상위 계층 애플리케이션은 TCP 포트를 통해 식별된다.
- 연결 수립, 유지, 종료
- TCP는 장비가 데이터를 이동시킬 수 있는 연결을 협상하고 수립하기 위해 따라야 할 절차 모음을 제공한다.
- 연결이 수립되면 TCP는 연결을 유지하고 혹시 발생할 지 모르는 문제를 처리하기 위한 방법이 있다.
- 장비가 TCP 연결로 할 일을 마치면 그 연결을 종료하기 위한 특수한 절차도 수행된다.
- 데이터 처리와 패키징
- 애플리케이션이 상위 계층에서 데이터를 송신할 수 있는 방법을 제공한다.
- 이 데이터는 메시지로 패키징되고 목적지 TCP 소프트웨어로 전달된다.
- 데이터 전송
- 송신 장비의 TCP 구현은 패키징된 데이터를 다른 장비의 TCP 프로세스로 전달할 책임이 있다.
- 신뢰성과 전송 품질 서비스 제공
- 애플리케이션이 데이터를 신뢰할 수 있게 송신할 수 있도록 여러 서비스와 기능을 제공한다.
- 흐름 제어와 혼잡 회피 기능 제공
- 두 장비 간의 데이터 흐름을 제어하고 관리할 수 있도록 한다.
- 두 장비 간 통신에서 발생할 수 있는 혼잡을 처리하는 기능도 포함한다.
- TCP가 수행하지 않는 기능
- 애플리케이션 사용 명시 안함
- 전송 프로토콜만을 정의하므로 애플리케이션이 어떻게 TCP를 사용해야 하는지 구체적으로 명시하지 않는다.
- 보안 제공 안함
- 전송하는 데이터의 인증이나 프라이버시를 보장하기 위한 어떤 방법도 제공하지 않음
- 메시지 경계 유지 안함
- TCP는 데이터를 분리된 메시지가 아닌 연속된 스트림으로 송신
- 한 메시지가 어디에서 끝나고 다음 메시지는 어디에서 시작되는지를 명시하는 것은 애플리케이션에게 달려있음
- 통신 보장 안함
- TCP는 승인을 받지 않는 전송을 탐지하고 필요할 경우 재전송
- 어떤 문제가 통신을 방해할 경우 TCP는 계속 재전송을 시도함
TCP 특성
- 연결형
- TCP는 장비가 데이터를 송신하기 전에 먼저 연결을 수립할 것을 요구
- 양방향
- 일단 연결이 수립되면 TCP 장비는 누가 연결을 초기화했는지에 관계없이 데이터를 양방향으로 송수신함
- 다중 연결과 종단 식별
- 연결된 두 장비가 사용하는 소켓 쌍은 TCP 연결의 종단을 식별
- 신뢰성
- TCP는 모든 데이터가 목적지에 도달할 수 있도록 송신, 수신한 데이터를 추적하기 때문에 TCP 통신은 신뢰성이 있다.
- 승인
- 신뢰성을 제공하는 데 핵심이 되는 특성은 TCP가 모든 전송에 대한 승인 메시지를 보낸다는 것이다.
- 스트림 기반
- TCP는 애플리케이션이 연속적인 데이터 스트림을 송신할 수 있도록 한다.
- 애플리케이션은 이 스트림을 블록으로 나누는 것을 걱정할 필요가 없다. TCP가 알아서 해준다.
- 구조화되지 않은 데이터
- TCP의 스트림 기반 특성때문에 애플리케이션은 메시지간 구별하는 방법을 제공해야 한다.
- 데이터 흐름 관리
- TCP는 데이터가 일정한 속도로 평탄하게 흐르고, 전송 경로 중 발생하는 문제를 처리할 수 있도록 연결을 관리한다.
견고성 원칙
"자신이 수행하는 작업은 보수적으로, 다른 사람에게서 무언가를 받을 때는 관대하게"