[네트워크] TCP/IP의 개념

1. TCP/IP 란?

패킷 전송방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서대로 받는 것을 보장하지 않지만, TCP는 IP 위에서 동작하는 프로토콜로 데이터의 전달을 보증하고 보낸 순서대로 받게 해 준다. IP가 패킷 간의 관계를 이해하지 못하고 목적지를 찾아가는 데만 집중한다면 TCP는 Endpoint 간 통신할 준비가 되어있는지, 데이터 전송이 제대로 되었는지, 데이터가 변질되지 않은지, 데이터 유실은 없는지 등을 점검한다.

 

즉 IP주소 체계를 따르고 IP Routing을 통해 목적지에 도달하여 TCP의 특성을 활용하여 송신자와 수신자의 논리적 연결을 생성, 신뢰성 유지한다.

(HTTP, FTP, SFTP 등 TCP를 기반으로 하는 많은 어플리케이션 프로토콜들이 IP 위에서 동작하기 때문에 묶어서 TCP/IP로 부르기도 한다.)

1-1. IP (Internet Protocol)

클라이언트와 서버는 각 IP주소를 가지고 지정한 IP 주소에 패킷 단위로 데이터를 전송한다. 전송된 데이터는 인터넷 망 내의 노드를 거쳐 목적지에 도달하게 된다. IP프로토콜만으로 통신할 경우 한계가 존재한다.

 

비연결성 - IP프로토콜만으로는 클라이언트에서 서버가 패킷을 받을 수 있는 상황인지 확인할 수 없다. 따라서 수신 서버가 없거나 서비스가 불가능하더라도 패킷을 전송한다.

비신뢰성 -
인터넷 망 내 노드에 문제가 생기는 경우 패킷이 손실 없이 안전하게 도달하지 못할 수 있거나 전송순서가 바뀔 수 있다.


또한, 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 IP 만으로는 구분할 수 없다.

 

1-2. TCP (Transmission Control Protocol)

IP의 핵심 프로토콜 중 하나로 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간의 일련의 옥텟을

데이터 패킷에 일련의 번호를 부여함으로써 안정적으로 순서대로 에러 없이 교환하도록 한다. Transport Layer에 위치하며 네트워크 정보전달을 통제하는 프로토콜이다. Endpoint 간 연결을 생성하고 데이터를 얼마나 보냈는지, 받았는지가 TCP 헤더에 담겨있으며 흐름제어, 혼잡제어에 관여할 수 있는 다양한 요소들이 포함되어 있다. TCP는 3-way handshake를 통해 통신을 시도한다.

2023.10.18 - [네트워크] - [네트워크] 소켓(SOCEKT) 통신, 3-way handshake의 개념

 

[네트워크] 소켓(SOCEKT) 통신, 3-way handshake의 개념

1. 소켓(Socket)이란 소켓은 떨어져 있는 두 호스트를 연결해 주는 도구로써 인터페이스 역할을 한다. TCP/IP 기반 네트워크 통신에서 데이터 송수신의 앤드포인트이며 앤드포인트는 IP, Port조합으로

junhkang.tistory.com

TCP의 특징

신뢰성보장 & 흐름제어

분할된 데이터의 고유번호를 통해 수신자가 어디까지 받았는지 지속적으로 확인가능하며, 이를 통해 데이터의 손실 없이 전송이 가능하다. TCP Header 내의 window size를 사용해 한번에 송/수신할 수 있는 데이터 양을 정하며 수신 측에서 받을 수 있는 양을 기준으로 Window size가 정해진다(3-hand shake 간 결정됨). 송수신시 계속 확인 응답을 받기에 신뢰도가 높지만, 데이터 용량이 증가하여 수신속도가 떨어진다.

혼잡제어

Endpoint 간의 흐름제어 외에 네트워크망의 혼잡제어를 한다. 송신자는 연결초기에 데이터 송출량을 낮게 잡고 보내면서 수신자의 수신을 확인하며 데이터 송출량을 조금씩 늘린다. 이를 통해 네트워크에 가장 적합한 데이터 송출량을 확인할 수 있으며 이를 'Slow Start'라고 한다.

멀티캐스트 불가능

1:1 전송방식으로 유니캐스트성이다. 단일 송신자와 단일수신자 간의 경로 연결이 설정된다.