[네트워크] TCP 3 way handshake, 4 way handshake
** 개인 학습을 위해 작성된 글이며 모든 정보는 오류가 있을 수 있습니다.
TCP 3 way handshake 과정을 알아보기 전 클라이언트로부터 서버까지 Http Request 가 어떻게 전송되는지 알아보겠습니다.
클라이언트가 서버에 데이터를 요청하는 경우 클라이언트는 위에서 아래로 즉 Application -> Transport -> Internet -> Network Interface 계층을 거쳐 서버로 Http Request 를 전송하게 되는 것입니다. 이후 서버는 받은 데이터를 기반으로 Http Response 를 만들어 클라이언트에서 수신했던 방법과 같은 방법으로 응답을 전송합니다.
그럼 여기서 생기는 의문점.
어떻게 7계층인 Application Layer 에서 작성한 Request, Response 가 서버 혹은 클라이언트로 전송되는 것일까??
HTTP는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. 주로 TCP를 사용하고 HTTP/3부터는 UDP를 사용하며, 80번 포트를 사용한다. 1996년 버전 1.0, 그리고 1999년 1.1이 각각 발표되었다.
(위키백과)
위키백과에서 말하는것과 같이 HTTP 프로토콜은 주로 TCP 프로토콜을 기반으로 데이터를 전송합니다
https://real-man-liljay.tistory.com/121
[네트워크] TCP/IP 프로토콜이란
TCP 프로토콜과 IP 프로토콜이 같이 쓰이는 경우가 많기 때문에 TCP/IP 프로토콜이라 묶어 부르는 것이지 TCP/IP 프로토콜이라는 자체 프로토콜이 있는것이 아닙니다. 자 그러면 TCP 프로토콜과 IP 프
real-man-liljay.tistory.com
Http 프로토콜이 TCP 프로토콜을 통해 데이터를 전송하기 위해서 클라이언트의 소켓과 서버의 소켓이 연결되어야 합니다.
이 때, 연결을 하기 전 신뢰성 있는 연결을 위해 3-way handshake 과정이 선행됩니다.
3-way handshake 과정은 아래와 같습니다.
- 클라이언트가 서버에게 SYN(Synchronize) 패킷을 보냅니다. 이 패킷은 연결을 요청하는 신호 역할을 합니다.
- 서버는 SYN 패킷을 받고, 클라이언트의 요청을 수락하고 연결을 설정하겠다는 의미로 SYN-ACK(Synchronize-Acknowledgment) 패킷을 클라이언트에게 보냅니다.
- 클라이언트는 서버로부터 받은 SYN-ACK 패킷에 대해 ACK(Acknowledgment) 패킷을 보내고, 이로써 연결이 수립됩니다.
위 과정이 끝나면 클라이언트 소켓과 서버 소켓이 연결돼 정확하고 신뢰성있는 데이터 전송이 가능해집니다.
Http 프로토콜은 기본적으로 Stateless (무 상태성) 을 유지하기 때문에 데이터 전송이 끝난 후 TCP 연결이 지속되면 안됩니다. 그렇기 때문에 4-way handshake 과정을 통해서 연결을 끊어줘야합니다.
4-way handshake 과정은 아래와 같습니다.
1) 클라이언트가 연결을 종료하겠다는 FIN 패킷을 전송한다.
2) 서버는 FIN 패킷을 받고 클라이언트에게 응답 패킷 ACK패킷을 발송한다.
3) 서버의 통신이 끝나서 종료할 준비가 되었다면, 클라이언트에게 FIN패킷 전송한다.
4) 클라이언트는 서버에 확인 패킷 ACK 패킷을 전송하고 서버는 ACK 패킷을 받는다.
위 과정을 통해 서버와 클라이언트는 안전하게 세션을 종료하게됩니다.
[References]
https://www.geeksforgeeks.org/tcp-3-way-handshake-process/
TCP 3-Way Handshake Process - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
https://swiftymind.tistory.com/35
TCP 3-way Handshake vs 4-way Handshake
3-Way Handshake 서버와 클라이언트간의 TCP 연결 단계에서 신뢰성 있는 연결을 하게 된다.이 때 데이터의 정확한 전송을 보장하기 위한 세션을 성립(Establish) 단계를 위해 3-Way Handshake 방식을 사용하
swiftymind.tistory.com