TCP는 연결형 프로토콜이라고 이전 글에서 말하였는데 어떠한 방식으로 연결을 수립하는지 확인해봅니다. 

TCP의 기능 동작을 구현하기 위해서 TCP FSM(유한 상태 머신)으로 구현되어 있기 때문에

TCP FSM에 대해서 설명을 진행합니다.

내 컴퓨터에서 TCP의 FSM을 확인해보려면 <윈도우 명령 프롬프트>를 실행시킨 후 

netstat를 입력해보자. 

netstat 실행
netstat 실행 화면

상태라고 표시된 부분에 해당 TCP소켓의 FSM(유한 상태 머신)이 표시된다. 

간단히 FSM에 대해서 살펴보자.

메 시 지 설명
SYN(synchronize) 동기화 메시지. 연결을 초기화하고 수립한다. 이 메시지는 장비간의 순서 번호를 동기화 시킨다.
FIN(finish) 종료 메시지. TCP 세그먼트의 FIN비트가 설정된 메시지. 장비의 종료 요청을 알린다. 
ACK(acknowledgment) 승인 메지시. 이 메시지는 SYN나 FIN의 메시지 대해서 잘 받았다는 응답을 처리한다.
상 태 설 명
CLOSE 연결 수립을 시작하기전의 기본 상태(연결 없음)
LISTEN 클라이언트의 SYN(연결 초기화 요청) 메시지를 기다리는 상태
SYN-SENT 자신의 SYN 메시지를 보내고 상대방의 응답 SYN를 기다리는 상태
SYN-RECEIVED 상대방의 SYN 메시지를 전달받고 자신의 SYN 메시지를 보내고 ACK를 기다리는 상태
ESTABLISHED 연결의 수립이 완료된 상태. 서로 데이터를 교환 할 수 있다.
CLOSE-WAIT 상대방의 FIN(종료 요청)을 받은 상태. 상대방 FIN에 대한 ACK을 보내고 애플리케이션에 종료를 알린다.
LAST-ACK CLOSE-WAIT 상태를 처리 후 자신의 FIN요청을 보낸 후 FIN에 대한 ACK을 기다리는 상태.
FIN-WAIT-1 자신이 보낸 FIN에 대한 ACK를 기다리거나 상대방의 FIN을 기다린다.
FIN-WAIT-2 자신이 보낸 FIN에 대한 ACK를 받았고 상대방의 FIN을 기다린다.
CLOSING 상대방의 FIN에 ACK를 보냈지만 자신의 FIN에 대한 ACK를 못받은 상태
TIME-WAIT 모든 FIN에 대한 ACK를 받고 연결 종료가 완료된 상태. 새 연결과 겹치지 않도록 일정 시간 동안 기다린 후 CLOSED로 전이한다.

 

다음글 : [TCP] 연결수립 과정2

+ Recent posts