3-way HandShake
연결하고자 하는 두 장치(클라이언트, 서버) 간의 논리적 접속을 성립하기 위해 사용하는 연결 확인 방식
TCP/IP 프로토콜을 이용해 통신하는 응용 프로그램이 정확한 전송을 보장하기 위해 데이터 전송 전에 상대 컴퓨터와 사전에 세션을 수립함
TCP 연결을 초기화 할 때 사용
- 클라이언트가 서버에 연결 요청 (SYN)
- 서버가 연결 허락 (SYN + ACK)
- 클라이언트-서버 연결 설정(ACK)
4-way HandShake
데이터 송수신이 완료되고 TCP 연결을 해제하는 과정
세션을 종료하기 위해 수행되는 절차
- 클라이언트가 서버에 종료 요청(FIN)
- 서버가 클라이언트에게 확인 메시지(ACK)를 보내고 자신의 통신이 끝날 때까지 기다림(CLOSE_WAIT)
- 추가로 전송할 패킷이 남아있으면 이어서 전송
- 서버가 최종 패킷을 전달하면 클라이언트에게 연결 종료 알림(FIN)
- 클라이언트가 서버에게 확인 알림(ACK)을 보내고 일정 시간동안 기다림(TIME_WAIT)
- 클라이언트 종료 (CLOSED)
📌 TIME_WAIT
서버에서 FIN 전송 전 보낸 데이터 패킷이 FIN 패킷보다 늦게 도착하면(지연 패킷이 발생하면) 해당 패킷은 드랍되고 데이터는 유실된다.
이를 막기 위해, 즉 데이터 무결성을 위해 클라이언트는 서버로부터 FIN을 수신해도 일정 시간동안 세션을 남겨놓고 잉여 패킷을 기다린다.
연결을 올바르게 닫힌 상태로 만들기 위해 존재
✨ 참고
'스터디 > CS' 카테고리의 다른 글
[IP주소] IP주소와 MAC주소, ARP와 RARP, IPv4와 IPv6 (0) | 2024.07.03 |
---|---|
[라우팅] 라우팅, 라우터, 라우팅 테이블 (0) | 2024.07.03 |
[TCP] TCP/IP 4계층 + MTU, MSS, PMTUD (1) | 2024.07.01 |
[네트워크] 토폴로지 (0) | 2024.06.26 |
[네트워크] 기초 용어 및 데이터 전송 방식, 네트워크 분류 (0) | 2024.06.26 |
댓글