간단하게 말하자면 연결을 성립하고 해제하는 과정을 말한다
TCP(Transmission Control Protocol)의 약자이다.
인터넷 프로토콜 스위트에서 주요 프로토콜 중 하나이며, 종종 인터넷 프로토콜(IP)과 결합하여 TCP/IP라고 불린다.
즉, TCP는 패킷이 오류 없이 순서대로 목적지에 도달하는 것
을 확인합니다. 웹 브라우징, 이메일, 원격 관리, 파일 전송과 같이 신뢰성이 요구되지만 시간에 덜 민감한 애플리케이션에서 사용된다.
신뢰성 있는 전송: TCP는 발신자로부터 데이터가 오류 없이 올바른 순서로 목적지에 도달하는 것을 보장합니다.
패킷 순서: TCP는 패킷이 목적지에 순서대로 도착하지 않는 경우 원래의 순서로 재배열
합니다.
오류 검사: TCP는 데이터가 전송 중에 손실되었는지 확인하는 오류 검사 메커니즘
을 포함합니다.
흐름 제어: TCP는 수신자를 압도하지 않도록 발신자가 보내는 데이터의 양
을 제어합니다.
연결 지향성: 어떤 데이터 전송이 발생하기 전에, TCP 연결
은 먼저 발신자와 수신자 사이에 설정되어야 합니다.
즉, TCP는 네트워크상의 장치들 사이에서 데이터를 신뢰성 있고 순서대로 전달하는 것을 보장하는 인터넷 프로토콜 스위트의 중요한 구성요소입니다.
TCP는 정확한 전송을 보장해야 한다. 따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다.
1) 클라이언트가 서버에게 SYN 패킷을 보냄 (sequence : x)
2) 서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄 (sequence : y, ACK : x + 1)
3) 클라이언트는 서버의 응답은 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)를 서버로 보냄
이렇게 3번의 통신이 완료되면 연결이 성립된다. (3번이라 3 way handshake인 것)
❓ ACK와 SYN
ACK (Acknowledgment):
ACK 패킷은 TCP 연결에서 데이터가 성공적으로 수신되었음을 확인하는 데 사용되는 패킷.
수신자가 데이터를 정상적으로 받았다는 응답을 보내는 ACK 패킷을 통해 이루어집니다. 만약 데이터 패킷이 손실되거나 손상된 경우, 수신자는 ACK 패킷을 보내지 않아서 발신자는 데이터를 다시 전송할 수 있다.SYN (Synchronize):
SYN 패킷은 TCP 연결 설정을 위한 초기 단계인 "3-way handshake" 과정에서 사용된다.
첫 번째 단계에서, 클라이언트는 서버에게 SYN 패킷을 보내 연결을 초기화합니다. 이 패킷은 서버가 클라이언트와 통신할 준비가 되었음을 알리는 데 사용됩니다. 이후 서버는 SYN과 ACK 패킷을 동시에 보내 연결을 수락하고, 마지막으로 클라이언트는 서버에게 ACK 패킷을 보내 연결을 완료합니다.
연결 성립 후, 모든 통신이 끝났다면 해제해야 한다.
1) 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
2) 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)
3) 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
4) 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다.)
클라이언트는 FIN 패킷을 받았다는 확인 응답으로 ACK 패킷을 보내고, 일정 시간이 지나면 연결을 종료합니다.
서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed)
이렇게 4번의 통신이 완료되면 연결이 해제된다.
❓ TCP/IP
TCP/IP는 인터넷에서 컴퓨터 간에 데이터를 주고받을 수 있도록 하는 프로토콜(Protocol) 집합.
TCP/IP는 TCP(Transmission Control Protocol)와 IP(Internet Protocol) 두 가지 프로토콜을 중심으로 구성.그 중 IP는 네트워크 계층(Network Layer)에서 동작하는 프로토콜로, 패킷 전송을 담당한다. IP는 패킷을 목적지 주소로 전달하는 역할을 하며, 패킷의 경로를 결정하기 위해 라우팅 테이블을 사용한다. 이러한 특성으로 인해 IP는 패킷 전송을 효율적으로 처리할 수 있습니다.
TCP/IP는 인터넷에서 데이터 통신을 위한 표준 프로토콜로, 많은 인터넷 서비스 및 응용 프로그램에서 사용됩니다. 예를 들어, HTTP(Hypertext Transfer Protocol)는 TCP/IP 기반의 프로토콜로, 웹 브라우저와 웹 서버 간의 통신에 사용됩니다. 또한, FTP(File Transfer Protocol), Telnet, DNS(Domain Name System) 등의 다양한 인터넷 서비스도 TCP/IP 기반의 프로토콜을 사용합니다.
TCP/IP는 인터넷을 비롯한 컴퓨터 네트워크에서 중요한 역할을 하며, 안정적이고 신뢰성 높은 데이터 통신을 가능하게 합니다. 따라서, TCP/IP는 컴퓨터 네트워크 분야에서 가장 중요한 기술 중 하나입니다.