TCP를 공부하다보면 3-way handshake 또는 4-way handshake라는 용어를 많이 접하게 된다. TCP는 연결 지향적인 특성을 가지고 있으며, 통신하고자 하는 상대방과 세션을 연결 후 데이터를 보내게 된다. TCP 세션을 수립할때 3-way handshake 과정을 거치며, 반대로 종료할때는 4-way handshake 과정을 거친다.
3-Way Handshake
1. 클라이언트가 서버와 세션 연결을 위해 SYN 신호의 패킷을 전송한다.
2. SYN 패킷을 받은 서버는 자신의 SYN와 ACK라는 응답 신호의 패킷을 다시 클라이언트로 전송한다. 이때 ACK는 상대방의 시퀀스 넘버에 +1을 하여 전송한다.
3. 마지막으로 클라이언트가 ACK 패킷을 보내면 서버와의 세션이 성립된다.(ESTABLISHED)
이해를 돕기위해 실습을 해보았다.
그림-2는 와이어샤크로 3-way handshake 과정을 캡처한 사진이다. 클라이언트(192.168.0112)가 서버(192.168.0.3)로 SYN 패킷을 보낸다. 이때 클라이언트의 시퀀스 넘버 0이라는 정보를 같이보냄. 패킷을 받은 서버도 자신의 시퀀스 넘버와 함께 ACK(클라이언트 seq+1)를 보낸다. 마지막으로 클라이언트는 ACK(서버의 seq+1) 보내면서 세션 연결을 한다.
4-Way Handshake
1. 클라이언트가 서버에게 FIN 신호의 패킷을 보내고 FIN_WAIT_1 상태가 된다.
2. FIN 패킷을 받은 서버는 ACK 패킷을 보내고 CLOSE_WAIT 상태가 된다.
3. 클라이언트는 ACK 패킷을 받으면 FIN_WAIT_2 상태로 변경하고 FIN 패킷을 기다린다.
4. 서버는 FIN 패킷을 보내고 LAST_ACK 상태가 되고, FIN을 받은 클라이언트는 ACK를 서버로 보낸 후 TIME_WAIT 상태로 변경하여 잉여 패킷을 기다린다.
5. 클라이언트에게 ACK를 받은 서버는 CLOSED 상태로 변경하고 연결을 종료한다.
'공부 > 네트워크' 카테고리의 다른 글
스니핑(Sniffing), 스누핑(Snooping), 스푸핑(Spoofing) (0) | 2020.06.14 |
---|---|
TCP/UDP (0) | 2020.06.05 |
OSI 7계층 장비(리피터, 허브, 브리지, 스위치, 라우터) (0) | 2020.06.03 |
IDS / IPS (0) | 2020.05.23 |
방화벽(Firewall) / 웹 방화벽(Web Application Firewall) (0) | 2020.05.14 |