- 등장 배경
- IP 프로토콜 만으로는 통신자들 간의 연결상태를 알지 못함.
- 중간에 데이터가 소실되거나 데이터의 순서가 잘못되어도 알 수 있는 방법이 없음.
- TCP
- 3 way handshake 의 단계
- 연결을 초기화할 때 거치는 과정
- SYN: 클라이언트가 서버와 연결하기 위해 커넥션을 보낸다.
- SYN+ACK: 서버가 클라이언트가 보낸 SYN 을 받고 받았다는 ACK 과 함께 SYN 을 보낸다.
- ACK: 다시 클라이언트에서 서버가 보낸 SYN 을 받고 ACK 을 보낸다.
- 이 과정을 통해 클라이언트와 서버 모두 통신할 준비가 되었다는 것을 서로가 확인할 수 있다.
- 4 way handshake 의 단계
- 종료하기 위해 수행되는 과정
- 클라이언트 FIN-WAIT: 클라이언트가 연결을 종료하겠다는 FIN 신호를 보내고 FIN-WAIT 상태가 됨.
- 서버 CLOSE-WAIT: 서버가 클라이언트의 FIN 을 받고 확인했다는 ACK 을 보내고 자신의 통신이 끝날 때까지 대기함. 이때 서버 상태는 CLOSE-WAIT.
- 서버 LAST-ACK: 서버의 통신이 끝나면 연결 해지 준비가 되었다는 신호로 FIN을 보냄.
- 클라이언트 TIME-WAIT: 서버의 FIN 을 받았다는 ACK 을 보내고 TIME-WAIT 상태가 됨. 아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME-WAIT 상태로 기다리는 것임.
- 이후 서버는 ACK 을 받고 종료
- TIME-WAIT 이 끝나면 클라이언트도 종료