연결을 성립하고 해제하는 과정을 말한다
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인 것)
연결 성립 후, 모든 통신이 끝났다면 해제해야 한다.
1) 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
2) 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)
3) 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
4) 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다.)
서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed)
이렇게 4번의 통신이 완료되면 연결이 해제된다.
[TCP] 3 way handshake & 4 way handshake는 TCP(Transmission Control Protocol)에서 연결 설정과 해제 과정을 수행하는 방법입니다.
3 way handshake는 TCP 연결 설정 과정을 의미합니다. 이 과정은 다음과 같은 순서로 진행됩니다.
이러한 과정을 통해 클라이언트와 서버는 연결을 설정하고, 데이터 전송이 가능한 상태가 됩니다.
4 way handshake는 TCP 연결 해제 과정을 의미합니다. 이 과정은 다음과 같은 순서로 진행됩니다.
이러한 과정을 통해 클라이언트와 서버는 연결을 해제하고, 연결에 사용되었던 자원을 반환합니다. 4 way handshake는 3 way handshake와 달리 연결을 해제하는 과정이므로, 서버와 클라이언트 모두 FIN 패킷을 전송하여 연결을 완전히 종료합니다.
3 way handshake와 4 way handshake는 TCP의 안정적인 데이터 전송을 보장하기 위해 매우 중요한 과정입니다. 이러한 과정을 통해 데이터 전송 과정에서 발생할 수 있는 문제를 예방하고, 안정적인 데이터 전송을 보장할 수 있습니다.
ACK 패킷
ACK(Acknowledgment) 패킷은 TCP(Transmission Control Protocol)에서 데이터 전송의 신뢰성을 보장하기 위해 사용되는 패킷입니다. ACK 패킷은 데이터를 제대로 받았다는 응답 메시지를 보내는 패킷으로, 데이터 전송 과정에서 발생할 수 있는 오류를 방지하고 데이터의 신뢰성을 보장합니다.
ACK 패킷은 TCP에서 데이터를 전송할 때 사용되는 전송 제어 프로토콜(TCP)의 특성 중 하나입니다. TCP에서 데이터를 전송할 때, 데이터를 나누어 패킷으로 만들고 패킷을 전송합니다. 이때, 패킷을 전송한 측에서는 전송한 패킷이 상대방에게 제대로 전송되었는지 확인하기 위해, 상대방으로부터 ACK 패킷을 받습니다. ACK 패킷을 받으면, 전송한 패킷이 제대로 도달했다는 것을 알 수 있습니다.
ACK 패킷은 TCP의 안정적인 데이터 전송을 보장하기 위해 매우 중요한 역할을 합니다. 데이터 전송 과정에서 데이터를 잃어버리거나 손상되는 경우, ACK 패킷이 도착하지 않는 것을 확인할 수 있으며, 이를 바탕으로 재전송을 요청합니다. 이러한 방식으로 TCP는 안정적이고 신뢰성 높은 데이터 전송을 보장합니다.
TCP/IP
TCP/IP는 인터넷에서 컴퓨터 간에 데이터를 주고받을 수 있도록 하는 프로토콜(Protocol) 집합입니다. TCP/IP는 TCP(Transmission Control Protocol)와 IP(Internet Protocol) 두 가지 프로토콜을 중심으로 구성되어 있습니다.
TCP는 전송 계층(Transport Layer)에서 동작하는 프로토콜로, 데이터의 안정적인 전송을 보장합니다. TCP는 연결 지향적인 프로토콜로, 데이터 전송 전에 연결을 설정하고, 데이터 전송이 완료된 후에는 연결을 종료합니다. 이러한 특성으로 인해 TCP는 안정적이고 신뢰성 높은 데이터 전송을 보장합니다.
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는 컴퓨터 네트워크 분야에서 가장 중요한 기술 중 하나입니다.