각 노드는 상태를 나타내고 화살표는 다음 상태로의 전환을 유발하는 이벤트이다.
/는 독립적인 상태가 두 개 있다면 수신/송신으로, 동작과 상태가 있다면 and로 해석한다.
기본적으로 send가 없으면 전부 recv로 해석해야 한다.
1. CLOSED
- 초기 상태: TCP 연결이 닫혀 있는 상태입니다.
- 전환 조건:
- Passive Open: 서버가 연결을 수락할 준비를 하면 LISTEN 상태로 전환.
- Active Open/SYN: 클라이언트가 연결 요청(SYN)을 보내면 SYN-SENT 상태로 전환.
- Close: 상태를 유지하며 연결 종료.
2. LISTEN
- 설명: 서버가 클라이언트의 연결 요청(SYN)을 기다리는 상태입니다.
- 전환 조건:
- SYN/SYN+ACK: 클라이언트로부터 SYN 또는 SYN+ACK을 받으면 SYN-RCVD 상태로 전환.
- Send/SYN: 서버가 클라이언트로 연결 요청(SYN)을 보내면 SYN-SENT 상태로 전환.
3. SYN-SENT
- 설명: 클라이언트가 SYN 패킷을 보낸 후, 서버의 응답을 기다리는 상태입니다.
- 전환 조건:
- SYN/SYN+ACK: 서버로부터 SYN 또는 SYN+ACK을 수신하면 SYN-RCVD 상태로 전환.
- SYN+ACK/ACK: 서버로부터 SYN+ACK을 수신하고, 클라이언트가 ACK를 보내면 ESTABLISHED 상태로 전환.
4. SYN-RCVD
- 설명: 서버가 클라이언트로부터 SYN을 받고 SYN+ACK으로 응답한 상태입니다.
- 전환 조건:
- ACK: 클라이언트로부터 ACK를 받으면 ESTABLISHED 상태로 전환.
- Close/FIN: 서버가 연결 종료를 요청하면 FIN-WAIT-1 상태로 전환.
5. ESTABLISHED
- 설명: TCP 연결이 성공적으로 설정된 상태로, 양측이 데이터를 송수신할 수 있습니다.
- 전환 조건:
- Close/FIN: 송신자가 연결 종료 요청(FIN)을 보내면 FIN-WAIT-1 상태로 전환.
- Close/FIN: 수신자가 FIN을 받는 경우 CLOSE-WAIT 상태로 전환.
6. FIN-WAIT-1
- 설명: 송신자가 FIN을 보낸 상태로, 수신자의 ACK를 기다립니다.
- 전환 조건:
- ACK: 수신자가 FIN에 대해 ACK를 보내면 FIN-WAIT-2 상태로 전환.
- FIN/ACK: 수신자가 동시에 FIN과 ACK를 보내면 CLOSING 상태로 전환.
7. FIN-WAIT-2
- 설명: 송신자가 ACK를 받은 후, 수신자의 FIN을 기다립니다.
- 전환 조건:
- FIN/ACK: 수신자가 FIN을 보내면 TIME-WAIT 상태로 전환.
8. CLOSE-WAIT
- 설명: 수신자가 송신자로부터 FIN을 받은 상태로, 연결 종료를 준비합니다.
- 전환 조건:
- Close/FIN: 수신자가 FIN을 보내면 LAST-ACK 상태로 전환.
9. LAST-ACK
- 설명: 수신자가 FIN을 보내고 송신자의 ACK를 기다리는 상태입니다.
- 전환 조건:
- ACK: 송신자로부터 ACK를 받으면 CLOSED 상태로 전환.
10. CLOSING
- 설명: 양측이 동시에 FIN을 보낸 상태로, ACK를 기다리고 있습니다.
- 전환 조건:
- ACK: ACK를 받으면 TIME-WAIT 상태로 전환.
11. TIME-WAIT
- 설명: FIN을 보낸 측에서 마지막 ACK를 보낸 후, 네트워크 지연이나 패킷 재전송을 대비해 일정 시간 대기하는 상태입니다.
- 전환 조건:
- Timeout: 일정 시간이 지나면 CLOSED 상태로 전환.
'cs > 데이터통신' 카테고리의 다른 글
IP Datagram format (0) | 2024.11.30 |
---|---|
Network layer (1) (0) | 2024.11.30 |
Congestion control (0) | 2024.11.30 |
TCP RTT(Round Trip Time)과 3-way handshake (0) | 2024.11.30 |
Transport layer (0) | 2024.11.30 |