장치와 장치가 TCP통신을 하기 위해서는
세션의 시작 과정인 3-way-handshake와 세션의 종료 과정인 4-way-handshake가 필요하다
3-way-handshake는 TCP/IP프로토콜로 통신을 하는 과정에서 데이터 전송 전 정확, 안전한 전송을 위해 상대방 장치와 Session을 연결하는 과정이다.
반대로 4-way-handshake는 정상적인 종료를 위함
3-way-handshake 과정
Client ==> Server : TCP(SYN)
Client <== Server : TCP(SYN/ACK)
Client ==> Server : TCP(ACK)
[STEP 1]
Client는 Server에 접속 요청을 함 (SYN 패킷 전송)
Client는 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 됨
[STEP 2]
Server가 SYN요청을 받고 해당 요청이 정상적인 서비스 요청이라면 응답 (SYN/ACK 패킷 전송)
Server는 Client의 ACK패킷 응답 대기 상태인 SYN_RECIVED가 된다
[STEP 3]
Client는 Server로 부터 응답이 왔으면 세션을 맺는 과정의 마무리 응답 (ACK 패킷 전송)
이렇게 되면 3-way-handshake가 마무리 되면서 통신이 가능한 Established 상태가 된다
아래는 실제 서비스 중인 장비에서 확인한
172.26.0.1 <-> 172.26.0.5 3-way-handshake 과정
(IP정보 및 Port정보 등 보안적인 요소는 사설 IP기에 영향이 없으므로 모자이크 하지않고 게시하였습니다)
tcpdump를 통해 패킷을 확인했을 때 TCP/ACK 패킷은 . 으로 확인이 된다 (SYN/ACK -> S.)
위 과정으로 3-way-handshake가 종료되면 아래와 같이 신뢰적인 통신이 가능한 상태가 된다.
4-way-handshake
장치와 장치가 TCP통신을 하기 위해서 세션의 시작 과정인 3-way-handshake가 필요했다면,
세션의 종료는 4-way-handshake 과정이 필요하다.
4-way-handshake는 3way에 비해 좀 더 간단하다.
4-way-handshake 과정
Client ==> Server : TCP(FIN)
Client <== Server : TCP(ACK)
Client <== Server : TCP(FIN)
Client ==> Server : TCP(ACK)
[STEP 1]
Client가 Server로 세션을 종료하겠다는 FIN패킷 전송
클라이언트는 FIN-WAIT 상태
[STEP 2]
Server는 FIN패킷을 받은 후 ACK 패킷을 보내고 현재 모든 통신이 끝날때까지 대기 상태
Server은 CLOSE-WAIT 상태
[STEP 3]
Server는 모든 통신이 정상적으로 끝나서 세션 종료를위한 준비가 끝났음을 알리는 FIN패킷을 Client로 전송
Server는 LAST-ACK 상태
[STEP 4]
Client도 세션 종료 준비가 끝났음을 알리는 ACK패킷을 Server로 전송
Client는 TIME-WAIT 상태
STEP 4의 TIME-WAIT 상태는 중요한데, Server은 Client의 모든 응답에 대한 패킷을 전송 후, FIN 패킷을 보냈는데 만약 회선의 상태 , 경로 설정의 오류 등등으로 인해 FIN패킷 전에 보낸 데이터 패킷이 도착 하지 않았다면
데이터를 손실할 수도 있는데, 이 때 TIME-WAIT 상태라고 60~240초(장비마다 설정값이 다름)를 기다리게 된다.
TIME-WAIT 상태의 대기 시간이 모두 지나면 세션을 종료 및 CLOSE 상태로 변경
'일 > Network' 카테고리의 다른 글
IP 역추적 네트워크 단말기로 역추적 하기 (0) | 2024.10.15 |
---|---|
데이터가 전달되는 과정 TCP/IP 통신 과정 (2) | 2024.07.25 |
[L3 개념] PAT (Port Address Translation) 개념 정리 (0) | 2021.12.04 |
[L3 개념] NAT SNAT DNAT 네트워크 주소 변환 개념 , 정리 (0) | 2021.12.02 |
[L2 개념] 치명적인 Network Looping 루핑 원인 , 해결 방법 STP (0) | 2021.11.23 |