/var/log/messages
4-way handshaking 본문
4-way handshaking은 TCP/IP 프로토콜을 사용하여 통신을 종료하는 과정입니다. 이 과정은 클라이언트와 서버 간의 연결을 안전하게 종료하기 위해 사용됩니다. 이 글에서는 4-way handshaking의 과정을 단계별로 설명하고, 그 중요성을 강조합니다.
서로 연결 종료를 했을 때, 실행이 되는 과정입니다.
간단하게 표현하면 close() 시스템 콜을 사용한 노드가 FIN 패킷을 전송 후, ACK를 주고받는 과정인데, 3-way와는 다른 점이 보입니다. 3-way를 ‘SYN, ACK’ 패킷 동시 송신을 했는데, 이 단계에서는 그 ‘FIN, ACK’ 패킷 동시 송신 과정이 없습니다. 이유는 서로가 연결을 안전하게 종료하기 위함입니다. 즉, 서로가 연결 종료 준비를 완로 후 종료하는 흐름입니다.
이 과정에서 문제를 자주 일으키는 요소가 있습니다. 바로, ‘CLOSE_WAIT’입니다. 그림을 자세히 보시면, ‘LAST_WAIT’은 상대방으로부터 신호를 받지 않고, ‘CLOSE_WAIT’, 즉 연결을 종료할 준비 완료가 되어야만 연결 종료를 할 대상에게 FIN 패킷을 전송합니다. 만약, 이때 정리가 되지 않으면 ‘CLOSE_WAIT’ 상태에서 ‘LAST_WAIT’으로 넘어가지 못하는 상태가 됩니다. 즉, 연결 종료가 불가능합니다. 많다, 적다의 절대적인 지표는 존재하지 않지만, 이 상태인 소켓이 많으면 무엇이 문제인지 확인할 필요는 있습니다. 어플리케이션의 코드 문제일 수도 있고, 서버 리소스의 부족일 수도 있습니다.
'SUSE' 카테고리의 다른 글
dmesg가 출력할 수 있는 메세지 종류-I/O error (2) | 2024.04.02 |
---|---|
dmesg가 출력할 수 있는 메시지 종류-Hardware Error (0) | 2024.04.02 |
3-way handshaking (0) | 2024.04.01 |
error: cluster.join: [Errno 2] No such file or directory: '/etc/corosync/corosync.conf (0) | 2024.03.18 |
xfs 파일시스템 '안전하게' 복구하기 (0) | 2024.02.05 |