저번시간에 이어 이번시간에는 4 way handshake를 알아 보겠습니다.
3 way handshak는 논리적인 연결을 하는 과정이였다면 4way handshake는 논리적인 연결을 해제하는 과정입니다.
근데 한가진 궁금한 점은 그냥 연결을 바로 끊지않고 연결 해제 과정을 거치는 걸까요 ?
TCP는 신뢰성인는 데이터 전송을 보장합니다. 내가 아직 필요한 데이터를 다 받지도 않았는데, 연결을 끊어 버리면 안되죠. "나 필요한 데이터 다 줬으니깐 연결 끊을게~" , "어...나 아직 데이터 못받았는데..." 이런 상황을 방지하기 위함이죠.
그래서 "너 데이터 다 받았니? 종료한다?" , "어~ 다 받았어 종료해~"와 같은 방법으로 종료를 해야 합니다.
이번 포스팅에도 마찬가지로 패킷 분석툴로 와이어 샤크하고, http://dalberghetti.com/를 기준으로 설명 하겠습니다.
일단 4 way handshake전에 무슨 일이 있었는지 알아 봅시다.
http://dalberghetti.com/에 접속하고 447 -> 454 -> 456순으로 3 way handshake과정이 완료됩니다.
GET /images/netlab-labelled-pod1.jpg 요청함에 따라 저희가 열어둔 60933포트로 데이터가 들어오네요
그렇게 저희가 원하는 이미지 파일을 성공적으로 다 받았습니다.
이제 데이터를 다 받았으니깐 연결을 해제해야 겠네요.
그림에서는 FIN메시지를 클라이언트에서 먼저 보냈지만 서버가 먼저 보내는 경우도 있습니다.
1. FIN + ACK
FIN flag : 1
ACK flag : 1
서버에서 데이터를 모두 다 보냈으며, 연결종료를 요청함
2. FIN + ACK
FIN flag : 1
ACK flag : 1
클라이언트는 모든 데이터를 다 받았으며, 더이상 받을 데이터가 없으므로 바로 FIN 메시지를 전송함. 만약 데이터를 모두 받지 못해 추가적으로 데이터를 더 받아야 한다면 ACK 메시지를 보내지만 위의 예시에서는 ACK와 FIN을 동시에 보냄.
3. ACK
ACK flag : 1
FIN 플래그를 정산적으로 수신했음을 알리고, 연결 종료.
'computer science > 네트워크' 카테고리의 다른 글
[네트워크] 서브넷 마스크와 서브네팅 (0) | 2020.01.31 |
---|---|
[네트워크] IPv4와 IPv6 (0) | 2020.01.30 |
[네트워크] HTTP (0) | 2020.01.29 |
[네트워크] OSI 7 Layer (0) | 2020.01.09 |
[네트워크] 3 way handshake (0) | 2019.12.17 |