[network] TCP vs TCP/IP
네트워크 하면 많은 사람들은 TCP 혹은 TCP/IP를 떠올리게 됩니다. 근데... 두 개는 같은걸까요? 정답은 당연히 둘은 같지 않습니다. TCP 네트워크에 대해서 알아보기 전에 두 개의 차이점을 먼저 간단하게 짚고 넘어가겠습니다. 이러한 네트워크에 대해서 자세한 히스토리는 따로 포스팅을 올리도록 하겠습니다.
TCP
TCP는 Transmission Control Protocol의 약자로 전송 제어 프로토콜(전송 제어 규약)이라고 불립니다. 이 TCP는 근거리 통신망이나 인트라넷이나 인터넷에 연결된 장비(컴퓨터)의 프로그램간에 데이터를 안정적으로, 순차적으로 에러없이 전송하게 해줍니다. 이러한 TCP는 네트워크 Transport layer에 속합니다. 즉, TCP는 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜입니다.
TCP는 위에서 말한 것 처럼 데이터를 안정적이고 순차적이며 에러 없이 전송하는 것이 목표입니다. 이를 위하여 TCP 세그먼트를 활용합니다. TCP 세그먼트는 데이터를 chunk단위로 나눈뒤에 TCP header를 붙여서 만듭니다. 이렇게 만들어진 TCP 세그먼트는 패킷화하여 주고받게 됩니다. 자세한 TCP header는 다음과 같은 정보가 포함됩니다.
- Source Port (16 bits)
- Destination Port (16 bits)
- Sequence Number (32 bits)
- Acknowledgment Number (32 bits)
- Data Offset (4 bits)
- Reserved (3 bits)
- Flags(Control Bits) (9 bits)
- Window Size (16 bits)
- Checksum (16 bits)
- Urgent Pointer (16 bits)
- Options (가변 32의 배수)
- Padding
위와같은 정보가 데이터와 합쳐서 TCP 세그먼트가 됩니다.
TCP의 작동은 다음과 같은 순서로 동작합니다.
- Client와 Server간의 연결 생성
- 자료 전송
- 연결 종료
TCP/IP
TCP/IP는 Internet Protocol Suite라고도 불립니다. 이는 인터넷에서 컴퓨터의 프로그램 간에 서로 정보를 주고받는 통신 규약의 모음입니다. 이를 TCP/IP라고 불리는 이유는 이 통신 규약 모음 중 TCP와 IP가 가장 많이 사용되기 때문입니다. TCP/IP는 패킷 통신 방식인 인터넷 프로토콜인 IP와 전송 제어 프로토콜인 TCP로 구성되어있습니다. IP는 패킷 전달 여부를 보증하지 않으며 패킷을 전송하는 순서와 받는 순서가 정해져있지 않습니다. 반면 TCP는 기본적으로 패킷의 전달 순서와 함께 데이터 전달을 보장합니다. 이러한 TCP가 IP위에 올라가서 인터넷에서 데이터의 전송을 보장하고 그 순서 역시 보장해줍니다. HTTP, FTP, SMTP 등 이러한 TPC를 기반으로 하는 여러 어플리케이션 프로토콜이 IP위에서 동작하기 때문에 TCP/IP라고 불립니다.
인터넷 프로토콜 스텍은 다음과 같이 총 4계 계층 구조를 지닙니다.
- Network Access Layer
- 이터넷, wifi 등이 속합니다. Link Layer라도고 불리며 호스트가 물리적으로 연결되는 링크상에서만 운용되는 프로토콜입니다.
- Internet Layer
- 앞서 설명한 인터넷 프로토콜 IP가 여기 계층에 속합니다. 네트워크를 통해서 호스트로 장비에서 시작된 패킷을 IP주소로 지정된 목적지에 정송하기 위해 사용합니다.
- Transport Layer
- TCP가 해당 계층에 속합니다. TCP와 비교되는 UDP역시 이 계층에 속합니다. 해당 계층에서는 패킷에 대한 신뢰성, 데이터 스트림 등의 기능을 지원하여 인터넷 상에서 안정적인 통신이 가능하게 해줍니다.
- Application Layer
- HTTP, SMTP, FTP, DNS 등 수 많은 application 프로토콜이 포함됩니다. 우리가 네트워크를 사용할 때 가장 직접적으로 사용하게 되는 프로토콜입니다.
위와같은 TCP/IP는 우리가 흔히 알고있는 OSI model(OSI 7 Lyaers)과 비교됩니다. OSI model은 국제표준화기구에서 만든 모델입니다. 컴퓨터 네트워크 프로토콜을 계층으로 설명한 것 입니다.
TCP/IP의 두 번째 layer와 OSI의 세 번째 layer 그리고 TCP/IP의 세 번째 layer와 OSI의 네 번째 layer는 서로 동일합니다. 나머지는 OSI가 좀 더 세분화 되어있으나 전체적인 동작 layer 및 역할을 동일합니다.