_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

TIL | 1.27.금 [CS 기초지식 | TCP(3-Way Handshake)]
woncoding/TIL

TIL | 1.27.금 [CS 기초지식 | TCP(3-Way Handshake)]

2023. 2. 1. 14:39

TCP

- TCP 란?

Transmission Control Protocol로 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다.

TCP는 애플리케이션에게 신뢰적이고 연결지향성 서비스를 제공한다. 일반적으로 TCP와 IP는 함께 사용되며 IP는 배달을, TCP는 패킷의 추적 및 관리를 하게 됩니다.

TCP는 연결형 서비스로, 신뢰적인 전송을 보장하기에 hanshaking하고 데이터의 흐름제어와 혼잡제어를 수행합니다. 하지만 이러한 기능으로 인해 TCP의 속도는 느립니다.

 

- TCP 특징

  • 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.
  • 흐름 제어 및 혼잡 제어.
  • 높은 신뢰성을 보장한다.
  • UDP보다 속도가 느리다.
  • 전이중(Full-Duplex), 점대점(Point to Point) 방식.

- TCP | 3-Way Handshake

 

  • 3-Way Handshake란 TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정이다.
  • 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.

→ 즉, TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.

 

- TCP | 3-Way Handshake 메커니즘

TCP 통신은 PAR (Positive Acknowledgement with Re-transmission) 을 통해 신뢰적인 통신을 제공한다.

수신자가 데이터 유닛(세그먼트)이 손상된것을 확인하면(Error Detection에 사용되는 transport layer의 checksum을 활용), 해당 세그먼트를 없앤다. 그러면 sender는 positive ack이 오지 않은 데이터 유닛을 다시 보내야한다.

⇒ 이 과정에서 클라이언트와 서버 사이에서 3개의 Segment가 교환되는 것을 확인할 수 있다. 이것이 바로 3-way handshake의 기본 매커니즘이다.

  1. Client는 Server와 연결하기 위해 3-way handshake를 통해 연결 요청을 하게 됩니다.
  2. 우리가 일반적으로 생각하는 Client와 Server는 모두 서로 연결 요청을 먼저 할 수 있기 때문에, 연결 요청을 먼저 시도한 요청자를 Client로, 연결 요청을 받은 수신자를 Server로 생각한다.
  3. SYN(Synchronization) : 연결요청(Client), 세션을 설정하는데 사용되며 초기에 시퀀스 번호를 보냄
  4. ACK(Acknowledgement) : 보낸 시퀀스 번호에 TCP 계층에서의 길이 또는 양을 더한 것과 같은 값을 ACK에 포함하여 전송
    • 동기화 요청에 대한 답변 : Client의 Sequence Number+1을 하여 ACK로 돌려줍니다.

 

- TCP | 3-Way Handshake 사용 이유?

  • 서버와 클라이언트 간의 데이터가 안전하게 전달되려면 연결이 확실하게 되어있는지 확인하기 위해서
  • 또한 HTTPS에서 인증서를 보낼때도 이러한 과정을 통해서 인증하는 과정이 필요합니다.
  • (TCP 는 연결 지향적 프로토콜로 이는 내 신호를 받을 수 있는지 확인하고 전송하는 것을 의미합니다. 이때 내 신호를 받을 수 있는지 확인하는 방식으로 데이터의 전달 확인을 위해 합니다.)

 


 

- TCP | 4-Way Handshake

4-Way Handshake은 연결을 해제 (Connecntion Termination)하는 과정이다. 여기서는 FIN 플래그를 이용한다.

  • FIN (finish) : 세션을 종료시키는데 사용되며, 더 이상 보낸 데이터가 없음을 나타낸다.

 

- TCP | 4-Way Handshake 메커니즘

  • 1단계 : 클라이언트가 연결을 종료하겠다는 FIN 플래그를 서버에 전송
  • 2단계 : 서버는 FIN 플래그를 받았다는 ACK를 클라이언트에 전송
  • 3단계 : Close 준비가 다 되면 서버는 클라이언트에게 FIN 플래그를 전송
  • 4단계 : 클라이언트는 해지 준비가 다 되었다는 정상 응답 ACK를 서버에게 전송

 


[참고자료]

https://velog.io/@averycode/네트워크-TCPUDP와-3-Way-Handshake4-Way-Handshake

 

[네트워크] TCP/UDP와 3 -Way Handshake & 4 -Way Handshake

TCP / UDP / 3-Way Handshake / 4-Way Handshake

velog.io

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'woncoding > TIL' 카테고리의 다른 글

TIL | 1.31.화 [CS 기초지식 | OSI 7계층]  (1) 2023.02.01
TIL | 1.30.월 [CS 기초지식 | DB JOIN]  (0) 2023.02.01
TIL | 1.26.목 [CS 기초지식 | RDB / NoSQL]  (0) 2023.02.01
TIL | 1.25.수 [CS 기초지식 | Stack / Queue / Array / Linked List]  (0) 2023.01.26
TIL | 1.24.화 [CS 기초지식 | Semaphore / Mutex / Cookie]  (0) 2023.01.25
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 1.31.화 [CS 기초지식 | OSI 7계층]
    • TIL | 1.30.월 [CS 기초지식 | DB JOIN]
    • TIL | 1.26.목 [CS 기초지식 | RDB / NoSQL]
    • TIL | 1.25.수 [CS 기초지식 | Stack / Queue / Array / Linked List]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바