TCP와 IP

2022. 10. 25. 14:28web/Network

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져있다.

IP는 인터넷상에서 정보를 주고 받을 때 주소 지정을 한다고 했다. 다시 말하자면 정확한 목적지에 전송하는것이 목적인 프로토콜이다. 그런데 데이터를 주고 받을 때는 패킷이라고 하는 작은 단위로 잘게 쪼개져서 보내진다.
한번에 통으로 보내게되면 큰 데이터는 대역폭을 너무 많이 차지하기 때문에 패킷의 흐름이 원활하지 못하다.
또한 데이터 전송에 실패했을 때 다시 전송하기 위해 리소스를 너무 많이 잡아먹는다는 단점도 있다.

위와 같은 여러 이유로 인해 데이터는 패킷단위로 작게 쪼개져 보내지게 되는데
여러개로 나눠져서 보내지게 되면 받는 쪽에서는 이 여러개의 패킷이

  1. 모두 왔는지
  2. 순서에 맞게 왔는지

에 대한 확인이 필요할것이다.
IP는 목적지에 포커스를 두기 때문에 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.
이러한 것들의 신뢰성을 위해서 나온 프로토콜이 바로 TCP이다.

TCP (Transmission Control Protocol)는 전송 제어 프로토콜로 데이터의 신뢰성을 보장하는 프로토콜이다.

또한 TCP는 IP의 주소 외에도 포트를 이용하여 연결하기도 한다.


3 Way Handshake

데이터의 신뢰성을 보장하기 위해서는 먼저 서로 통신 할 수 있는 상태인지를 확인해야한다.
이러한 과정을 3 Way Handshake 이라고 하며 이런 특성 때문에 TCP를 연결형 이라고 한다.(IP는 비연결형)

  1. 상대에게 통신을 하고 싶다는 메시지를 보낸다. (SYN)
  2. 상대는 그 메시지에 대한 응답 + 나도 통신 준비가 되었다는 메시지를 보낸다. (SYN-ACK)
  3. 2번에서 받은 메시지에 응답을 보낸다. (ACK)

이 과정을 통해 통신 설정을 마치면 패킷이 모두 왔는지, 순서에 맞게 왔는지를 확인하며 데이터를 주고 받는다. 또한 패킷의 일부가 손상되면 다시 요청하기도 한다.
이런 신뢰성 덕분에 HTTP, FTP, SMTP등 TCP를 기반으로 동작한다.


이렇게 신뢰성을 보장해주지만 3 Way Handshake처럼 데이터를 보내기 위해서는 확인해야 할것들이 많다보니
전송 속도가 느리다는 단점이 있다.
그래서 TCP와 유사한 UDP라는 프로토콜도 있다.
UDP는 3 Way Handshake같은 통신 설정을 하지 않고 데이터를 보낸다. 속도는 빠르지만 데이터의 신뢰성을 보장하지 않는다. 때문에 데이터의 신뢰성 보다는 속도나 실시간성이 중요한곳에 사용된다.


IP는 주소 체계를 따르고 정확한 목적지에 전달하는것이 목적이라면
TCP는 송신자와 수신자의 연결과 데이터의 신뢰성을 보장해주는것이 목적이고
데이터를 보내기 위해서는 두 개의 프로토콜이 서로 뗄 수 없는 관계가 되는것이다.