-
TCP FSM(Finite State Machine)Security in CPS/Networking 2019. 5. 21. 10:13
안녕하세요.
이번에는 TCP FSM 에 대해 알아보겠습니다..
아래 링트에 내용을 정리한 내용이니 참고하시면 되겠습니다.
http://tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm
State State Description Event & Transition CLOSED 디폴트 상태로 어떤 장치간(Client/Server)간 연결이 존재하지 않는 상태입니다. Passive Open : 서버의 경우 클라이언트의 요청이 들어오기 전까지 대기 상태를 유지하게 됩니다. 이를 위해 필요한 Data structure를 만들고 다음 상태인 Listen 로 전환됩니다. Active Open / Send SYN : 클라이언트의 경우 TCP 연결을 위해 서버에게 SYN 메세지(seq 정보 포함)를 전달합니다. 이때 연결을 위한 TCB(task control black) 를 교환합니다. 이후 다음 상태인 SYN-SENT로 전환됩니다.
LISTEN 서버의 상태로 클라이언트의 요청(SYN) 메세지를 기다립니다. Receive SYN, Send ACK : 서버가 클라이언트로부터 SYN 메세지를 받게 되면 SYN-ACK(서버의 seq 넘버 포함) 메세지를 전송합니다. 이후 다음 상태인 SYN-RECEIVED로 전환됩니다. SYN-SENT 보통 클라이언트의 상태로 서버로 SYN메세지를 보낸 후 SYN-ACK 메세지를 기다리는 상태입니다. Receive SYN, Send ACK: 클라이언트 자신의 SYN에 대한 ASK를 받지 못하고 다른 클라이언트/서버로 부터 SYN 메세지를 받은 상태로 SYN-RECEIVED 상태로 전환한 후 자신의 SYN에 대한 응답을 기다립니다. Receive SYN-ACK, Send ACK: 클라이언트는 서버로 부터 연결이 가능하단 메세지를 받고 TCP Established 상태로 전환합니다. SYN-RECEIVED 자신이 보낸 SYN에 대한 ACK를 기다립니다. Receive ACK: 자신의 SYN 에 대한 응답을 받고 다음 ESTABLISHED 상태로 전환됩니다. ESTABLISHED TCP 연결을 위한 3-way handshake 가 완료된 상태(open session) 입니다. Close, Send FIN : TCP 연결을 종료하기 위해 서버/클라이언트로 FIN 메세지를 전달하고 FIN-WAIT-1 상태로 전환됩니다. Receive FIN : 서버/클라이언트로부터 연결 종료를 위한 메세지(FIN)를 받고 프로그램의 종료를 기다립니다.(CLOSE-WAIT) CLOSE-WAIT 다른 서버/클라이언트로 부터 종료 메세지를 받은 후 진행중이던 동작(apps)의 종료를 기다리는 상태입니다. Close, Send FIN: TCP를 사용중이던 App 에게 TCP 종료를 알리고 관련 리소스를 정리합니다. 정리가 완료된 후 FIN 메세지를 서버 혹은 클라이언트에게 전달합니다. 이후 LAST-ASK 상태로 전환합니다. LAST-ASK 자신이 보낸 FIN 메세지에 대한 ACK를 기다립니다. Receive ACK for FIN : ACK 메세지를 받으면 Closed 상태로 전환됩니다,
FIN-WAIT-1 자신의 종료를 알리는 FIN을 보낸 후 ACK를 기다리는 상태입니다. Receive ACK for FIN : 자신의 FIN 메세지에 대한 ACK 를 받은 후(2-way handshake) 서버/클라이언트의 종료 메세지를 기다립니다.(FIN-WAIT-2) Receive FIN, Send ACK : 자신의 FIN 에 대한 ACK 를 받지 못한 채 서버/클라이언트로 부터 종료 요청이 들어온 상태로 다음 단계인 TIME-WAIT 상태로 전환한 후 ACK를 기다립니다. FIN-WAIT-2 자신의 TCP 연결 종료를 완료하고 상태의 FIN 메세지를 기다리는 상태입니다. Receive FIN, Send ACK : 다른 장치로부터 FIN 를 받고 TIME-WAIT상태로 전환됩니다. CLOSING 다른 장치로부터 FIN 를 받았지만 자신의 FIN 메세지에 대한 ACK를 기다리는 상태 입니다. Receive ACK for FIN : 종료를 위한 모든 단계가 완료되어 TIME-WAIT 상태로 전환합니다. TIME-WAIT 종료를 위한 모든 메세지 FIN/ACK를 받은 상태로 새로운 연결을 위한 Overlap를 방지하기 위한 상태입니다. Timer Expiration : 디폴트 단계인 CLOSED 상태로 전환됩니다. 'Security in CPS > Networking' 카테고리의 다른 글
[Problem] No SYN,ACK in TCP 3-ways handshake (0) 2019.10.15 [아파치] 커스텀 모듈 빌드 및 로딩 (0) 2019.09.04 [apache2] build apache2 (httpd) (0) 2019.09.04 Install apache2 & check MPM on ubuntu (0) 2019.08.28 UDP DDos threats and vulnerabilities (0) 2019.05.21