지난 콘텐츠인 [네트워크 개념 잡기]에서 네트워크에 관한 전반적인 내용을 알아보았습니다.
네트워크란 Net+Work의 합성어로 두 대 이상의 컴퓨터들을 연결하고 서로 통신할 수 있는 것이며, 최근에는 스마트폰, 노트북, IPTV, 로봇 청소기 등 인터넷에 연결되는 다양한 기기들이 서로 연결되어 정보를 주고받는 것 또한 포함하고 있다고 말씀드렸습니다.
그리고 프로토콜이란 보내는 데이터의 내용을 그대로 보존하여 수신자와 송신자가 같은 내용을 받기 위한 약속된 데이터의 형식입니다. 이 프로토콜은 네트워크에 있어서 가장 중요한 개념이라고도 말씀드렸는데요. 오늘은 이 프로토콜에 대해 함께 알아보려고 합니다.
혹시 아직 이전 콘텐츠를 못 보신 분들은 아래의 링크를 통해 확인하실 수 있습니다!
URL은 우리가 자주 사용하는 단어인데요. 그만큼 익숙한 개념이기도 합니다. 우리가 주소창에 입력하는 웹 페이지의 주소가 바로 URL입니다. URL은 Uniform Resource Locator의 약자로, 웹을 사용하는 사람들이 원하는 자원을 정확히 찾아갈 수 있도록, 구별할 수 있는 고유의 주소를 뜻합니다. URL은 나름의 작성 규칙이 있는데요. 그 작성 규칙 또한 함께 살펴보겠습니다.
먼저 URL의 맨 앞 부분에는 해당 자원을 얻기 위한 통신 규약, 프로토콜이 오게 됩니다. 우리가 검색할 때 자주 보는 http 혹은 https은 웹 통신 규약이기 때문에 맨 앞으로 오게 되는 것입니다. 만약 웹이 아닌 다른 자원으로 접근을 한다면, 메일을 주고받을 때는 mailto, 파일 전송을 위해서는 ftp를 사용하게 될 것입니다.
http 혹은 https 뒤에는 이제 호스트 주소가 나오게 됩니다. 호스트 주소(hostname)는 우리가 접근할 서버 컴퓨터의 주소를 뜻합니다. 원래는 이 부분에 IP 주소가 들어가는 것이 맞으나, IP 주소를 다 기억하기 어렵기에 대신 문자 형태의 도메인(domain)을 사용하고 있습니다. 그 후에는 포트 번호가 오게 되는데요. 포트(port)는 웹 서버 안에서 특정 자원에 접근하기 위한 관문으로, 이 포트를 이용해야만 통신할 수 있습니다. 하지만 우리가 보통 구글이나 네이버를 검색할 때는 포트 번호를 입력하지 않아도 접속이 가능합니다. 그 이유는 기본적으로 프로토콜이 가진 기본 포트 번호가 자동으로 적용되기 때문입니다. 마지막으로 해당 자원의 구체적인 위치가 들어가는 경로(path), 뒤이어는 파라미터(parameter)가 나오게 됩니다.
URL의 구조를 설명할 때, IP 주소가 들어가는 것이 맞으나, IP 주소를 다 기억하기 어렵기에 대신 문자 형태의 도메인(domain)을 사용하고 있다고 말씀드렸는데요.
인터넷 통신이 가능한 장치에는 모두 각각 식별할 수 있는 특수한 번호 IP 주소가 있습니다. 웹 서버에 접근하기 위해서는 꼭 필요하지만 현실적으로 모든 IP 주소를 외우고, 입력하여 접근하기는 어렵습니다. 그래서 IP 주소를 몰라도 웹 사이트에 접근할 수 있도록 하기 위해 도메인이 생겼습니다.
우리가 잘 알고 있는 www.naver.com , www.whatap.io, www.google.com 등이 대표적인 도메인입니다.
그렇다면 DNS(Domain Name System)는 무엇일까요? DNS는 도메인과 IP 주소를 서로 변환해 주는 역할을 하는 시스템입니다. 그리고 이러한 변환 시스템을 운영하는 서버를 DNS 서버 혹은 네임 서버라고 합니다. 이 DNS 덕에 도메인을 이용하더라도 IP 주소로 자동으로 변경되기 때문에, 네트워크 통신에 있어 DNS는 매우 중요한 역할을 하고 있습니다.
인터넷의 통신 방식은 두 가지 주체에 의해 이루어집니다. 바로 클라이언트와 서버인데요. 클라이언트가 특정 정보를 서버에 요청하면, 서버가 요청한 정보를 찾아 클라이언트에게 전달해 주는 것입니다. 하지만 요청이 매번 1개만 들어오는 것이 아니기 때문에 서버 또한 1개만 있지 않습니다. 그래서 특정 주소를 배정하여 그 주소를 통해 통신을 하게 됩니다. 이 특정 주소가 바로 IP(Internet Protocol)입니다. 그리고 이름에서 알 수 있는 것처럼 IP는 인터넷에서 데이터를 주고받을 때 사용하는 프로토콜이기도 합니다.
IP의 주된 역할은 데이터를 정해진 목적지까지 전달하는 일입니다. IP의 특징은 비신뢰성(unreliable)과 비연결성(connectionless)인데요. 상태를 보장하는 신뢰성과 받는 사람이 있는지 확인하는 연결성에 대한 보장은 하지 않기 때문입니다. 그러면 데이터를 온전하고 완전하게 받을 수 있을까요?
바로 TCP를 통해서 데이터를 온전하게 받을 수 있습니다. TCP는 Transmission Control Protocol의 약자로 신뢰성 있는 데이터 통신을 위한 프로토콜입니다. 신뢰성이 있다는 것은 오류가 없다는 뜻으로, 언제 어디서든 데이터를 온전히 가져다 줄 것이라는 믿음을 의미합니다. 데이터를 주고받을 때는 작은 단위로 주고받기 때문에 중간에 종종 일부분이 사라지는 일이 있습니다. TCP는 이러한 오류를 감지하고 해결해 데이터를 온전히 전송될 수 있게 하는 역할을 하고 있습니다. 신뢰성 있는 통신이 주목적인 프로토콜이기 때문에, 데이터를 주고받기 전에 미리 클라이언트와 서버가 서로 통신할 준비가 됐는지 확인해 연결 오류로 인한 데이터 유실을 방지하는 일 또한 하고 있습니다. 그래서 연결형 프로토콜이라고도 불립니다.
HTTP는 URL 파트에서도 잠깐 언급되었는데요. HTTP는 Hypertext Transfer Protocol의 줄임말로, 웹 브라우저와 웹 서버 간에 데이터를 주고 받기 위한 프로토콜입니다. 이름에서 알 수 있는 것처럼 원래는 HTML 같은 하이퍼텍스트 형태의 데이터만 통신할 수 있었지만, 오늘날에는 이미지, 동영상처럼 웹을 구현하기 위한 다양한 형식도 통신하고 있습니다. HTTP는 URL과 더불어 웹 통신을 위한 프로토콜이기도 합니다.
인터넷은 단순히 웹 사이트의 주소만 넣으면 되는 것이 아닙니다. 주소를 입력하면 클라이언트가 서버에게 원하는 데이터를 요청하고, 요청한 내용에 대한 응답을 받고, 받은 자원을 잘 가공해 눈앞에 보여주는 과정을 거치는데요. 이러한 과정에서 클라이언트와 서버와 소통을 담당하는 프로토콜이 바로 HTTP입니다. HTTP는 한 번 통신을 주고받으면 연결을 끊는 비연결성 프로토콜이기도 합니다.
HTTP 통신 과정에서 데이터가 잘 들어온 것인지, 문제가 생긴 건지 확인하는 일은 상태 코드를 통해 확인할 수 있습니다.
OSI 7계층은 국제표준화기구(IOS)에서 1984년에 개발한 모델입니다. 데이터를 주고받을 때 데이터의 흐름을 크게 7단계로 구분한 것으로, 각 단계가 어떤 역할을 하고 있는지 알 수 있는 일종의 메뉴얼입니다. OSI 7계층은 아래와 같은 7단계로 이루어져 있습니다.
컴퓨터 네트워크가 처음 나왔을 때, 통신에 필요한 장치나 시스템은 특정 회사에서만 만들기 때문에 서로 호환이 되지 않는 경우가 많았습니다. 하지만 점점 개인용 컴퓨터가 보급되기 시작하면서 다른 기종의 컴퓨터끼리도 네트워크를 형성하기를 원했고, 그 결과 OSI 7 계층이 만들어졌습니다. 서로 다른 시스템이 잘 연결되고 호환될 수 있도록 하는 표준안이 생긴 것입니다. OSI 7계층이 생기면서 계층 내 장치나 통신 규악인 프로토콜이 달라져도 통신할 수 있게 되었고, 새로 개발된 장치나 프로토콜을 빠르게 이해하는 데에도 많은 도움이 되었습니다. 또한 이상이 생긴 특정 계층을 파악할 수 있게 되어 다른 계층은 건드리지 않고 고칠 수 있게 되는 등 유지, 관리도 수월해졌습니다. 위에서 설명한 IP는 3계층, TCP는 4계층에, HTTP는 7단계에 속합니다.
현재는 OSI 7계층보다 TCP/IP 4계층을 더 많이 사용하고 있습니다. 이 TCP/IP는 총 4가지 계층을 거쳐 만들어지고, 다시 역으로 4가지 계층을 거치게 됩니다.
TCP는 데이터를 송신할 때 마다 확인 응답을 주고 받는 절차가 있어서 통신의 신뢰성이 높습니다. 그렇기 때문에 웹이나 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스에 주로 사용됩니다. IP는 전송 계층(제 4계층)으로부터 받은 데이터(세그먼트)에 IP 헤더를 붙여 패킷으로 만드는 역할을 합니다. IP헤더에는 여러 필드 값 (버전, 헤더길이, 프로토콜 등), 출발지 IP주소, 도착지 IP주소가 들어갑니다.
지금까지 소개한 두 가지의 계층, 이미지로 보아도 비슷한 내용이 많아 어떤 것이 차이점인지 알기 어려우시죠?
위의 그림을 보면 OSI 모델의 세션, 표현, 응용 계층은 TCP/IP 모델의 응용 계층으로, OSI 모델의 물리, 데이터 링크 계층은 TCP/IP 모델의 네트워크 액세스 계층으로 합쳐진 것을 확인할 수 있습니다.
간단하게 말씀드리자면 OSI 7계층의 경우 호환성과 표준화를 목적으로, TCP/IP 4 계층은 실무 적용을 목적으로 만들어졌다는 차이점이 있습니다. OSI 7계층보다 더 실용성을 강조한 프로토콜으로, 현대 네트워크는 대부분 TCP/IP 4계층 모델을 사용하고 있습니다.
두 가지 다 네트워크 모델이지만 각각의 목적과 성격이 다르므로 두 개의 모델을 전부 비교해 살펴보는 것은 네트워크를 이해하는 데에 많은 도움이 됩니다.
지금까지 네트워크 통신에 필요한 프로토콜과 데이터 통신 계층까지 알아보았습니다. 어떠셨나요?
네트워크를 이해하는 데에 조금이라도 도움이 되었으면 좋겠습니다. 🙂