3way handshake - 연결 성립
TCP의 정확한 전송을 보장하기 위해서, 통신하기 전 논리접인 접속을 성립하기 위해 3way handshake 과정을 진행한다.
1. 과정
가. 클라이언트가 서버에게 SYN 패킷을 보낸다.
나. 서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN패킷을 보낸다.
다. 클라이언트는 서버의 응답으로 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)를 서버로 다시 보낸다.
이렇게 3번의 통신이 완료되면 연결이 성립된다. 3번 통신을 하여 3way handshake 라고 한다.
4way handshake - 연결 해제
연결이 성립된 후, 모든 통신이 끝나고 해제를 해야할 때 사용된다.
1. 과정
가. 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
나. 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다.
다. 서버에서 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
라. 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. 동시에 TIME_WAIT를 통해 아직 서버로부터 받지 못한 데이터가 있을 경우를 대비하여 기다린다.
마. 서버는 ACK를 받은 이후 소켓을 닫는다. (Closed)
바. TIME_WAIT 시간이 끝나면 클라이언트도 닫는다. (Closed)
이렇게 4번의 통신이 완료되면 서버와 클라이언트의 연결이 해제된다.
'기타' 카테고리의 다른 글
HTTP & HTTPS (0) | 2020.01.04 |
---|---|
대칭키 & 공개키 & SSL (0) | 2020.01.04 |
XSS, CSRF (0) | 2020.01.04 |
CORS(Cross-origin resource sharing) (0) | 2020.01.03 |
데브옵스(DevOps) (0) | 2020.01.02 |