의견.png

TCP

위키원
dlensk99 (토론 | 기여)님의 2021년 2월 2일 (화) 11:30 판
이동: 둘러보기, 검색

TCP(티씨피)는 "Transmission Control Protocol"의 약자로서, 인터넷에서 사용되는 표준 통신 프로토콜이다. 한국어로 번역하면, 전송 제어 프로토콜이라는 뜻이다. 흔히 TCP와 IP를 결합하여, TCP/IP라고 사용한다. TCP와 유사한 프로토콜로 UDP가 있다. TCP가 1:1 연결을 통해 안전하게 데이터 를 교환하는 것과 달리, UDP는 1:N 방식으로 한 쪽에서 다른 쪽으로 일방적으로 데이터를 전송한다. TCP가 전화와 비슷하다면, UDP는 일방적으로 보내는 소포와 비슷하다.

개요

특징

신뢰성

신쇠성을 제공하기 위해, 패킷이 손실되거나, 중복되거나, 네트워크 계층에서 순서의 바뀜 등이 없도록 보장해야한다. 또한, TCP는 신뢰성을 실현하기 위해 적극적 수신, 통지, 재전송 체계를 사용한다. TCP 하위계층인 IP계층의 신뢰성 없는 서비스에 대해 다방면으로 신뢰성을 제공한다.[1][2]

흐름제어

상대방이 받을 수 있을 만큼만 데이터를 효율적으로 전송하는 것을 의미한다. TCP 데이터 세그먼트를 송수신하는 컴퓨터는 중앙처리장치(CPU)와 네트워크 대역폭의 차이로인해 서로 다른 데이터 속도로 작동할 수 있다. 결국 수신자가 처리할 수 있는것처럼 훨씬 더 빠른 속도로 송신자가 데이터를 보낼 가능성이 많다. TCP는 송신자가 보낸 데이터의 양을 제어하는 흐름제어 메커니즘을 구현한다. 흐름제어를 위해 슬라이딩 윈도우(Sliding Window) 방식을 사용한다. 이는 상대방이 수신 가능한 크기(Window size) 내에서 데이터를 연속해서 전송하는 방식으로 매 세그먼트(Segment) 전송 시마다 수신 확인응답(ACK)을 수신한 후, 전송하게 되면 왕복시간이 길 경우 단위 시간당 데이터 전송량이 매우 떨어지므로 효율적으로 전송하기 위해 상대방이 받을 수 있는 범위 내에서 연속적으로 전송한다.[1][3]

오류제어

데이터의 오류나 누락없이 안전한 전송을 보장하고, 오류 또는 누락이 발생했을 경우, 재전송을 수행하여 이를 보정한다.[3]

혼잡제어

네트워크의 혼잡 정도에 따라 송신자가 데이터 전송량을 제어하는 것을 의미한다. 혼잡정도에 대한 판단 기준은 데이터의 손실 발생 유무로 판단한다. 네트워크가 혼잡하다고 판단될 때 송신률을 감속한다. 또한, 전송한 데이터에 누락이 발생하면, 네트워크가 혼잡한 상태로 판단하여 전송량을 조절한다. 이에 따른 여러 장치들을 다양한 TCP 버전에서 마련하고 있다. 주요 활동기능은 느린시작, 혼잡회피, 수신 윈도우 및 혼잡 윈도우 크기 결정 등이 있다.[2][3]

다중화

한 라우터의 많은 프로세스가 TCP 통신 서비스를 동시에 사용할 수 있는 것을 뜻한다. 이들 프로세스는 같은 네트워크 인터페이스에서 통신할 수 있으므로, 네트워크 인터페이스의 IP 주소로 식별된다. 하지만 한 컴퓨터의 같은 네트워크 인터페이스를 사용하는 모든 프로세스는 공통의 IP 주소를 가지고 있다. 네트워크 인터페이스의 IP 주소외에도 더 많은 것이 필요하다. TCP는 TCP를 사용하는 응용 프로그램에 포트 번호값을 연계시킨다. 각 연결은 서로 다른 포트 쌍을 사용하므로, 이 연관성은 원격 컴퓨터의 응용 프로그램 프로세스들 사이에 여러 연결이 존재할 수 있게 한다. 응용 프로그램 프로세스에 대한 포트의 바인딩은 각 컴퓨터에서 독립적으로 처리된다.[1]

연결형 서비스

물리적으로 전용회선이 연결되어 있는 것처럼 가상의 연결통로를 설정하여 통신하는 방식이다. 응용 프로그램 프로세스는 TCP를 사용하여 데이터를 보낼 수 있는 상태가 되려면 먼저 연결을 설정해야 한다. 가상의 연결통로를 가상회선이라하는데, 가상회선방식은 물리적으로 전용회선이 연결되어 있는 것처럼 논리적으로 동작하는 방식이다. 논리적인 연결통로를 통해 데이터를 주고 받음으로써 데이터의 전송 순서를 보장해준다. 다른말로는 순서제어라고도 한다. 스트림 기반의 전송방식을 사용하고, 임의의 크기로 데이터를 나누어 연속해서 전송하는 방식을 사용한다.[1][3]

양방향성

종단 간 양 프로세스가 동시에 서로 세그먼트를 전달할 수 있다. 즉, 하나의 전송 선로에서 데이터가 동시에 양쪽 방향으로 전송될 수 있다는 것을 의미한다. 양방향 각각에 대해 송수신 버퍼 및 데이터 흐름용 순서번호를 유지한다.[1][2]

연결 과정

3-way handshake

UDP

User Datagram Protocol의 약자로, TCP와는 다르게 데이터를 패킷으로 나누고, 반대편에서 재조립하는 과정을 거치지 않으며, 수신지에서 받던, 받지 않던 상관하지않고, 데이터를 보내기만 한다.[4]

비교

각주

  1. 1.0 1.1 1.2 1.3 1.4 TCP(Transmission Control Protocol)란?〉, 《티스토리》, 2018-11-18
  2. 2.0 2.1 2.2 TCP Transmission Control Protocol〉, 《정보통신기술용어해설》
  3. 3.0 3.1 3.2 3.3 어서와 공대냥이, 〈(Network) TCP 프로토콜이란?〉, 《티스토리》
  4. 서버이야기, 〈TCP와 UDP란?〉, 《티스토리》, 2017-03-07

참고자료

같이 보기


  의견.png 이 TCP 문서는 인터넷에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.