3-way-handshake(연결 성립)
- 클라이언트는 서버에 접속 요청하는 SYN(A)를 보낸다.
- 서버는 클라이언트 요청인 SYN(A)를 받고 클라이언트의 요청을 수락한다는 ACK(A+1)와 SYN(B)를 보낸다.
- 클라이언트는 서버의 수락 응답인 ACK(B+1)을 보내면 연결이 된다 .(ESTABLISHED)
3 way handshake 요약
- A : 내 목소리 들려?(SYN)
- B : 응 들려(SYN+1) , 너도 내 목소리 들려?(ACK)
- A : 응 들려(ACK+1)
4-way-handshake(연결 해제)
- 클라이언트가 연결을 종료하겠다는 FIN 플래그를 보낸다.
- 서버는 칼라이언트의 FIN요청을 받고 확인메시지인 ACK를 보낸다.
- 그리고 나서 데이터를 모두 보낼 때 까지 잠깐 TIME OUT이 된다.
- 데이터를 모두 보내고 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.
- 클라이언트는 FIN메시지를 확인했다는 ACK를 보낸다.
- 클라이언트의 ACK메시지를 받은 서버는 소켓 연결을 CLOSE 한다.
※ 약어
- SYN(Synchronize Sequence Number)
- ACK(Acknowlegement)
TCP Header
- TCP Header에는 Code bit( Flag Bit)이라는 부분이 존재한다.
- 이 부분은 총 6bit로 이루어져 있다.
- URG
- ACK
- PSH
- RST
- SYN
- FIN
- SYN 패킷의 경우 { 1 2 3 4 5 6 } 5번째가 1인 000010 이되고 ACK 경우 010000 이 된다.
왜 3 Way 인가
- 클라이언트와 서버가 통신을 하기 전에 서로가 잘 전달하는지 체크하는 셈이다.
- TCP Connection은 양방향성 이다.
- 클라이언트가 서버에게 존재를 알리고 서버 또한 클라이언트에게 존재를 알려야 두 쪽에서 통신이 가능하다.
- 그래서 2-Way로는 부족하다.
왜 랜덤한 SequectNumber로 보내는가.
- Connection을 맺을 때 사용하는 포트는 유한 범위 내에서 사용하고 시간이 지남에 따라 재사용된다.
- 그러므로 두 통신 호스트가 사용하는 포트 번호 쌍을 사용하는 가능성이 존재한다.
- 서버 측에서 패킷을 보고 SYN 패킷을 구분하게 되는데 난수가 아닌 순차적인 number로 전송되면 이전의 Conection으로 부터 오는 패킷으로 인식할 수 있다.
- 이러한 문제가 발생할 가능성을 줄이기 위해 난수로 ISN을 설정하는 것이다.
'CS > Network' 카테고리의 다른 글
DNS Round Robin (0) | 2021.05.14 |
---|---|
HTTP와 HTTPS (0) | 2021.05.11 |
TCP 와 UDP (0) | 2021.05.05 |
HTTP의 GET과 POST (0) | 2021.05.03 |
[CS]_Network 핵심 요약 정리 (0) | 2021.04.10 |
댓글