[인용 및 참고 출처]
1. 사전: "protocol", "hypertext", Longman Dictionary, (2025.01.29)
2. 사전: "protocol", "payload", 네이버 영어사전, (2025.01.29)
3. 단행본: "데이터를 주고받는 원리를 알아보자", 나카오 신지, 김성훈 옮김, 『그림으로 이해하는 네트워크 구조와 기술』, 길벗, 2023, 34쪽~46쪽, (2025.01.29)
4. 단행본 (3번과 동일): "패킷 교환 방식, 데이터를 분할해서 전송하는 통신 방식", 64쪽, (2025.01.29)
5. 단행본 (3번과 동일): "DNS, 도메인 이름과 IP 주소를 관리하는 구조", 156쪽, (2025.01.29)
6. 단행본(3번과 동일): "클라이언트, 서버, 리소스", 103쪽, 151쪽, (2025.01.29)
7. 단행본: "OSI 7계층", 양대일, 홍성혁, 『네트워크 해킹과 보안』, 한빛아카데미, 2023, 37쪽~40쪽, 53쪽, (2025.01.29)
8. 단행본 (5번과 동일): "전송 계층과 포트", 65쪽~67쪽, (2025.01.29)
9. 단행본: "순서 번호와 확인 응답 번호", 강민철, 『혼자 공부하는 네트워크』, 한빛미디어, 2024, 211쪽~213쪽, (2025.01.29)
10. 단행본 (9번과 동일): "HTTP", 272쪽, 277쪽 (2025.01.29)
TCP는 Transmission Control Protocol의 약자이고 HTTP는 HyperText Transfer Protocol의 약자이다. 두 개념 모두 '프로토콜(protocol)'이라는 단어를 포함하는 만큼, 가장 먼저 프로토콜이 무엇이며 왜 필요한지를 이해하고자 했다.
사전에 정의된 프로토콜(protocol) 뜻은 다음과 같다.
(1) 공식 행사에서 올바르게 행동하는 법을 규정한 규칙. 외교 의례
▷ a system of rules about the correct way to behave on an official occasion
(2) 공식 합의나 국제 합의를 서면으로 남긴 기록 또는 합의의 초기 형태. (조약의) 초안
▷ a written record of a formal or international agreement, or an early form of an agreement
두 가지 의미에서 볼 수 있듯이, 프로토콜은 '각자 합의하여 정한 규칙'을 의미한다.
'an established method for connecting computers so that they can exchange information'
'컴퓨터가 어떤 방식으로 연결되어서 서로 정보를 주고받을지 규정한 방법'
그렇다면 사전에서 프로토콜을 '통신 규약'이라고 정의한 이유도 쉽게 이해할 수 있었다.
여기까지 공부했을 때, 문득 의문이 들었다.
'왜 규칙을 정해야 하지? 규칙이 없으면 컴퓨터가 서로 통신할 수 없나?'
이 의문에 해답은 네트워크 특징에서 찾을 수 있었다. 네트워크로 데이터를 주고받으려면 데이터를 주는 쪽과 받는 쪽이 서로를 인식해야 하는데, 케이블이나 컴퓨터 내부는 그저 데이터가 흐를 뿐이었다. 이런 이유로 송신 측과 수신 측은 아래와 같은 약속을 해야 했다.
'데이터 전체에서 어디까지가 주소인가요?'
'데이터 전체에서 어디서 어디까지가 신호이죠?'
'데이터 전체에서 어느 부분이 주고받으려는 데이터 본체인가요?'
여기까지 공부하고 나니, 프로토콜이 무엇인지와 필요성을 이해할 수 있었다.
그다음으로는 TCP와 HTTP처럼 프로토콜이 다양하다는 말은, 이러한 프로토콜이 각각 다른 환경에서 쓰인다는 의미가 아닐까, 추측했다. 이 추측을 바탕으로 네트워크가 어떻게 구성되었는지 공부하면, TCP와 HTTP를 더 잘 이해할 수 있을 듯했다. 자연스럽게 두 번째로 공부할 개념은 OSI 참조 모델로 넘어갔다.
OSI(Open System Interconnection) 참조 모델은 국제 표준화 기구 ISO에서 제정한 네트워크 계층 모델로 7계층으로 나뉘어진다. OSI 참조 모델에서는 숫자가 클수록 상위 계층이며 송신 측에서는 7계층에서 1계층으로, 수신 측에서는 1계층에서 7계층으로 데이터가 전송된다.
그렇다면 네트워크를 왜 이렇게 계층으로 나누었을까?
이메일을 보낸다고 상상해 보자. 이메일을 보내고 상대방이 열어서 볼 때가지 사용되는 네트워크나 프로토콜, Gmail이나 Outlook 같은 애플리케이션은 모두 다르다. 애플리케이션은 데이터를 정확하게 전송할 수 있도록 설계되어 이메일을 주고받을 수 있지만, 각 애플리케이션에서 이러한 변환 처리를 전부 수행해야 한다면, 프로그램은 복잡해지고 효율성이 떨어질 수밖에 없다.
이렇게 이유를 찾고 나니 네트워크가 왜 여러 계층으로 나뉘었는지 이해할 수 있었다.
OSI 참조 모델의 각 계층 특징은 아래와 같이 정리할 수 있었다.
1계층: 물리 계층(Physical Layer). 전압이나 전선처럼 실제 장치를 연결하는 데 필요한 전기적·물리적 세부 사항을 정의한다.
2계층: 데이터 링크 계층(Data Link Layer). 두 지점 사이에 신뢰성 있는 전송을 보장하며, 물리 계층에서 발생할 수 있는 오류를 찾아내고, 수정하는 데 필요한 기능을 제공한다.
3계층: 네트워크 계층(Network Layer). 네트워크에 연결된 장치를 거칠 때마다 최적의 경로를 찾아주며, 네트워크로 다양한 길이의 데이터를 목적지까지 전달한다.
4계층: 전송 계층(Transport Layer). 특정 통신 대상으로 보낼 각 데이터 전송을 처리하며, 통신하는 두 지점이 신뢰성 있는 데이터를 주고받을 수 있게 해준다.
5계층: 세션 계층(Session Layer). 특정 통신 대상과 지속적인 연결 상태인 세션을 관리한다.
6계층: 표현 계층(Presentation Layer). 코드 간의 번역을 담당하며, 문자 코드나 이미지, 동영상 포맷 같은 데이터를 처리한다.
7계층: 응용 계층(Application Layer). 이메일이나 웹 브라우저처럼 앱 수준의 규약이나 데이터를 처리한다.
이렇게 OSI 참조 모델을 간단하게 살펴본 다음에는 7계층의 프로토콜인 HTTP와 DNS, 4계층의 프로토콜인 TCP, 그리고 3계층의 프로토콜인 IP를 학습했다.
(1) IP(Internet Protocol)
여러 네트워크를 연결하는 프로토콜로 인터넷을 구성한다. 32자리로 이루어진 2진수, 즉 32비트로 된 데이터라서 8비트씩 4등분한 뒤, 8비트의 10진수로 표시할 때 점으로 구분하여 표기한다.
IP는 TCP나 HTTP와 같은 다른 프로토콜의 기반이 되며 IP 주소를 참조하여 데이터 본체를 올바른 목적지에 전송하는 최소한의 절차와 규칙을 규정한다. 여기서 IP 주소는 출발지나 목적지를 식별하는 주소로 쓰이는 데이터를 의미하며, 데이터 본체는 페이로드(payload)라고 일컫는다.
단어 'payload'는 탑재 화물이나 배나 비행기의 유료 승객과 화물, 즉 '유상하중'을 의미한다.
따라서 IP 주소는 택배물인 페이로드를 감싸고 출발지와 목적지가 적힌 '빈 봉투'라고 볼 수 있다.
(2) TCP(Transmission Control Protocol)
인터넷 등에서 상위 계층과 신뢰성을 높여 통신하는 프로토콜이다. IP와 마찬가지로 주소가 있는데, 이 주소를 포트(port)라고 한다. 포트는 시스템에 도착한 뒤 패킷(packet)이 찾아갈 응용 프로그램과 통하는 통로 번호라고 볼 수 있다.
패킷은 주고받는 데이터 단위를 의미한다. 데이터를 주고받을 때에는 데이터를 일정한 크기로 나누어서 보내는데, 이렇게 나누는 단위가 패킷이다. 패킷의 크기는 프로토콜에 따라 정해진다.
TCP는 데이터의 흐름을 관리하고, 데이터가 정확하게 전달되었는지 확인한다. 일단 연결이 설정되면 송신 시스템은 데이터를 전송하고, 목적지 시스템은 이 데이터를 받아 송신 시스템에 응답해야 한다. 만약 목적지 시스템에서 아무런 응답이 없으면, 송신 시스템은 일정 시간을 대기한 후 같은 데이터를 다시 보낸다.
이러한 통신 방식 덕분에 TCP를 사용하는 4계층, 전송 계층에서 데이터를 신뢰성 있게 주고 받을 수 있다.
헤더(header)란 데이터를 전송할 때 필요한 제어 정보를 담은 부분을 의미한다. 앞서 언급한 세션(session)은 목적지 연결 여부를 확인하고 통신 경로를 확보 및 유지하는 과정이다. 그림에서 볼 수 있다시피 TCP의 헤더에 담기는 세션 관리 정보는 다음과 같다.
ⓐ 순서 번호(Sequence Number): 큰 데이터를 패킷 여러 개로 분할할 때 사용하는 패킷 번호
ⓑ 확인 응답 번호(Acknowledgement Number): 순서 번호가 맞는지 확인하는 번호. 자기 자신 다음에 와야 하는 순서 번호가 들어간다.
ⓒ 세션 플래그(Session Flags): TCP 세션의 상태를 나타내는 다양한 플래그
(3) HTTP(HyperText Transfer Protocol)
웹 브라우저와 웹 서버 간 통신 프로토콜이다. HTTP를 이해하려면 우선 hypertext의 의미부터 살펴봐야 한다.
'a way of writing computer documents that makes it possible to move from one document to another by clicking on words or pictures, especially on the Internet'
사전에서 정의한 뜻을 해석하면 'hypertext'란, '인터넷에서 주로 사용되는 방식으로, 단어나 그림을 클릭하여 한 문서에서 다른 문서로 이동할 수 있게 해주는 컴퓨터 문서 작성 방법'이다.
따라서 HTTP는 웹 페이지 간에 정보를 전달하고, 사용자가 한 페이지에서 다른 페이지로 쉽게 이동할 수 있도록 해주는 프로토콜이라고 할 수 있다.
이때 하나 생각해야 할 점은, 만약 서버에서 다수의 클라이언트와 상태 또는 연결을 유지해야 한다면 많은 서버의 리소스가 필요하다는 사실이다.
여기서 클라이언트(client)란, 서버에 연결해서 특정 처리나 기능을 이용하는 컴퓨터나 장치, 즉 서비스를 요청하고 받는 쪽을 의미한다. 반대로 서버(server)란, 클라이언트에 서비스를 제공하는 쪽을 의미한다.
리소스(resource)는 간단하게 말해서 '인터넷 상의 서버나 데이터'를 의미하며, 정확히는 '네트워크상의 서버나 내부 데이터, 애플리케이션, 기능 같은 전반'을 말한다.
이러한 이유로 HTTP는 서버가 HTTP 요청을 보낸 클라이언트의 상태를 보존하지 않는 상태, 즉 무상태 프로토콜이며 스테이스리스(stateless) 프로토콜이라고 한다. HTTP는 또한 요청과 응답을 기반으로 동작한다.
(4) DNS(Domain Name System)
DNS 서버에 IP 주소를 문의해서 도메인 이름을 IP 주소로 변환하는 프로토콜, 즉 도메인 이름과 IP 주소의 대응표를 관리하는 체계이다.
인터넷이 IP를 사용하기 때문에 IP 주소가 목적지를 특정할 수 있는 유일한 식별자인데, IP 주소가 숫자 나열로만 이루어져서 사람이 다루기에는 어렵다. 이러한 이유로 사람이 기억하고 쓰기 쉬운 이름으로 도메인 이름이 고안되었다.
따라서 DNS는 도메인 이름과 IP 주소를 대응시켜 관리하는 시스템이며, DNS 서버는 이 대응표 데이터베이스를 관리하는 서버를 의미한다.
'글' 카테고리의 다른 글
Day 124 - 프로젝트 100% (일찍 쉬고 02.08 수정 예정) (0) | 2025.02.07 |
---|