Network에 대해 공부하면서 TCP에 대해 정리해본다.

TCP

TCP (Transmission Control Protocol) 은 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP 란 명칭으로 널리 불린다.

TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간의 일련의 옥텟 을 안정적으로, 순서대로, 에러 없이 교환 할 수 있게 한다.

TCP 는 OSI 7 계층 중 4 계층에 해당하며, 통신하고자 하는 양쪽 단말(EndPoint)이 준비 여부, 데이터의 정상 전송 여부, 데이터의 변질 여부 등을 점검한다.

이런 정보들은 TCP Header에 담겨 있으며, 신뢰성 보장과 흐름 제어, 혼잡 제어에 관리할 수 있는 요소들이 포함되어 있다.

💡 옥텟(octet) : 컴퓨팅에서 8개의 비트가 한데 모인 것으로 초기 컴퓨터들은 1바이트가 꼭 8비트만을 의미하지 않았었기 때문에 octet이 필요

Segment

Segment (세그먼트) 란 IP Header & TCP Header를 제외하고 TCP가 실을 수 있는 데이터의 크기를 말한다.

TCP 작동

TCP 는 신뢰성 있는 통신을 위해 3-way-handshake 를 사용하여 통신을 진행한다.

  • 순서
    1. 송신자가 수신자에게 ‘SYN’ 을 날려 통신이 가능한지 확인한다.
    2. 수신자가 송신자로부터 ‘SYN’ 을 받고 ‘SYN/ACK’를 송신자에게 날려 통신할 준비가 되었음을 알림.
    3. 송신자가 수신자의 ‘SYN/ACK’를 받고 ‘ACK’를 날려 전송을 시작함을 알림

위 순서는 다음과 같은 그림으로 표현 가능하다.

TCP로 이루어지는 모든 통신은 반드시 3-way handshake 를 통해 시작한다.

💡 SYN : TCP 연결 설정 과정에서 사용되는 플래그로 데이터 통신을 시작하기 전 클라이언트와 서버 간 초기화를 수행하는데 사용된다.

💡ACK: 데이터 수신 확인을 나타내기 위한 플래그, 데이터의 신뢰성을 보장하기 위해 사용된다.

TCP의 특징

TCP 의 특징은 흐름제어혼잡제어 이다.

TCP 의 흐름제어

  • 흐름 제어는 송신자와 수신자 사이의 데이터 전송 속도를 조절하여 데이터 오버플로우(Overflow)나 손실을 방지하는 기술이다.
  • 수신자는 송신자에게 자신이 처리할 수 있는 데이터 양을 알리기 위해 Window Size 라는 값과 함께 TCP Header의 ACK 패킷 에서 이 정보를 송신자에게 전달한다.
  • 송신자는 이 Window Size 정보를 바탕으로 데이터를 보냅니다. Window Size 만큼의 데이터를 보낸 후에는 수신자의 ACK 를 기다리고, ACK 를 받으면 다음 데이터를 전송한다.
  • 이를 통해 송신자와 수신자 사이에서 데이터의 효율적인 교환과 흐름 조절이 이루어진다.

💡 Window Size : 16비트 필드로 수신자가 처리할 수 있는 데이터의 양을 나타낸다. 이 값을 사용하여 송신자는 데이터의 전송 속도를 조절 가능하다.

💡Acknowledgment Number : 32비트 필드로 수신자가 다음에 기대하는 데이터의 시퀀스 번호를 나타낸다. 이 값은 수신자가 성공적으로 데이터를 받았다는 것을 송신자에게 알리는데 사용된다.

TCP의 혼잡제어

  • 혼잡 제어는 네트워크 혼잡을 관리하고 네트워크 리소스를 효율적으로 활용하기 위한 기술이다.
  • 네트워크에는 여러 경로와 장치가 있으며, 이들은 데이터 패킷을 처리하는 데 제한이 있고, 혼잡이 발생하면 네트워크 성능이 감소하거나 데이터 패킷이 손실될 가능성이 존재한다.
  • TCP의 혼잡 제어는 네트워크 혼잡을 감지하고, 혼잡이 발생하면 송신자는 데이터 전송 속도를 감소시키고, 혼잡이 해소되면 송신자는 전송 속도를 다시 증가시키는 방식으로 동작합니다. 이를 통해 혼잡을 관리하고 네트워크의 안정성을 유지한다.
  • 혼잡 제어는 TCP Header의 CWR(Congestion Window Reduced)와 ECE(ECN-Echo) 플래그 등을 사용하여 구현됩니다. 또한, 송신자는 Round-Trip Time (RTT)을 측정하여 네트워크 상태를 파악하고, 혼잡 윈도우 크기를 동적으로 조절합니다.

💡 CWR(Congestion Window Reduced) : TCP 세그먼트 헤더에 포함되는 비트로 TCP 송신자에게 네트워크 혼잡이 발생했음을 알려주는 플래그이다. 혼잡을 감지하면 송신자는 데이터의 전송속도를 줄이는 조취를 취한다.

💡ECE(ECN-Echo) : ECE는 TCP 수신자에게 혼잡 관련 정보를 전달한다. 수신자가 ECE 플래그를 받으면 이 정보는 송신자에게 돌아가고 이를 토대로 혼잡 윈도우 크기를 조절한다.

💡RTT (Round-Trip-Time) : 네트워크에서 데이터 패킷이 한번 전송되고 그 응답이 돌아오는데 걸리는 시간을 나타낸다. RTT는 연결의 지연을 측정하고 네트워크 성능을 평가하는 지표 중 하나이다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN