TCP 프로토콜

박근수·2024년 1월 30일

TCP (Transmission Control Protocol)

OSI 7 Layer 중 4계층인 전송계층 에 속하는 중요 프로토콜로 네트워크 망에 연결된 컴퓨터의 프로그램 간 데이터를 순서대로 교환할 수 있게 해주는 역할

특징

연결 지향 프로토콜(Connection Oriented Protocol)

  • 물리적으로 전용회선이 연결되어 있는 것처럼 가상의 연결 통로를 설정하여 통신하는 방식
    • 가상회선 방식 : 물리적으로 전용회선이 연결되어 있는 것처럼 논리적으로 동작하는 방식
  • 논리적인 연결통로를 통해 데이터를 주고 받음으로써 데이터의 전송 순서를 보장해줌
  • 스트림 기반의 전송방식 사용

신뢰할 수 있는 프로토콜(Reliable Protocol)

흐름제어 (Flow Control)
  • 상대방이 받을 수 있을 만큼만 데이터를 효율적으로 전송
  • 흐름제어를 위해 슬라이딩 윈도우(Sliding Window) 방식 사용. 이는 상대방이 수신 가능한 크기내에서 데이터를 연속해서 전송하는 방식으로 매 세그먼트 전송 시마다 수신 확인응답을 전송하게 되면 왕복시간이 길 경우 단위 시간당 데이터 전송량이 매우 떨어지므로 효율적으로 전송하기 위해 상대방이 받을 수 있는 범위 내에서 연속적으로 전송
슬라이딩 윈도우(Sliding Window)
  • 매 번 ACK를 기다리지 않고, 여러 패킷을 연속해서 송신하기 위해
  • 각 컴퓨터의 윈도우 사이즈를 확인하고, 윈도우 사이즈만큼 ACK없이 연속해서 송신
오류 제어
  • 데이터의 오류나 누락없이 안전한 전송을 보장
  • 오류 또는 누락 발생 시 재전송을 수행하여 이를 보정
혼잡 제어 (Congestion Control)
  • 네트워크의 혼잡 정도에 따라 송신자가 데이터 전송량을 제어하는 것을 말함
  • 혼잡 정도에 대한 판단 기준은 데이터의 손실 발생 유무로 판단. 전송한 데이터에 누락이 발생하여 네트워크가 혼잡한 상태로 판단하여 전송량을 조절

TCP 프로토콜 구조

TCP 연결 방식

3-way 핸드쉐이크(handshake) : TCP 통신을 위한 연결 설정 과정

  • 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
  • 양쪽 모두 상대편에 대한 초기 순차일련번호를 얻을 수 있다.

과정

  1. A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태가 되는 것이다.
  2. B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.
  3. A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.

4-way handshake : TCP 연결 해제 과정

profile
개발블로그

0개의 댓글