IT/Web

TCP란?

코딩하는 너구리 2022. 8. 10. 09:06
반응형

https://javacoding.tistory.com/160

 

IP(Internet Protocol)

내가 인터넷을 통해 정보를 원하는 곳으로 전달하고자 할 경우, 도착지를 알아야 한다. 나의 주소와 상대의 주소는 어떻게 나타낼 수 있을까? 이때 PC마다의 주소를 지정할 수 있도록 한게 IP 체

javacoding.tistory.com

 

이전 글에서 IP 프로토콜에 대해서 살펴보았는데, 조금 더 상위 계층의 TCP에 대해 간략히 알아보자.

 

패킷이 소실되거나, 전달 순서가 바뀌거나, 불확실한 상대에게 데이터를 전달하는 등 IP 프로토콜에서 데이터 전송을 신뢰할 수 없는 여러 문제가 있었다. TCP는 이런 문제의 상당 부분을 해결해줄 수 있다는 점에서 신뢰할 수 있는 프로토콜로 많이 알려져 있다.

 

 

https://developer.mozilla.org/ko/docs/Glossary/TCP

 

TCP 전송

TCP 전송은 어떻게 이루어질까? 여러 프로그래밍 언어에서 TCP를 위해 보통 SOCKET 라이브러리를 많이 이용하는데

SOCKET을 통해 상대 서버로 데이터를 전달하는 그림을 간략히 살펴보자.

 

그림을 간략히 정리해보면

  1. 라이브러리를 통해 소켓을 만들고 메시지 데이터를 담는다.
  2. OS 계층의 TCP 단계를 거치며 TCP 정보(출발지PORT, 목적지 PORT, 전송 제어, 순서, 기타…)들을 생성하여 메시지 데이터에 추가한다.
  3. IP단계를 거치며 IP 정보(출발지IP, 목적지IP, 기타…)를 메시지 데이터에 추가한다.
  4. 생성된 IP 패킷에 Ethernet frame정보를 추가한다.
  5. 인터넷을 통해 상대 서버로 전달한다.

 

TCP 특징

TCP는 전송 제어 프로토콜(Transmission Control Protocol, TCP)이라고도 하는데 특징은 다음과 같다.

  1. 연결지향 - 3 way handshake
  • TCP는 장치들 사이에 논리적인 접속을 성립하기 위하여 3 way handshake를 사용한다. TCP 3 way Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 목적지 서버와의 연결을 진행하는 것이다.
  • 3 way handshaking을 통해 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 데이터 전달이 시작하기 전에 상대쪽이 준비가 되었는지 확인해볼 수 있다.

 

출처: https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-22편-TCP-3-WayHandshake-4-WayHandshake

 

 

2. 데이터 전달 보증

목적지에서 TCP 데이터가 도착하면 출발지쪽으로 메시지 도착을 알린다.

이 때 반환하는 것을 ACK라고 하며, TCP 헤더에 ACK 관련 정보를 넣은 TCP 세그먼트를 반환한다.

그러면 출발지쪽은 ACK가 돌아오는 것을 보고 전송한 메시지가 무사히 목적지에 도착했다는 것을 알 수 있다.

만약 ACK가 오지 않는다면 문제가 발생한 것으로 보고 재전송, 재연결 등의 처리를 할 수 있다.

TCP에서는 이렇게 ACK를 통해 데이터가 전달되었다는 것을 보증받을 수 있다.

 

 

3. 순서 보장

 

TCP 전송에서는 순서가 보장된다. TCP 세그먼트에 Sequence Number를 붙여 구현하기 때문인데,

수신쪽에서는 수신한 세그먼트를 바로 전달하지 않고, 버퍼에 가지고 있다가 Sequence Number를 사용해서 세그먼트가 순서가 맞을때까지 기다린다. 이 순서가 맞춰진 세그먼트 data chunk를 결합시킨 후 전달한다.

 

 

기본적인 TCP의 개념과 특징들에 대해서 살펴보았는데 정리해보면 IP 프로토콜에 비해 TCP는 더 신뢰적이고 안정적이었다. 

3-way handshaking 과정으로 연결지향적이었고, ACK를 이용하여 데이터가 전달되었는지 보증받을 수 있었으며, Sequence Number를 이용하여 전달하는 데이터들의 순서를 보장해주는 특징이 있었다.

 

 

 

참고 강의 : https://www.inflearn.com/course/http-웹-네트워크

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com

 

반응형