정확한 전송을 보장
unreliable network에서 reliable network를 보장할 수 있도록 하는 프로토콜
network congestion avoidance algorithm 사용
TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
session
세션 수립은 연결 지향 통신을 수행하는 데 기초적인 요구사항
정보 교환을 전제하는 컴퓨터와 사용자 간의 송수신 연결상태를 의미하는 보안적인 다이얼로그 및 시간대를 의미
클라이언트 -> 서버
SYN(M)를 보낸다.
서버 -> 클라이언트
SYN(N), ACK(M+1)를 보낸다.
클라이언트 -> 서버
ACK(N+1)를 보낸다.
3번의 통신으로 연결이 성립된다.
SYN 패킷과 ACK 패킷에 들어있는 것은 시퀀스 번호로 난수이다.
난수인 이유는 이전 connection과 구분해서 오류를 줄이기 위해서이다.
연결 성립 후, 연결을 해제하기 위한 과정
클라이언트 -> 서버
FIN 플래그를 보낸다.
서버 -> 클라이언트
ACK를 보낸다. (FIN 플래그를 받았다는 확인 메시지)
모든 데이터를 클라이언트에게 보내기 위해 TIME WAIT(대기) 상태가 된다.
서버 -> 클라이언트
데이터를 모두 보냈다면, FIN 플래그를 보낸다.
클라이언트 -> 서버
FIN 플래그를 받고, 확인했다는 의미로 ACK를 보낸다.
아직 서버로부터 받지 못한 데이터가 있을 수 있기 때문에 TIME WAIT을 통해 기다린다.
TIME WAIT의 기본값은 240초로 세션을 종료하지 않은 상태로 서버로부터 미처 받지 못했을 데이터를 기다린다.