본문 바로가기
CS 지식/네트워크

[네트워크] TCP 3 way handshake & 4 way handshake

by CSEGR 2024. 8. 30.
728x90

✔️ 프로토콜 (Protocol) 

프로토콜(protocol)이란 컴퓨터 또는 전자기기 간의 원활한 통신을 위해 정한 통신 규약이다. 컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신해야한다. 예를 들면, 어떻게 상대를 찾고 어떻게 상대에게 이야기하고 어떠한 언어로 이야기를 하며 어떻게 이야기를 종료할지 등과 같은 규칙을 정해야한다. 

 

✔️ IP(Internet Protocol)

IP(Internet Protocol)란 인터넷 환경에서의 통신 규약이다. IP 주소는 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소이다. 


✔️ TCP (Transmission Control Protocol)

TCP(Transmission Control Protocol) 는 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받는 연결 지향적 프로토콜이다. 
  • TCP는 데이터를 정확하고 안정적으로 전달할 수 있어 높은 신뢰성을 보장한다. 
  • 3-way handshaking 과정을 통해 연결을 설정하고 4-way handshaking 과정을 통해 연결을 해제한다. 
    • 데이터를 전송하기 전에 3-way handshaking 과정을 통해 연결을 설정하면 통신 선로가 고정되고, 모든 데이터는 고정된 통신 선로를 통해서 전달된다.
    • 또한 클라이언트에서 데이터 전송이 끝나면 4-way handshaking 과정을 통해 데이터가 모두 전달됐는지 확인한다. 

✔️ TCP/IP 

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP전송 조절 프로토콜인 TCP를 합쳐서 부르는 말이다. 
TCP/IP를 사용하겠다는 것은 IP 주소 체계를 따르며, TCP의 특성을 활용해 송수신자의 논리적인 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 것을 의미한다. 

➕ TCP/IP 5 계층

TCP/IP 5 계층

  • 1계층 - Physical Layer 
    • 물리적인 연결과 0과 1의 나열을 아날로그 신호로 변환해서 전송한다. 
  • 2계층 - Data Link Layer 
    • 프레임화, 송수신 주소 명시, 흐름제어, 에러제어, 접근 제어 등
    • 한 노드에서 다음 노드로 프레임(데이터 덩어리)을 전달하는 역할
    • 프로토콜: Ethernet, WiFi
  • 3계층 - Network Layer 
    • 데이터를 패킷 단위로 잘개 쪼개고 송수신 주소를 명시하여 라우팅(패킷을 최종 목적지까지 경로 설정) 수행
    • 프로토콜 : IP
  • 4계층 - Transport Layer
    • 하나의 프로세스로부터 다른 프로세스로 메세지를 전달하는 역할
    • 특정 프로세스에 전달을 위해 포트의 주소를 지정하고 데이터를 분할 및 재조립한다. 
    • 프로토콜 : TCP/UDP
  • 5계층 - Application Layer
    • 사용자에게 이메일/웹 브라우저/파일 전송 등 통신을 위해 필요한 서비스를 제공하는 역할을 한다. 
    • 프로토콜 : FTP, SMTP, HTTP, DNS

✔️ TCP 3-way handshake

TCP는 데이터를 전송하기 전에 네트워크 연결을 설정하는 과정이 필요하다. 이 과정을 3-way handshake라고 한다. 

3-way handshake를 수행하기 위해서는 SYN과 ACK 플래그들이 사용된다.

3-way handshake

  1. 클라이언트가 서버에게 접속을 요청하는 SYN 플래그가 설정된 패킷을 보냄. 
  2. 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN 플래그가 설정된 패킷을 발송하고 응답을 기다림.
  3. 클라이언트는 서버로부터 ACK와 SYN 패킷을 받고, 서버로 ACK 플래그가 설정된 패킷을 발송한다. 

→ 이 3번의 통신이 완료되면 연결이 성립

 

✔️ TCP 4-way handshake

데이터 송수신이 완료되면 TCP의 연결을 해제하는 과정이 필요하다. 이 과정을 4-way handshake 라고 한다. 

4-way handshake를 수행하기 위해서는 ACK와 FIN 플래그들이 사용된다. 

4-way handshake

  1. 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그가 설정된 패킷을 보낸다. 
  2. 서버는 클라이언트에게 받은 패킷을 확인했다고 알려주기 위해 ACK 플래그가 설정된 패킷을 보낸다. 이때, 서버가 남은 데이터를 모두 보내기 위해 CLOSE_WAIT 상태가 된다. 
  3. 데이터를 모두 보냈다면 연결 종료 요청에 합의한다는 의미로 클라이언트에게 FIN 플래그가 설정된 패킷을 보낸다. 
  4. 클라이언트는 확인했다는 의미로 ACK 플래그가 설정된 패킷을 보낸다. 서버는 ACK 플래그가 설정된 패킷을 받은 이후 소켓을 닫음

→ 4번의 통신이 완료되면 연결이 해제된다. 

 


# 출처 

https://narakit.tistory.com/1

https://steady-coding.tistory.com/505

728x90