Tcp/ip 사용 이유 - tcp/ip sayong iyu

요즘에는 온라인으로 클릭 몇 번만 하면 원활하게 소통할 수 있지만, 예전에는 우편을 자주 활용했습니다. 직접 편지를 써서 우편으로 보내던 시절이 기억나시나요? 우편 서비스를 이용하고 싶으면 정해진 규칙에 따라서 직접 봉투에 이름과 주소를 써야 했습니다. 봉투에 우표를 붙여서 빨간색 우편함에 편지를 넣으면, 우체부가 우편을 처리할 때 더 많은 규칙이 적용되고는 했습니다.

인터넷상에는 우표가 없기는 하지만, 엄연히 일정한 규칙이 존재합니다. 여러분이 이용하는 앱과 기기는 정보를 전송하고 수신하기 위해 이러한 규칙을 따라야 합니다. 이러한 규칙을 TCP/IP 모델이라고 부릅니다. 이 글을 자세히 읽어보면서 TCP/IP 프로토콜 정의, TCP/IP 계층, TCP/IP 프로토콜 종류, TCP/ IP 프로토콜 스택, VPN을 이용한 데이터 보호 방법까지 자세히 알아보세요.

트래픽을 암호화하고 프라이버시와 보안을 유지하세요.

TCP/IP란 무엇인가요?

TCP/IP는 네트워크 프로토콜 스위트로, 온라인상의 안전하고 효율적인 데이터 전송의 필수 요건을 정의합니다.

TCP/IP 정의를 찾는 것부터 시작해보겠습니다. TCP/IP 모델은 두 개의 기기 간에 데이터를 전송하는 것을 담당하고 있습니다. 여기서 왜 고작 2대의 기기 사이에서만 데이터 전송이 이루어질까요? 인터넷 데이터가 전송되는 방식은 라디오와는 다릅니다. 수백 대의 컴퓨터 사이에서 활발하게 데이터가 공유되고 있는 것처럼 보여도, 사실은 모든 데이터 교환에는 2대의 기기만 개입됩니다.

TCP/IP는 1983년에 표준 방식으로 정해졌습니다. 당시 TCP/IP가 NCP를 대체하면서, 이 과정에서 오는날 우리가 이용하는 인터넷이 탄생했습니다. TCP/IP는 4계층 또는 5계층으로 구성되어, OSI 7계층 모델을 대체합니다. 이러한 계층은 데이터 전송의 각 단계에서 앱과 기기의 작업을 설명해줍니다.

TCP와 IP의 차이점은 무엇인가요?

TCP/IP는 수많은 컴퓨터 네트워크 프로토콜을 포함합니다. TCP와 IP는 이러한 프로토콜 중 하나일 뿐입니다.

TCP는 무엇의 약자일까요? TCP는 전송 제어 프로토콜 (Transmission Control Protocol)의 약자이며 한 기기에서 다른 기기로 데이터 전송하는 것을 담당합니다. IP는 인터넷 프로토콜(Internet Protocol)의 약자이며 이 프로토콜은 데이터의 조각을 최대한 빨리 대상 IP 주소로 보내는 역할을 표시합니다.

데이터 전송의 과정에서 TCP와 IP 각각 담당하는 작업이 있지만, 결국에는 같은 결과를 목표로 하기 때문에 한 명칭으로 알려지기도 합니다.

TCP/IP: 4계층

TCP/IP는 통신 규칙의 모음이며, 프로토콜 스위트라고 부르기도 합니다. TCP/IP의 4계층은 이러한 규칙이나 프로토콜이 적용되는 특정한 조건을 의미합니다. 이 시스템은 TCP/IP 모델이 다양한 기기와 앱에서 효율적으로 ‘통신’하고 데이터를 전송할 수 있도록 하는 방식입니다.

응용 계층

응용 계층 (Application Layer) 프로토콜은 TCP/IP 프로토콜 (TCP IP protocol)의 범위에 포함되어 있습니다. 이러한 프로토콜은 앱에 구축되기 때문에 사용자가 상호작용하기 가장 쉬운 계층입니다. 응용 계층은 사용자 (사람 또는 소프트웨어)가 네트워크에 접근할 수 있도록 합니다. 게다가, 사용자 인터페이스를 제공할 뿐만 아니라 이메일, 원격 파일 접근 및 전송, 공유 데이터베이스 관리 등의 서비스를 제공합니다.

메일 프로그램에서는 인터넷에서 전자우편을 보낼 때 이용하게 되는 표준 통신 규약인 SMPT (Simple Mail Transfer Protocol)를, 인터넷 브라우저는 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약인 HTTP (Hypertext Transfer Protocol) 등을 이용합니다. 이외에도 흔히 이용되는 응용 계층 프로토콜로는 파일 전송 규약 (File Transfer Protocol: FTP), 동적 호스트 설정 통신 규약 (Dynamic host Configuration protocol: DHCP), 간이 망 관리 프로토콜(Simple Network Management Protocol: SNMP) 등이 있습니다.

전송 계층

‘전송 계층 (Transport Layer)’이라는 이름에서 눈치채셨겠지만, 전송 계층은 전송을 담당하는 계층입니다. 전송 계층에는 TCP뿐만 아니라 사용자 데이터그램 통신 규약 (User Datagram Protocol: UDP)도 있습니다. UDP는 TCP보다 단순하며 다른 데이터에 비해 안전하게 보호되어야 할 필요가 없는 실시간 응용 프로그램에서 흔히 이용됩니다. UDP는 TCP보다 신뢰도가 낮고 오류 검출, 흐름 제어 등의 기능을 제공하지 않아 패킷을 빠르게 전송하는 응용 계층에서 이용되고 있습니다.

TCP는 두 네트워크 사이에 연결을 형성하고 효율적인 작업을 위해 데이터를 작은 패킷으로 나눠서 데이터를 전송합니다. TCP는 연결형 서비스이지만, UDP는 비연결형 서비스입니다. TCP는 신뢰도가 높지만 속도가 느리고, 이에 비해서 UDP는 신뢰도가 낮지만 속도가 빠릅니다. TCP의 패킷 교환 방식은 가상 회선 방식인 반면, 반면에 UDP는 데이터그램 방식을 따르고 있습니다. TCP에서는 전송 순서를 보장하지만 UDP의 경우 전송 순서가 바뀔 수 있습니다.

인터넷 계층

인터넷 계층 (Internet Layer) 프로토콜에는 IP뿐만 아니라 주소 변환 규약 (Address Resolution Protocol: ARP), 인터넷 그룹 관리 프로토콜 (Internet Group Management Protocol: IGMP), 인터넷 제어 메시지 프로토콜 (Internet Control Message Protocol: ICMP)도 있습니다. 인터넷 계층은 네트워크 간 데이터 패킷의 전송을 관리합니다.

여기서 ARP는 네트워크 계층 주소와 링크 계층 주소 사이의 변환을 담당하는 프로토콜이며, IGMP는 그룹 멤버십을 구성하거나, 그룹 관리를 위한 프로토콜이며, ICMP는 인터넷 통신 서비스 환경에서 오류에 대한 알림과 관련된 메시지를 전달하는 목적의 프로토콜입니다.

데이터 링크 계층

데이터 링크 계층 (Datalink Layer)은 데이터 전송의 최하위 계층으로, 네트워크 인터페이스 계층(Network Interface Layer)이라고도 부릅니다. 이 계층에서 하는 일은 데이터가 원하는 IP 주소 (즉, 공유기)에 도달할 뿐만 아니라 해당 네트워크 내의 연결된 기기에 연결되어 있는지 확인하는 역할입니다. 데이터 링크 계층은 원하는 기기의 MAC 주소를 확인하고 이더넷 케이블 및 와이파이를 통한 데이터 전송을 관리하는 등의 작업을 담당합니다.

TCP IP 주소

IP 주소의 유형은 정말 다양합니다. 예를 들면, IP 주소에는 공개 IP 주소와 비공개 IP 주소, 정적 IP 주소와 동적 IP 주소가 있습니다. 그러면 TCP/IP는 모든 유형의 IP 주소에서 작동하나요? 그럼요! 여러분이 이용하는 기기에서 어떤 인터넷 프로토콜을 사용하고 있는 것과 상관없이, TCP/IP 데이터 전송 절차의 일환으로 작동할 것입니다.

TCP/IP 주소를 알아보는 가장 쉬운 방법은 단연코 구글 검색창에 “What’s my IP address”를 검색해보는 방법입니다. 하지만, 여러분이 이용하는 네트워크 내 특정 기기의 IP 주소를 알아내려고 하는 경우에는 이 방법으로 현재 IP 주소를 알아낼 수 없습니다.

네트워크 프린터와 같은 기기의 IP 주소를 알아내려면 네트워크 설정으로 이동하여 IPv4를 찾아보세요. 죄송하지만 모든 운영체제에서 방금 말씀드린 방법으로 해당 IP 주소를 알아낼 수 있는 건 아닙니다. 운영체제마다 레이아웃이 다르기 때문에 이러한 기기의 IP 주소를 알아내는 방법이 조금씩 다를 수 있습니다.

NordVPN으로 데이터를 보호하세요

여러분이 반드시 유념해야 할 점은: TCP/IP는 절대 비공개 상태로 유지되지 않는다는 점입니다. 기업에서는 해당 기업이 소유한 서버에 접속하는 IP 주소를 수집하고, 신원을 확인하고, 추적할 수 있습니다. 그리고 온라인에 연결될 때마다 인터넷 서비스 공급자 (ISP)가 여러분이 온라인으로 무엇을 하고 있는지 확인할 수 있으며 여러분의 비공개 검색 기록을 제3의 광고주에게 팔아넘길 수 있습니다.

하지만, 너무 걱정하지 마세요! VPN을 이용하시면 이 모든 것을 막을 수 있습니다. TCP/IP 프로토콜이 제 기능을 하는 동안, NordVPN은 VPN 서버를 통해서 트래픽을 암호화하고 다시 라우팅할 것입니다. VPN의 도움으로, 여러분이 계속 안전하게 브라우징하는 동안 ISP에서는 여러분의 데이터를 기록하지도 못하고 IP 주소도 볼 수 없게 됩니다.

뿐만 아니라, NordVPN은 우수한 보안과 높은 신뢰도로 잘 알려진 IKEv2/IPsec과 OpenVPN이라는 VPN 프로토콜을 활용하고 있습니다. 지난 2020년부터 NordVPN의 사용자는 NordLynx라는 VPN 프로토콜도 이용할 수 있는데, 이 프로토콜은 WireGuard 프로토콜을 기반으로 구축된 프로토콜입니다.

클릭 한 번으로 시작하는 온라인 보안.

세계 최고의 VPN으로 보안을 유지하세요

IT 분야에서 실무를 담당하시는 분들뿐만 아니라 학생, IT 쪽에 조금이라도 관심이 있는 분들이라면 TCP/IP에 대해 들어보셨을 겁니다. 저 또한 학부시절에 TCP/IP에 대해서 여러 번 들어보았는데요. 'TCP/IP'라는 단어 자체도 잘 이해되지 않았고, 왜 붙여 부르는지도 사실 잘 몰랐습니다. 직장인이 되고서야 그 뜻과 중요성을 체감하게 되었네요. 

이번 문서에서는 서버, 네트워크 등을 가리지 않고 매우 중요한 요소로서 활약하는 TCP/IP에 대해 알아보고자 합니다. 인프라를 운영하거나 구축 혹은 트러블슈팅을 함에 있어서 TCP/IP를 알고 모르고는 차이가 매우 크다고 할 수 있습니다. 또한 신입사원 면접에서 OSI 7 Layer와 더불어 TCP/IP는 개발자, 엔지니어를 가리지 않고 나오는 단골 소재이기도 하니 취준생분들도 알아두시면 좋으리라 생각합니다. TCP/IP는 OSI 7 Layer 중에서 Layer 3, Layer 4를 다루는 프로토콜입니다.

TCP/IP

인터넷 프로토콜 스위트(영어: Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다.

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해 준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.

- 출처 : 위키백과 -

그렇습니다. TCP/IP는 하나의 프로토콜이 아닌 TCP와 IP를 합쳐서 부르는 말입니다. 또한 TCP/IP를 사용하겠다는 것은 IP 주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며 TCP의 특성을 활용해 송신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 것을 의미합니다. 즉 TCP/IP를 말한다는 것은 송신자가 수신자에게 IP 주소를 사용하여 데이터를 전달하고 그 데이터가 제대로 갔는지, 너무 빠르지는 않는지, 제대로 받았다고 연락은 오는지에 대한 이야기를 하는 것입니다. OSI 7 Layer 쉽게 이해하기 문서에서 이런 내용을 언급한 적이 있습니다.

Transport Layer(4 Layer)
송신자와 수신자의 논리적 연결(Connection)을 담당하는 부분으로, 신뢰성 있는 연결을 유지할 수 있도록 도와줍니다. 즉 Endpoint(사용자) 간의 연결을 생성하고 데이터를 얼마나 보냈는지 얼마나 받았는지, 제대로 받았는지 등을 확인합니다. TCP와 UDP가 대표적입니다.

 Network Layer(3 Layer)
IP(Internet Protocol)이 활용되는 부분으로, 한 Endpoint가 다른 Endpoint로 가고자 할 경우, 경로와 목적지를 찾아줍니다. 이를 Routing이라고 하며 대역이 다른 IP들이 목적지를 향해 제대로 찾아갈 수 있도록 돕는 역할을 합니다.

출처: OSI 7 Layer 쉽게 이해하기
 [네트워크 엔지니어 환영의 AWS 기술블로그]

Tcp/ip 사용 이유 - tcp/ip sayong iyu
<TCP/IP를 사용하는 Browser와 Server의 통신(출처 : www.joinc.co.kr )>

여러분이 인터넷에서 무언가를 다운로드할 때 중간에 끊기거나 빠지는 부분 없이 완벽하게 받을 수 있는 이유도 TCP의 이러한 특성, 다시 말해 데이터가 빠지지 않고 제대로 전달되었는지를 챙기는 꼼꼼함 덕분입니다. 그렇기 때문에 위에서 언급한 것처럼 HTTP, HTTPS, FTP, SMTP 등과 같이 데이터를 안정적으로 모두 보내는 것을 중요하시는 프로토콜들의 기반이 되지요. 이게 무슨 말인고 하니 TCP를 기반으로 하는 프로토콜들은 차후 언급할 TCP의 '3-way handshake'를 거친 후, 각자 프로토콜(Layer 7)에 기반한 교환 과정을 실시한다는 뜻입니다.

Tcp/ip 사용 이유 - tcp/ip sayong iyu
<HTTPS의 통신과정>

위 이미지는 TCP 기반의 프로토콜인 HTTPS의 'SSL handshake'를 도식화한 것입니다. TCP는 Layer 4이고 HTTPS는 Layer 7이지요. 파란색 상자는 TCP의 '3-way handshake'이고 노란색 상자는 HTTPS의 'SSL handshake'입니다. HTTPS는 TCP 기반의 프로토콜이기 때문에 SSL handshake를 하기에 앞서 3-way handshake를 실시함을 알 수 있습니다. TCP/IP에 대해서 대강 언급하였으니 이제 TCP에 대해 자세히 알아보겠습니다.

TCP의 개요

전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 한다.

TCP는 전송 계층에 위치한다. 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나이다. TCP는 웹 브라우저들이 월드 와이드 웹에서 서버에 연결할 때 사용되며, 이메일 전송이나 파일 전송에도 사용된다.

출처 : 위키백과

TCP는 OSI 7 Layer 중 4 계층에 해당합니다. IP가 패킷들의 관계를 이해하지 못하고 그저 목적지를 제대로 찾아가는 것에 중점을 둔다면 TCP는 통신하고자 하는 양쪽 단말(Endpoint)이 통신할 준비가 되었는지, 데이터가 제대로 전송되었는지, 데이터가 가는 도중 변질되지는 않았는지, 수신자가 얼마나 받았고 빠진 부분은 없는지 등을 점검합니다. 이런 정보는 TCP Header에 담겨 있으며 SYN, ACK, FIN, RST, Source Port, Destination Port, Sequence Number, Window size, Checksum과 같은 신뢰성 보장과 흐름 제어, 혼잡 제어에 관여할 수 있는 요소들도 포함되어있습니다. 또한 IP Header와 TCP Header를 제외한 TCP가 실을 수 있는 데이터 크기를 '세그먼트(Segment)'라고 부릅니다

Tcp/ip 사용 이유 - tcp/ip sayong iyu
<TCP Header의 구조(출처 : 위키백과)>

TCP는 IP의 정보뿐만 아니라 Port를 이용하여 연결합니다. 한쪽 단말(Endpoint)에 도착한 데이터가 어느 입구(Port)로 들어가야 하는지 알아야 연결을 시도할 수 있기 때문이지요. 위의 TCP Header를 보시면 Source Port와 Destination Port를 확인할 수 있습니다. 예를 들어, 양쪽 단말(Endpoint)이 HTTP로 이루어진 문서를 주고받고자 할 경우 데이터 통신을 하려면 Endpoint의 3306 Port도 아니고, 21 Port도 아닌 80 Port로 연결해야 합니다. 거대한 부산항에 도착했을 때 화물선인 나의 데이터가 상항(화물이 정박하는 항)에 들어가야지 어선항(어선이 정박하는 항)에 들어가면 안 되는 것처럼 말입니다. 이 이야기는 Port 쉽게 이해하기에서 언급한 바 있습니다. 이제 상대방과 내가 신뢰성 있는 연결을 맺고 데이터를 전송하기 위해 TCP가 무슨 행동을 하는지 알아보겠습니다.

TCP의 작동(3-way handshake)

TCP를 사용하는 송신자와 수신자는 데이터를 전송하기 전 먼저 서로 통신이 가능한 지 의사를 묻고 한 번에 얼마나 받을 수 있는지 등의 정보를 확인합니다. 앞서 언급했던 신뢰성 있는 통신을 하기 위함입니다. 데이터를 안전하고 빠지는 부분 없이 보내기 위함이지요. 여러분이 친구와 통화할 때를 어떻게 하시는지 떠올려보면 좋을 것 같습니다.

첫 번째, 전화번호를 누릅니다. 상대방의 전화기가 꺼져있지 않다면 연결음이 들리면서 연결을 시도합니다.
두 번째, 상대방이 전화를 받았고, 상대방의 목소리가 잘 들립니다.
세 번째, 여러분은  "여보세요?" 한 마디와 함께 상대방이 자신의 목소리가 잘 들리는지 확인을 한 후, 대화를 시작합니다.

TCP도 이와 동일합니다. 다만 TCP는 TCP Header 내의 'SYN', 'SYN/ACK', 'ACK' Flag을 사용하여 통신을 시도합니다. 

첫 번째, 송신자가 수신자에게 'SYN'을 날려 통신이 가능한지 확인합니다. 이때 Port가 열려 있어야 합니다.
두 번째, 수신자가 송신자로부터 'SYN'을 받고 'SYN/ACK'을 송신자에게 날려 통신할 준비가 되어있음을 알립니다.
세 번째, 송신자가 수신자의 'SYN/ACK'을 받고 'ACK'를 날려 전송을 시작함을 알립니다.

이것을 '3-way handshake'라고 부릅니다. 그림으로 그리면 다음과 같습니다.

Tcp/ip 사용 이유 - tcp/ip sayong iyu
<3-way hadndshake>

TCP로 이루어지는 모든 통신은 반드시 3-way handshake를 통해 시작합니다. 수신자가 받을 생각이 있는지 준비가 되어있는지 송신자가 보낼 준비가 되어 있는지를 미리 확인한 후 통신을 시작하여 데이터를 안전하게 보내는 것입니다. 그리고 데이터를 받았을 때 잘 받았음을 알리는 'ACK'를 송신자에게 날립니다. 송신자는 이 'ACK'를 보고 수신자가 데이터를 잘 받았음을 확인하고 다음 데이터를 전달할 준비를 합니다. 이 밖에 주로 사용하는 Flag으로는 RST, FIN, FIN/ACK, PUSH 등이 있습니다. 이것까지 설명하면 문서가 너무 길어지니 생략하겠습니다. 다음으로 TCP의 특징을 통해 어떤 수단을 이용하여 신뢰성을 유지하는지 간략하게 알아보겠습니다.

TCP의 특징

Tcp/ip 사용 이유 - tcp/ip sayong iyu
<TCP Header>

연말이 되면 취약층을 위한 연탄 배송 행사를 많이 하는데요. 사람들이 일렬로 줄을 세워 연탄을 하나씩 전달하는 모습을 볼 수 있습니다. 자세히 보면 연탄을 전달하는 사람은 받는 사람이 얼마나 받을 수 있는지 확인한 후에 전달합니다. 확인을 안 하게 되면 연탄을 받는 입장에서 손에 들고 있는 연탄이 있으니 받을 수 없어 앞사람에게서 오는 전달하려는 연탄이 깨지고 말 것입니다. TCP도 마찬가지입니다. 

TCP의 특징 첫 번째는 흐름 제어입니다.송신자는 자신이 한 번에 얼마나 보낼 수 있는지, 수신자는 자신이 데이터를 어디까지 받았는지 끊임없이 확인하고 TCP Header 내의  'Window size'를 사용해 한번에 받고/보낼 수 있는 데이터의 양을 정합니다. 여기서 window는 일정량의 데이터를 말합니다. 아무래도 받는 측의 사정이 더 중요하다 보니 Window size는 수신자가 정합니다.(3-way handshake 때 정합니다.) 그리고 자신의 상황에 따라 'Window size'를 조절합니다. 그리고 자신이 지금까지 받은 데이터 양을 확인하여 송신자에게 보내는데 이를 'Acknowledgment Number'라고 합니다. 만약 수신자가 300번째의 데이터를 받았으면 Acknowledgment Number에 1을 추가하여 301을 보냅니다. 300번까지 받았으니 301번부터 보내라는 뜻이지요. 그리고 이 데이터의 순서 번호를 표기한 것이 바로 'Sequence Number'입니다.

TCP의 특징 두 번째는 혼잡 제어입니다. 데이터를 주고받는 양 단말(Endpoint)도 중요하지만 데이터가 지나가는 네트워크망의 혼잡 또한 중요합니다. 다양한 방법이 있습니다만 그중에 'Slow Start'에 대해 언급하고자 합니다. 연결 초기에 송신자와 수신자가 데이터를 넉넉히 주고받을 준비가 되어있더라도 중간 경로인 네트워크가 혼잡하다면? 제대로 보낼 수 없을 것이 자명합니다. 그리하여 송신자는 연결 초기에 데이터 송출량을 낮게 잡고 보내면서 수신자의 수신을 확인하며 데이터 송출량을 조금씩 늘립니다. 그리하게 되면 현재 네트워크에서 가장 적합한 데이터 송출량을 확인할 수 있게 됩니다. 이것이 'Slow Start'입니다.

제가 하고자 하는 이야기는 여기까지입니다. 이 문서를 읽고 TCP의 기초를 잡으실 수 있으면 좋겠네요. 감사합니다.