TCP/IP

TCP/IP(Transmission Control Protocol/Internet Protocol)

흔히 TCP/IP라고 알려진 인터넷 프로토콜 스위트 (Internet Protocol Suite)는 인터넷과 이와 유사한 컴퓨터 네트워크 사이에서 정보를 주고받는 데 이용되는 통신 프로토콜의 모음입니다.

프로토콜?
프로토콜은 시스템과 애플리케이션 프로그램에서 정보를 교환할 수 있도록 하는 메시지 형식 및 프로시저에 대한 규칙 세트입니다.
우리가 이용하는 앱과 기기는 정보를 전송하고 수신하기 위해 이러한 규칙을 따라야 합니다.

출처 NordVPN, TCP/IP란 무엇이며 어떤 원리로 작동하나요?

 

인터넷 서비스 대부분이 TCP/IP를 기반으로 만들졌습니다. 데이터 전송의 과정에서 TCP와 IP 각각 담당하는 작업이 있지만, HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 결국 IP 위에서 동작하기 때문에 하나로 묶어서 표현하는 것이 일반적입니다.

 

그럼 IP와 TCP 각각의 프로토콜은 무엇을 가리키는 걸까요?

IP(Internet Protocol)

네트워크에서 전송되는 데이터를 패킷이라고 하는데 IP는 이러한 패킷이 네트워크를 통해 목적지에 도착할 수 있도록 경로를 지정하기 위한 프로토콜입니다.

출처: LMI.net,  IP Addresses


쉽게 설명하면, 컴퓨터와 컴퓨터 사이에서 데이터를 전송하기 위해서는 어디로 보내져야 하는 지에 대한 정보가 필요합니다. 그 목적지는 IP 주소를 통해 알 수 있습니다. IP는 4byte로 이루어진 주소번호를 사용해서 각각의 컴퓨터를 구분합니다. 이를 IP 주소Address라고 하며 0.0.0.0부터 255.255.255.255의 숫자로 이루어져있습니다

데이터는 자신의 목적지 IP 주소를 가지고 출발해 한 개 이상의 Router를 거쳐 목적지 IP 주소와 같은 컴퓨터로 도착합니다.

DNS

223.130.195.95와 같이 숫자로 된 인터넷 주소를 사람이 사용하는 것은 불편한 방법입니다. 그래서 IP 주소를 인간이 식별하기 쉬운 방법으로 바꾸기 위해 Domain Name Service, 즉 DNS라고 하는 것을 사용합니다. naver.com이라는 사이트를 들어갈 때도 DNS가 아닌 223.130.195.95라는 ip 주소로도 들어갈 수가 있습니다.

TTL(Time To Live)

만약 네트워크 상에서 목적지 IP 주소가 존재하지 않으면 어떻게 될까요?

패킷은 목적지로 설정된 IP 주소를 찾기 위해 영원히 떠돌 것입니다.

 

이를 방지하기 위해 TTL이라는 것이 있습니다. TTL은 패킷이 살아있는 시간을 의미하며, 이는 Router를 얼마나 많이 거치는 가로 결정됩니다. Router와 Router 사이를 홉이라는 단위로 표시하고 TTL은 몇 개의 홉을 지날 수 있는지를 나타냅니다. 예를 들어 어떤 패킷의 TTL이 10이라면 10개의 Router를 지나간 후에 사라지는 것이죠.


실제로는 Router에 도착할 때마다 TTL이 하나씩 줄고 TTL이 0이 되면 패킷을 삭제하는 방식으로 작동합니다. 패킷이 삭제되면 패킷을 보낸 원래의 소스에 TTL이 한계에 도달하여 패킷을 전달할 수 없다는 메세지를 보내죠. 이 메커니즘은 패킷이 내부에서 끝없이 순환하고 리소스를 소모하는 것을 방지하는 데 도움이 됩니다.

TCP(Transmission Control Protocol)

한 기기에서 다른 기기로 데이터를 안전하게 전달하기 위해 만들어진 프로토콜입니다. 데이터는 네트워크를 통해 전달되는 과정에서 손실이 발생하거나 순서가 뒤바뀌어 전달될 수 있는데 TCP를 사용하면 이러한 오류를 찾아내고 교정할 수 있습니다.

TCP의 특징 1: 연결 지향

TCP는 데이터가 전송되기 전, 수신측과 전송측의 연결을 성립하는 과정이 먼저 진행됩니다. 마치 우리가 전화를 할 때, 전화 받은 사람과 전화를 건 사람이 서로를 확인하는 것과 비슷합니다. 이렇게 전화를 건 사람과 전화를 받은 사람이 서로를 확인한 뒤에 대화를 시작하듯이, 데이터를 전송하는 측, 즉 서버가 데이터를 받는 클라이언트에게 데이터를 전송하기 시작합니다.

Three way handshake

출처: CLOUD FLARE, TCP/IP는 무엇입니까?


Host A에서 통신을 하고 싶다고 요청(SYN)하면 Host B는 그 요청을 받고 자신이 통신할 준비를 마친 뒤 다시 Host A에게 응답(SYN-ACK)을 합니다. Host A는 Host B에게 자신이 응답을 잘 받았다며 통신을 시작하자는 요청(ACK)을 보내게 되죠. 이렇게 통신선로를 하나 만들기 위해서는 3번의 데이타 전송이 일어나게 되므로 이것을 three way handshake라고 부릅니다.

TCP의 특징 2: 흐름 제어(Flow Control)와 혼잡 제어(Congestion Control)

위와 같은 방법으로 서버와 클라이언트가 연결되면 이제 서로 데이터를 주고받을 수 있습니다.다만 크기가 큰 모든 데이터를 한 번에 보낼 수 없으므로 데이터를 분할해서 보내야합니다. 분할된 데이터에는 고유번호가 부여되는데 이를 바탕으로 데이터가 올바르게 전달되고 있는지 알 수 있습니다.


예를 들어 서버에서 책 한 권을 보낼 때, 각 페이지에 몇 번째 페이지인지 함께 적어 보내는 것입니다. 그리고 클라이언트는 자신이 몇 번째 페이지를 받았는지 알 수 있죠. 클라이언트가 10 번째 페이지를 잘 받았다는 요청을 보내오면 그제서야 서버는 다음 페이지를 전송합니다.

출처: AVG.com, What Is TCP/IP?

그런데 한 페이지씩 전달하면 책 한 권을 전달하는 데에 너무 오래 걸립니다. 그렇지만 데이터를 최대한 큰 조각으로 나누어 보내면 문제가 발생할 수 있습니다. 바로 브라우저가 받을 수 있는 데이터의 크기를 넘어섰을 때죠.
이 문제를 해결하기 위해 서버는 클라이언트가 어느만큼 큰 데이터까지 받을 수 있는 지 확인하기 위해 데이터의 크기를 점점 키워 봅니다. 브라우저는 다음에 받아야할 페이지와 이전에 받았던 크기를 함께 보내주죠. 만약 브라우저가 '10페이지 받을 차례입니다. 저는 지난번에 10페이지씩 받을 수 있어요'라는 요청을 하면 서버는 10페이지부터 10개 보다 더 많은 페이지를 보내줍니다.


그러다가 10번부터 50페이지까지 보냈음에도 클라이언트가 '저 48페이지를 받았어요'라는 요청이 오면 클라이언트는 한 번에 40개의 페이지를 처리하지 못한다는 뜻이므로, 마지막으로 받은 페이지 이후인  49페이지부터, 지난번 보다 더 적은 수의 페이지를 보내줍니다. 이런 방식을 통해 데이터의 신뢰성을 보장하고 속도를 최적화합니다.

TCP/IP 4계층

TCP/IP 계층은 OSI 7계층을 단순화 시켜서 4개의 계층(Layer)이 있습니다.

Application Layer

이 계층은 네트워크을 사용하는 응용프로그램(FTP, Telnet, SMTP) 등으로 이루어집니다. 사용자 (사람 또는 소프트웨어)가 네트워크에 접근할 수 있도록 합니다.

Transport Layer

계층의 이름에서 알수 있듯이, 도착을 원하는 시스템까지 데이타를 전송하기 위한 일을 하는 계층입니다. 전송 계층에는 TCP뿐만 아니라 사용자 데이터그램 통신 규약 (User Datagram Protocol: UDP)도 있습니다. TCP와 UDP의 가장 큰 차이점은 UDP는 TCP와 달리 받았다는 확인이 없어 신뢰성이 보장되지 않지만 속도가 빠르다는 것입니다. 그래서 UDP는 다른 데이터에 비해 안전하게 보호되어야 할 필요가 없는 프로그램에서 흔히 이용됩니다.

Internet Layer

데이타를 정의하고 데이타의 경로를 배정하는일(라우팅)을 담당합니다. 데이타를 정확히 라우팅 하기 위해서 IP프로토콜을 사용합니다.

Physical Layer

물리적 계층, 즉 이더넷 카드와 같은 하드웨어입니다.

ISO 7계층과의 비교

OSI 7계층(OSI 7Layer) 모델 핵심 정리

 

OSI 7계층(OSI 7Layer) 모델 핵심 정리

OSI모델? OSI 모델이 뭐길래 네트워크 파트에서 가장 먼저 소개할까요? OSI(Open Systems Interconnection, 개방형 시스템 상호 연결)란 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜

curt-poem.tistory.com

ISO의 7계층 구조에 의하면 TCP는 4번 계층(전송Transport 계층)에 그리고 IP는 3번 계층(네트워크Network 계층)에 해당되는 프로토콜입니다. 그러나 두 모델은 관련은 있으나 서로 완전히 들어맞지는 않습니다. 보통 TCP/IP라고 말하면 이는 보통 TCP/IP 프로토콜 조합(protocol suit)을 의미하는 경우가 대부분이므로 여기에는 ISO의 5,6,7번째 계층까지 포함합니다.

출처: 정보통신기술용어해설, TCP/IP

참고자료

JOINC, 네트워크 프로그래밍 : TCP/IP 개론
Nord VPN, TCP/IP란 무엇이며 어떤 원리로 작동하나요?

정보통신기술용어해설, TCP/IP

CLOUDFLARE,  time to Live(TTL)란? | TTL의 정의

+ Recent posts