"HTTP가 무엇입니까?" 라는 질문에 가장 잘 어울리는 답변은 "인터넷이요" 라고 생각합니다. 우리가 수시로 접속하는 웹 페이지의 주소에는 보통 https 또는 http가 있기 때문입니다. 그런데 자주 접하는 HTTP 단어임에도 HTTP가 무엇인지 정의하기는 어렵습니다. 왜냐하면 HTTP가 아닌 인터넷 환경과 종류는 감히 상상하기 조차 어렵기 때문입니다.
HTTP는 Hypertext Transfer Protocol의 축약어입니다. "Hypertext"는 "최고의 글"이라는 의미로 Hyper 및 Text의 합성어입니다. "Hyper"는 "super", "최고의", "넘어서"라는 의미를 담고 있습니다. "Text"는 "글"이라는 뜻입니다.
"Transfer"는 "이동", "이동하다"라는 뜻이 있습니다. "Protocol"은 "약속", "규약"이라는 의미가 있습니다. 즉, HTTP는 Hypertext라는 것의 이동에 필요한 하나의 약속입니다.
한편 "Hypertext"가 세상에 나오기 전에는 "Text"가 자리를 잡고 있었습니다. 그렇다면 과거 "Text"였던 인터넷 환경은 어떤 모습이었을까요?
1990년, HTTP가 세상에 처음 등장하였고 1992년부터 보급되기 시작하였습니다. 당시의 HTTP는 좋은 기술이었지만 대중화가 되지 않은 초창기 상태였습니다. 그래서 컴퓨터 모니터 화면은 주로 text로만 구성된 상태였습니다. 이는 일명 '블루스크린'이었으며 웹의 초창기 모습은 아래와 같았습니다.
상기 이미지는 과거 우리나라의 나우누리 웹 페이지의 모습입니다. 이는 BBS (Bulletin Board System)가 적용된 웹 페이지였습니다. BBS는 전자 게시판이라고 표현되며 이를 활용한 기업은 우리나라의 나우누리, 하이텔, 천리안 등이 있었습니다.
현대 시대의 웹 페이지와는 확연한 이질감이 느껴집니다. 이 BBS 환경에서는 JPG, PNG, GIF 형식 등의 시각적인 무언가를 찾기 어렵습니다. 또한 하이퍼링크를 통한 페이지 이동을 할 수도 없었습니다. 과거의 BBS 방식의 인터넷 환경이 발전되면서 현재의 HTTP가 탄생한 것입니다.
이제 HTTP의 구성 단어 중 하이퍼텍스트에 대해 보다 심도있게 접근해보겠습니다. 하이퍼텍스트는 인터넷의 대중화 및 개인들의 웹 이해도 상승에 크게 기여하였습니다. 각종 시각적인 자료와 하이퍼링크를 통한 자유로운 웹 서핑을 선도하였기 때문입니다. 이러한 웹의 고급화는 HTML 언어로 시작되었습니다.
HTML은 Hypertext Markup Language의 약자입니다. 말 그대로 "좋은 글을 작성하는 언어"라는 의미입니다. 기존의 프로그래밍 언어는 한 작업을 정해진 순서대로 실행시키는 것이 주 목적이었습니다. 이와 달리 마크업 언어는 태그를 통해 정보에 속성을 부여하고 표현하는 것이 목적입니다.
특히 몇 마크업 언어 중 HTML은 웹(Web) 페이지 제작에 특화된 언어입니다. 왜냐하면 텍스트로 작성된 글을 브라우저에 그래픽 형식으로 표출하기 때문입니다. 이러한 정보의 시각화가 이루어지면서 HTML은 전 세계적인 언어가 되었습니다.
한편 HTML의 이용자가 증가되면서 서로의 규약이 필요하게 되었습니다. 그래서 HTML 정보 소통을 위한 약속인 HTTP가 등장하게 된 것입니다. 그렇다면 우리는 HTML 정보를 가지고 어떤 방식으로 소통하는 것일까요?
하이퍼링크는 서로 다른 웹 페이지를 연결시켜주는 장치(interface)입니다. 현대의 하이퍼링크는 ~
~~
일반인도 웹에 쉽게 접근할 수 있게 되었습니다.
이 HTML로 인해 WEB1.0의 시대가 도래하였다고 볼 수 있으며 컴퓨터 공학 전공자가 아닌 일반인도 웹 브라우저에 쉽게 접근할 수 있게 되었습니다.
그리고 HTML로 작성된 문서(웹 페이지)에 하이퍼링크가 적용되면서 대중들이 웹 서핑을 즐길 수 있는 발판이 마련되었습니다. 참고로 하이퍼링크는 1960년대에 고안되었던 오래된 지식입니다.
1960년대에 고안된 하이퍼링크가 HTML로 작성된 웹 페이지들과의 연결성을 극대화시키는 데에 적용되었고 대중들이 웹 서핑을 즐길 수 있는 WEB1.0 시대 HTML로 작성된 웹 페이지 구성된 대중화를 극대화 하였씁니다.
HTTP로 구성된 웹
HTML로 작성된 웹 페이지를 였고 현재의 자유로운 웹 환경을 구현할 수 있었
의 장점 중 하나는 하이퍼링크를 사용할 수 있다는 것입니다.
검색 시스템을 고도화시켰다는 것입니다.
이제 Hypertext에 대해 보다 심도있게 접근하겠습니다. 하이퍼텍스트는 ChatGPT 등 현재의 수준 높은 검색 엔진을 ~
dd
인터넷을 작동시키기 위해서는 컴퓨터의 전원을 켜고 LAN 포트에 랜선을 연결하면 됩니다. PC와 연결된 랜선의 다른 끝부분은 벽면의 랜포트 또는 와이파이 공유기로 연결됩니다. 그렇다면 벽면 또는 와이파이 공유기에 있는 랜포트의 보이지 않는 종착 지점은 어디일까요? 이번 글에서는 인터넷의 원초적인 의미는 무엇이고 인터넷이 어떻게 작동되는지 알아보겠습니다.
인터넷이 어떻게 작동되는지 이해하려면 먼저 인터넷이 무엇인지를 인지해야 됩니다. Internet이란 Inter + Network의 합성어이며 네트워크가 연결된 상태를 의미합니다. 그리고 Network란 Net + Work의 합성어이며 작업 공간이 얽혀져있는 것을 뜻합니다. 그러므로 작업 공간이 이어진 상태를 네트워크 및 인터넷이라고 표현할 수 있겠습니다.
이 네트워크 개념은 몇 가지 분류에 따라 아래와 같이 구분됩니다.
- 규모에 따른 네트워크 분류 → PAN, LAN, MAN, WAN 등
- 무선(wireless) 상태의 네트워크 분류 → SAN, VPN 등
- 데이터 전송 방식에 따른 네트워크 분류 → 패킷 교환 방식, 셀 릴레이 방식 등
- 노드(node) 연결 형태에 따른 네트워크 분류 → 버스형, 스타형, 링형 등
이번 글에서는 규모에 따른 유선 네트워크 분류만을 다뤄보겠습니다.
작업 공간을 PC로 가정했을 경우 작업을 하려면 컴퓨터의 전원이 켜진 상태여야 됩니다. 전원이 켜진 상태의 컴퓨터 한 대는 작업을 할 수 있는 환경입니다.
하지만 다른 컴퓨터로 데이터를 송신하거나 타 컴퓨터의 데이터를 수신할 수 있는 환경은 아닙니다. 따라서 전원이 켜진 "노드-1" 한 대에서만의 작업은 인터넷이 작동된다고 할 수 없겠습니다. 왜냐하면 다른 노드(ex "노드-2", "노드-3" 등)들의 작업 공간과 연결되어 있지 않기 때문입니다. 참고로 노드(node)는 컴퓨터, 스마트폰 등의 IP 주소를 보유한 모든 정보처리 장치를 의미합니다.
IP 주소를 보유한 서로 다른 컴퓨터끼리 연결시킬 수 있는 가장 간단한 방법은 데이터 전송이 가능한 케이블로 서로를 연결하는 것입니다. 이는 인터넷 환경의 초창기 형태이며 한 공간에 존재하는 컴퓨터들과의 데이터 전송이 가능했습니다. 그러므로 작은 규모의 인터넷이 작동했던 것입니다.
하지만 수많은 컴퓨터가 연결된 네트워크 환경을 구축하기 위해서는 무수히 많은 케이블과 공간이 필요하다는 단점이 있었습니다.
컴퓨터들끼리 케이블을 연결한 모식도는 아래와 같습니다. (출처: Mozilla)
Case 1에서의 단점을 보완해주기 위해 개발된 것이 공유기(router)입니다. 공유기는 여러 컴퓨터들의 연결을 돕는 중계 장치 역할을 합니다. 공유기와 연결되는 선은 컴퓨터 한 대 당 한 줄이며 공유기에 연결된 각 컴퓨터는 서로 연결됩니다.
그러므로 공유기를 활용하면 근처 컴퓨터들끼리의 연결 효율이 더 좋아집니다. 게다가 이 공유기들끼리 연결하면 일정 지역에 존재하는 컴퓨터들끼리의 네트워크 망이 구축될 것입니다.
아래는 대규모 공유기의 외관입니다. (출처: Wikipedia)
최근 와이파이(Wi-Fi) 공유기 장치가 보급되면서 공유기(라우터)라는 단어가 보다 익숙해지셨을 수 있습니다. 하지만 이번 글에서 말씀드리는 공유기는 일반 가정에서의 home router와 수준이 다른 공유기입니다. 상기 공유기는 carrier class의 라우터이며 아래는 소형 공유기의 외관입니다. (출처: Wikipedia)
공유기에 연결된 컴퓨터들끼리의 네트워크 개념도는 아래와 같습니다. (출처: Mozilla) 참고로 와이파이 공유기 등 무선 연결과 관련된 내용은 추후 작성해보겠습니다.
네트워크의 규모에 따라 네트워크는 크게 네 가지로 구분됩니다.
- PAN: "Personal Area Network"의 축약어로 가장 작은 규모의 네트워크를 의미합니다.
- LAN: "Local Area Network"의 축약어로 집, 학교, 회사 정도 규모의 네트워크를 의미합니다.
- MAN: "Metropolitan Area Network"의 축약어로 도시, 대학교 캠퍼스 정도 규모의 네트워크를 의미합니다.
- WAN: "Wide Area Network"의 축약어로 대륙과 대륙, 국가와 국가 규모의 네트워크를 의미합니다.
따라서 근래의 인터넷이란 WAN 네트워크를 의미한다고 표현하는 것이 적절하겠습니다. 데이터의 교환이 대륙이나 국가와 같은 물리적인 공간을 관통하기 때문입니다.
그런데 공유기끼리만 연결된 네트워크의 규모는 LAN 규모의 네트워크보다 확장되기 어려웠을 것입니다. 그렇다면 LAN 규모였던 네트워크를 WAN 규모로 확장시킬 수 있었던 방법은 무엇일까요?
불가능할 것 같았던 거대 규모로의 네트워크 확장은 전화 통신 인프라로 해결되었습니다. 전화 통신 인프라(telecommunications infrastructure)는 이미 광범위한 통신망으로 구축된 상태였습니다. 그렇지만 전화 통신망은 아날로그(analog) 신호를 이용하고 있었습니다. 아날로그는 진동, 전압, 전류 등의 물리적인 신호입니다.
이와는 달리 노드(컴퓨터 등)에서 발생된 네트워크 정보는 디지털(digital) 형태입니다. 따라서 기존에 아날로그 신호만 통하던 전화 통신망을 네트워크 망으로 이용하기 위해서는 디지털 신호와 아날로그 신호를 서로 교환해주는 장치가 필요한 상황이었습니다. 이러한 관계로 모뎀이 개발되었으며 모뎀의 역할은 디지털 및 아날로그 신호를 서로 변환해주는 것입니다.
인터넷 환경은 [Case 1 : Case 3]에서 말씀드린 것과 같이 복잡한 일련의 과정을 거치며 발전하였습니다. 정리하자면, 인터넷 환경은 서로 다른 기기와의 데이터 송수신이 가능하도록 연결된 상태를 의미합니다. 그리고 이러한 인터넷이 정상 작동하려면 노드(node), 공유기(router), 모뎀(modem)이 동작하여야 됩니다.
노드(컴퓨터 등), 공유기(router), 모뎀(modem)이 연결된 모식도는 아래와 같습니다. (출처: Mozilla)
근래 네트워크는 상기 내용과 같이 노드, 공유기, 모뎀이 연결된 상태입니다. 그리고 우리의 네트워크 디지털 정보는 데이터 케이블을 따라 이들 장치를 통해 전송되며 공유됩니다. 한편 데이터가 송수신되는 네트워크 환경의 규모가 커질수록 개인이 이 네트워크를 관리하기 어렵습니다.
그래서 거대한 규모의 네트워크를 관리하는 업체가 존재하게 됐으며 해당 업체를 ISP (Internet Service Provider)라고 합니다. ISP의 역할은 송신 목적의 네트워크 정보 등을 수신 가능한 목적지로 연결시켜주는 것입니다. 즉, ISP의 역할은 인터넷 환경을 정상적으롤 유지하는 것이라고 표현할 수도 있겠습니다.
이번 글에서는 인터넷 작동 원리를 파악해보았습니다. 다음 글에서는 HTTP가 무엇인지 알아보겠습니다. 아래 내용은 단번에 전부 말씀드리기에는 너무나 방대한 인터넷 환경 개념도입니다. (출처: Wikipedia)
구글의 개발자 Kamran Ahmed가 설립한 roadmap.sh의 백엔드 로드맵이 업로드 되었습니다.
해당 로드맵은 2023년 버전으로 https://roadmap.sh/backend에 업로드 된 내용입니다.
상기 로드맵의 내용을 참고하여 차근차근 백엔드 개발자로 되어 보려고 합니다.
이제 Internet이 어떻게 작동하는지부터 알아보겠습니다.