1. 연결 성립 : 3 way handshake
TCP는 정확한 전송을 보장해야하므로 통신하기 앞서, 논리적 접속을 성립해야 한다.
이를 위해 3번의 통신이 완료되면 연결이 성립하는 방식
- 클라이언트가 서버에 SYN 패킷을 보낸다. (seq = x)
- 서버가 SYN(x) 을 받고 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보낸다. (seq=y, ACK(x+1))
- 클라이언트는 서버의 응답을 받고 ACK(y+1)을 서버로 보낸다
2. 연결 해제 : 4 way handshake
연결 성립 후 모든 통신이 끝났다면 해제해야 한다.
- 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
- 서버는 FIN을 받고 확인했다는 ACK를 클라이언트에게 보낸다. → 이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다.
- 서버가 데이터를 모두 보냈다면 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
- 클라이언트는 FIN을 받고 확인했다는 ACK을 서버에 보낸다. → 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT를 통해 기다린다.
- 서버는 ACK을 받은 뒤 소켓을 닫고
- 클라이언트 TIME_WAIT 시간이 끝나면 클라이언트도 닫는다
'기초 CS 정리' 카테고리의 다른 글
대칭키와 공개키 (0) | 2023.02.07 |
---|---|
TCP/IP의 흐름제어, 혼합제어 (1) | 2023.02.05 |
OSI 7계층 (0) | 2023.02.04 |
함수형 프로그래밍과 객체지향 프로그래밍 (0) | 2023.02.03 |
파일 시스템 (0) | 2023.02.02 |