-
(2) 3 way handshake - 연결CS 지식/○ Network 2021. 7. 22. 22:48
> 내글 참조 - 3way
https://korshika.tistory.com/134
1. 3 way handshake 란?
1-1) 필요성
오늘날의 서버 - 클라이언트 연결은 논리적인 연결방식(물리적으로 direct하게 직접연결과 대비)
이를 검증하기 위한 절차가 있어야 하고 이를 위해 필요함
1-2) 과정
추가 참조 : https://mr-zero.tistory.com/36
[복잡한 설명 ▼]
더보기1) 그림 과정
2) 위의 과정
위 그림에서 connection set-up은 흔히 3Way-Handshacking 이라 부르는 과정으로
client와 server간 세션을 성립하는 단계이다.
1. client는 server로 부터 원하는 서비스(ex. 80 HTTP)의 포트번호에
client의 ISN 값을 sequence number에 설정하고 SYN 패킷을 보낸다.
2. server는 자신의 ISN을 sequence number에 설정하여 SYN패킷과 순서1에 대한 응답으로
ISN(client)+1 값을 ackno-wledge number에 설정하여 전송한다.
3. client는 순서2의 SYN에 대한 응답으로 ISN(server)+1 값으로 acknowledge number를 설정하여 전송한다.
이때 seq-uence number의 값은 순서1의 ISN(client)+1로 설정되는데
이는 순서2의 acknowledge number와 동일하다.
[x, y값이 한번씩 바뀌면서 syn / ack 자리에 포함되어서 전송]
- 클라이언트가 서버에게 "SYN(seq=x) 패킷" 전송
- 서버가 (1)을 받은 후
클라이언트에게 받았다는 신호 "ACK(seq=y)"
클라이언트에게 "SYN(seq=x+1) 패킷" 전송 - 클라이언트는 (2)의 패킷(+ACK) 을 받고 신호 "ACK(seq=y+1)"을 전송
2. 3way handshake 종료
> Server connection timeout이랑은 다른듯
2-1) 필요성
연결 성립 후, 모든 통신이 끝났을 때 해제하는 scope에 대한 것
2-2) 과정
- 클라이언트는 서버에게 "FIN 플래그(연결 종료)" 전송
- 서버는 클라이언트에게
2-1) "ACK" 전송 + 나머지 모든 데이터 전송 위해 timeout상태
2-2) "FIN 플래그(연결 종료)" 전송 ← 2-1) 과정에서 데이터를 모두 내보낸 경우 - 클라이언트는 서버가 2-1) 메세지 보낸 경우
3-1) 2-2)를 받을 때 까지 Time_wait 으로 기다린다
3-2) Time_wait 이후 "ACK" 전송 + 클라이언트 socket 닫음 - 서버가 클라이언트 3-2)의 "ACK" 받은 후 socket을 닫음
- 종료
참조
반응형'CS 지식 > ○ Network' 카테고리의 다른 글
(6) HTTP / HTTPS (0) 2021.07.27 (5) 대칭키 & 공개키(비대칭키) & SSL (0) 2021.07.27 (4) UDP & DNS (0) 2021.07.25 (3) TCP/IP (흐름제어 & 혼잡제어) (0) 2021.07.23 (1) OSI 7 계층 (0) 2021.07.22