TCP 커넥션
클라이언트와 서버는 데이터를 주고받기 위해 TCP 커넥션을 생성한다. TCP 커넥션을 통해 요청과 응답을 보낸다.
- 클라이언트와 서버 간에 데이터를 안정적으로 전달하기위한 커넥션
- HTTP 통신은 패킷 교환 네트워크 프로토콜들의 계층화된 집합인 TCP / IP 를 통해 이루어짐
3-Way Handshake
- TCP / IP 프로토콜을 이용해서 통신을 할 때 연결을 수립하기 위한 과정. 해당 과정을 통해 TCP 커넥션을 생성한다.
- 순서
- 통신을 하기 위해 클라이언트에서 서버로 데이터 전송을 허가받기 위해 SYN(요청) 플래그를 서버에 전송
- 서버쪽에서 응답을 회신하기 위해 연결 확립에 대한 응답을 보냄. 클라이언트의 요청을 허가하는 ACK(응답) 플래그와 함께 서버 역시 클라이언트에게 데이터 전송을 허가받기 위해 SYN 플래그를 클라이언트에게 전송.
- 클라이언트 쪽에서 서버의 데이터 전송을 허가하는 ACK 플래그를 전송
TCP 커넥션 생성
- TCP 커넥션을 생성하기 위해서는 4가지 값이 필요
- 발신지 IP 주소, 발신지 포트, 수신지 IP 주소, 수신지 포트
- 요청 URL과 3-Way Handshake 의 과정을 통해 얻은 정보로 TCP 커넥션을 생성
4-Way Handshake
- TCP / IP 프로토콜을 이용해서 통신을 할 때 연결을 종료하기 위한 과정. 해당 과정을 통해 TCP 커넥션을 종료한다.
- 순서
- 클라이언트에서 연결을 종료하기 위해 서버에게 FIN(연결 종료) 플래그를 서버에 전송
- 서버에서 클라이언트로부터 받은 연결 종료 요청에 대한 응답으로 ASK 플래그를 전송
- 서버에서 연결 종료 작업을 처리 후 FIN 플래그를 클라이언트에게 전송
- 클라이언트에서 서버로부터 받은 연결 종료 요청에 대한 응답으로 ASK 플래그를 전송