도순씨의 코딩일지

Web :: 웹, 인터넷 프로토콜, 클라이언트-서버모델, 인터넷, DNS, URL, HTTP, 웹서버 본문

𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆/𝐖𝐄𝐁

Web :: 웹, 인터넷 프로토콜, 클라이언트-서버모델, 인터넷, DNS, URL, HTTP, 웹서버

도순씨 2020. 9. 6. 01:03

🌼 정의와 역사

인터넷은 웹과 동일할까요? 먼저 대답을 해보자면 'No'입니다. WWW는 인터넷의 일부일 뿐입니다.

출처 : https://www.researchgate.net/figure/Figure-1-1-The-web-as-subset-of-the-internet2_fig1_321708049

회선 교환(circuit switching) 은 두 사람 사이에 실제적인 물리적 연결을 만들고 회선을 독점하는 방식입니다. 목적지로 전송하기 전에 먼저 회선을 정하고 그 회선을 통하여 통신을 하는 방식이죠.

 

회선 교환의 단점은 다음과 같습니다.

💡 통신 전에 회선을 정립하고, 통신중에도 유지해야 한다

💡 동시에 회선을 사용하는 것이 어렵다

💡 링크 설정과 동시에 대화가 성립된다고 가정하기 때문에 대역을 낭비한다

 

 

ARPANET 은 회선 교환을 사용하지 않고 패킷 스위칭(packet switching) 을 사용했습니다. 패킷 스위치 네트워크는 지속적인 연결을 요구하지 않습니다. 그 대신에 메시지를 '패킷(packet)'이라 불리는 작은 단위로 쪼갭니다. 그리고 목적지 주소에 따라서 적절한 장소에 보내주는 역할을 합니다. 패킷 스위칭은 회선 교환의 단점을 보완한 것으로 평가됩니다. 하나의 경로에 얽메이지 않기 때문에 정교합니다. 또한 네트워크 자원을 더 효율적으로 사용합니다. 회로가 다수의 연결과 소통할 수 있기 때문입니다. ARPANET은 미국 정부의 정책에 따라서 만들어졌기 때문에 처음에는 학술적 · 과학적 목적으로만 사용됐습니다. 

 

분산된 네트워크의 통합과 성장 속도를 높이기 위해서 적절한 프로토콜이 필요했습니다. 이 목적에 따라서 만들어진 프로토콜이 TCP/IP 입니다. 

 

Web의 주요 특징은 다음과 같습니다.

💡 WWW에 있는 자원을 식별하기 위한 URL

💡 어떻게 요청과 응답이 이루어지는지 묘사하기 위한 HTTP 프로토콜

💡 HTTP 요청에 응답할 수 있는 소프트웨어

💡문서 생성을 위한 HTML

💡 URL들로부터 HTTP 요청을 만들고 받은 HTML을 보여줄 수 있는 프로그램

 

Web 어플리케이션은 데스크탑 어플리케이션에 비해서 몇 가지 장점을 지니고 있습니다.

💡 인터넷이 가능한 모든 컴퓨터에서 접근이 가능하다

💡 다른 운영체제와 브라우저 플랫폼에서도 사용 가능하다

💡 서버에 있는 프로그램만 업데이트하면 되기때문에 업데이트에 있어서 편리하다

💡 내부 저장소에 대한 우려가 적어진다

 

반면, 단점도 존재합니다.

💡 인터넷 연결이 필요하다

💡 보안 문제 : 인터넷으로 민감한 개인 정보가 전송될 수 있다

💡 특정 브라우저에서 특정 웹사이트가 호환되지 않을 수 있음

💡 운영체제로의 제한적 접근은 소프트웨어와 하드웨어가 설치되는 것을 방지할 수 있다

 

인트라넷(Intranet) 은 특정 기관 내부에서 사용할 수 있는 인터넷 네트워크를 뜻합니다. 인트라넷 자원은 보통 접근 권한이 없는 사람은 접근할 수 없도록 막혀있습니다. 인트라넷의 목적이 권한이 없는 외부의 접근을 막기 위한 것이기 때문입니다. 이를 막기 위해서 방화벽, 특정한 IP 주소 범위를 사용하는 방법을 택합니다. 앞서 언급한 것처럼 인트라넷은 'private'한 특성을 갖고 있기 때문에 구글과 같은 검색 엔진으로 접근할 수 없습니다. 또한 인트라넷 내부에 어느 정도 양의 웹 페이지가 존재하는지 알 수 없습니다. 

 

정적 웹 페이지(Static Web Sites) 는 오직 HTML로만 구성되어 있는 페이지로, 사용자들에게 항상 동일하게 보입니다. 최근에는 이런 페이지가 거의 없다고 합니다. 

동적 웹 페이지(Dynamic Web Sites)는 최근에 많이 볼 수 있는 형태입니다. 콘텐츠를 동적으로 생성하기 위해서 웹 서버를 실행하여 프로그램을 사용하는 것입니다. 이러한 웹 사이트의 콘텐츠는 사용자에 따라서 다르게 보일 수 있습니다. 

 

 

🌼 인터넷 프로토콜

프로토콜(protocol) 은 소통하는 데 있어서 일종의 규약입니다. TCP/IP 프로토콜 은 4개 층으로 이루어져 있습니다. 더 자세하게 나누면 5개 혹은 7개로도 나눌 수 있습니다. 

 

출처 : https://www.computernetworkingnotes.com/ccna-study-guide/similarities-and-differences-between-osi-and-tcp-ip-model.html

저는 TCP/IP Original을 기준으로 설명해보도록 하겠습니다. 링크계층(Link Layer) 은 가장 낮은 단계의 층으로 물리적 전송을 할 수 있고 논리적 링크를 생성할 수 있습니다. 링크계층에서는 패킷 생성, 전송, 수신, 에러 감지 등의 역할을 행합니다.

인터넷 계층(Internet Layer, IP Layer) 에서는 네트워크 상에서 통신 상대에게 패킷을 전송하는 역할을 합니다.

 

잠시 인터넷 프로토콜(IP) 에 대해서 살펴봅시다. 인터넷은 인터넷 상에서 목적지를 식별하기 위해서 IP 주소를 사용합니다. 인터넷에 연결된 모든 기기들은 IP 주소를 가지고 있습니다. 이것은 숫자로 이루어져 있습니다. IPv4 주소는 2^32개의 주소를 생성가능합니다.하지만 점차 이 주소들이 모두 소진됨에 따라 IPv6을 사용하고 있습니다. 2^128개의 주소를 사용할 수 있으며 16진수 숫자로 표현됩니다. IP주소는 인터넷 서비스 제공자 (ISP)에 의해서 할당됩니다. 로컬 네트워크에서 컴퓨터는 하나의 IP 주소를 나누어 쓸 수 있습니다.

 

다시 TCP/IP로 돌아가봅시다. 전송계층(Transport Layer) 은 에러 없이 전송이 도착하는 것을 보장합니다. 이는 몇가지 방법에 따라서 보장될 수 있습니다.

첫째, 데이터는 패킷으로 나누어지고, TCP(Transmission Control Protocol)에 의해서 데이터가 패킷으로 나누어집니다.

둘째, 각각의 패킷은 발송자에게 돌아가게 되고 송신자는 ACK가 도착하지 않으면 패킷이 분실되었음을 알게 됩니다. 분실된 패킷은 재전송됩니다.

셋째, 메시지는 받는 사람측에서 조립되어 볼 수 있습니다. 

 

응용 계층(Application layer) 은 프로세스 대 프로세스(process-to-process) 커뮤니케이션을 실행하고 사용자에게 인터페이스를 제공하여 서비스가 가능하게 합니다. 응용계층에 속하는 프로토콜로는 HTPP, SSH, FTP, DNS, POP, SMTP가 있습니다. 

 

 

🌼 클라이언트 - 서버 모델

클라이언스-서버 모델(client-server model) 은 이름에서 직관적으로 알 수 있듯 클라이언트와 모델로 구성된 모델입니다. 서버(server) 는 24시간동안 활성화되어 있는 컴퓨터 에이전트입니다. 서버는 요청을 하는 클라이언트로부터 쿼리를 듣는 역할을 합니다. 클라이언트(client) 는 서버로부터 요청을 하고 요청을 받는 역할을 합니다. 이러한 요청의 형식은 응답코드, 이미지, 텍스트파일, 다른 데이터들로 이루어져 있습니다.

클라이언트 - 서버 모델에서 요청-응답 반복(request-response loop) 은 요청을 받고 응답 상황에서 데이터를 보내기 위한 가장 기초적인 방법이라 할 수 있습니다. 클라이언트가 서버에 요청을 시작하고 HTML 파일, 이미지, 다른 데이터와 같은 자원을 포함한 응답을 받아옵니다. 

Peer-to-Peer 모델(이하 P2P 모델) 이란 각각의 컴퓨터가 기능적으로 동일하고 노드들이 서로에게 직접적으로 보내고 받을 수 있는 상태입니다. 이 모델에서 각각의 peer들은 클라이언트와 서버 모두의 역할을 수행할 수 있으며 서버는 정보를 다운로드하고 업로드할 수 있습니다. 쉽게 말하자면 양방향 전송 모델이라고 할 수 있습니다.  

 

서버는 하나의 기계처럼 보일 때가 많지만, 실제로는 그렇지 않습니다. 클라이언트는 URL로부터 자원을 얻기 위해서 요청을 합니다. 클라이언트에게 서버는 하나의 기계로 여겨집니다. 하지만 현실에서 서버는 매우 많은 수로 이루어진 경우가 대다수입니다. 많은 수의 서버에게 각각 역할을 분배하여 각각의 임무를 수행하게 하는 것이 일반적입니다. 

 

서버 팜(Server Farms) 는 컴퓨터 서버와 운영시설을 한 곳에 모아놓은 곳을 의미합니다. 서버 팜은 서비스 요구가 많은 경우 부하를 분산시킬 수 있으며, 임의 서버가 중단되더라도 다른 서버로 즉시 대체시켜 서비스를 원활하게 제공할 수 있습니다. 로드 밸런서(load balancers) 라고 불리는 특별한 라우터가 요청을 분산시킵니다. 만약 하나의 서버가 망가지더라도 사이트를 이용할 수 있게 합니다. 서버 랙(Server Racks) 은 서버를 잘 모아둔 장비입니다. 서버 팜은 많은 서버 랙으로 이루어져 있으며 각각의 서버팜은 많은 서버를 가지고 있습니다.

 

데이터 센터(Data Centers) 는 서버 팜을 모아둔 곳입니다. 사이트가 다운되는 것을 방지하기 위해서 미러 데이터 센터가 존재하고 있습니다. 이러한 미러 데이터 센터는 서버가 다운되었을 때 활용됩니다. 다수의 중복된 데이터 센터의 비용은 높습니다. 그래서 큰 회사만이 이 비용을 감당할 수 있습니다. 따라서 대부분의 회사들은 다른 회사에 위탁하는 형태로 미러 데이터 센터를 만들어 두고 있습니다.

 

 

🌼 인터넷

집에서 케이블 모뎀(cable modem, broadband modem 또는 DSL 모뎀이라고도 불림) 은 네트워크 하드웨어 사이에서 브릿지 역할을 합니다. 이러한 기기들은 주로 ISP에 의해서 공급이 됩니다. 

라우터(router) 는 한 네트워크에서 다른 네트워크로 패킷을 이동시키는 하드웨어 기기입니다. 즉 데이터 전송을 위한 경로 지정을 한다. 이러한 케이블들은 광케이블로 이어지는 경우가 많습니다. 광케이블(Fiber optic cable) 은 유리로 만들어진 케이블로 가볍고 좋은 대역폭을 자랑합니다. 그리고 속도가 빠릅니다. 광 케이블은 ISP의 헤드앤드에서 그들의 경로를 만듭니다. 헤드앤드는 CMTS(cable modem termination system)DSLAM(digital subscriber line access multiplexer) 를 포함합니다. CMTS는 케이블 모뎀 데이터를 인터넷으로 전송하기 위한 데이터용 패킷으로 바꾸어주는 장비입니다. DSLAM)은 DSL 모뎀에서 송수신되는 데이터를 모아 백본 네트워크로 전송하는 DSL 접속을 위한 다중화 장비입니다.

 

인터넷 교환 지점(Internet Exchange Points, IX 또는 IXP) 은 인터넷 서비스 제공 업체(ISP) 및 CDN과 같은 인터넷 인프라 회사가 서로 연결되는 물리적 위치입니다. 서로 다른 네트워크들은 IXP 내의 다른 네트워크들에 연결될 뿐만 아니라 큰 웹사이트들에도 연결될 수 있습니다. 다른 나라와 인터넷으로 소통하기 위해서는 어떻게 해야할까요? 이것은 해저케이블로 해결하고 있습니다. 

 

 

🌼 DNS(DOMAIN NAME SYSTEM)

우리는 긴 숫자 문자열을 기억하기 쉽지 않기 때문에 IP 주소 대신에 DNS를 사용합니다.

출처 : https://aws.amazon.com/ko/route53/what-is-dns/

도메인 레벨을 살펴봅시다.

Top-Level Domain으로 갈수록 general하며 아래로 내려갈 수록 specific 합니다. Top-Level Domain은 두 가지로 나눌 수 있습니다. 일반 최상위 도메인(Generic top-level domains, gTLD)국가코드 최상위 도메인(Country code top-level domain, ccTLD) 로 나눌 수 있습니다. 도메인 이름 등록 대행자(domain name registrars) 는 도메인 이름 등록을 도와주는 회사입니다. DNS 주소 해석(DNS Address Resolution) 은 IP주소를 찾아주는 역할을 합니다. 일반적인 URL을 IP주소로 바꾸어주는 역할을 하는 것이죠.

 

🌼 URL(Uniform Resource Locators)

URL은 인터넷에서 자원 위치를 나타냅니다. URL을 구성하는 방법은 클라이언트가 어떻게 서버에 파일을 요청할 수 있는지에 따라서 이루어져 있습니다. 

쿼리 스트링은 &을 이용하여 파라미터를 구분하고 ? 를 통하여 질의 문자열을 구분합니다. 

 

 

🌼 HTTP(Hypertext transfer protocol)

HTTP 는 포트 80번을 사용하며, 서버가 요청을 위해 기다리고 응답 코드 및 헤더와 함께 응답하고, 추가적인 메시지를 전송하는 과정을 포함합니다. 현실에서 하나의 웹 페이지를 보는 것은 클라이언트의 브라우저에 의해 실행되는데, 최초의 HTML 페이지를 요청하고 되돌아온 HTML을 분석하는 방식으로 이루어집니다. HTTP 프로토콜은 몇 가지의 다른 요청 타입을 정해놓습니다. 가장 빈번하게 이루어지는 요청은 GET과 POST 입니다. 

출처 : https://www.thecrazyprogrammer.com/2019/11/difference-between-get-and-post-method.html

이 사진에 대한 자세한 설명이 필요하신 분은 https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/ 이 곳을 들어가보시는 것을 추천합니다.

 

🌼 웹 서버(Web Servers)

웹서버(web server) 는 HTTP 요청에 대해 응답하는 역할을 합니다. 웹 스택(Web Stack) 은 웹개발을 위하여 필요한 소프트웨어의 집합입니다. 이것은 운영체제, 웹 서버 소프트웨어, 데이터베이스, 스크립트 언어 등을 포함하고 있습니다. LAMP software stack 은 Linux 운영체제, Apache  웹서버, MySQL 데이터베이스, PHP 스크립트 언어를 의미합니다. WISA software stack 은 Windows 운영체제, IIS 웹서버, SQL 서버 데이터베이스, ASP.NET를 의미합니다. 

 

📚 출처

https://youngq.tistory.com/72

 

[네트워크 이론] 2. 회선교환과 패킷교환

1. 회선교환 (Circuit Switching) 방식 회선교환 방식은 회선 독점을 통한 통신방식이라고 볼 수 있습니다. 아래와 같은 간단한 네트워크망이 존재한다고 가정하겠습니다.(실제로는 대부분 전화망에��

youngq.tistory.com

https://m.blog.naver.com/eoals0704/30137684821

 

회선교환 방식과 패킷교환 방식

회선교환 (circuit switching) 방식 회선교환 방식에서는 목적지로 전송을 하기 전에 먼저 회선을 설정 회...

blog.naver.com

https://hackersstudy.tistory.com/109

 

[CCNA] 03. Application Layer

[ 다룰 내용 ] 이번 주제는 OSI 7 Layer에서 7계층에 해당하는 응용계층에 대한 설명과 꼭 알아야 하는 프로토콜 10가지에 대해서 다뤄볼 예정이다. 10가지 외에도 더 있지만 본 Chapter에서는 반드시 �

hackersstudy.tistory.com

https://post.naver.com/viewer/postView.nhn?volumeNo=14678102&memberNo=19185109

 

P2P(Peer to peer) 네트워크는 무엇일까?

[BY 야매해리] 안녕하세요 야매해리입니다. 오늘은 블록체인에서 가장 기본적인 P2P 네트워크 (Peer-to-...

m.post.naver.com

https://terms.tta.or.kr/dictionary/dictionaryView.do?subject=서버+팜

 

TTA정보통신용어사전

한국정보통신기술협회(TTA)는 정보통신 기술 발전과 타 분야와의 기술 융합에 따라 무수히 생성되는 정보통신용어를 해설하고 표준화하여, 전문가뿐만 아니라 비전문가들도 올바르게 활용할 수

terms.tta.or.kr

https://blog.naver.com/PostView.nhn?blogId=demonicws&logNo=40108441909&parentCategoryNo=&categoryNo=75&viewDate=&isShowPopularPosts=true&from=search

 

라우터(Router)개념 총 정리

라우터(Router) - 네트워크에서 데이터의 전달을 촉진하는 중계 장치, 즉 데이터의 전송을 위한 경로 지정...

blog.naver.com

https://zdnet.co.kr/view/?no=00000010052106

 

[화보로 이해하는 네트워크 장비] DSLAM

DSLAM(Digital Subscriber Line Access Multiplexer)은 DSL 모뎀에서 송수신되는 데이터를 모아 백본 네트워크로 전송하는 DSL 접속을 ...

zdnet.co.kr

https://hyubi.net/entry/URL에-쓰이는-특수-문자들과-그들의-의미

 

URL에 쓰이는 특수 문자들과 그들의 의미

?  질의 문자열 구분자. ? 문자 오른쪽에 위치한 URL 문자열 부분은 질의 문자열을 의미한다. &  파라미터 구분자. 질의 문자열에서 이름=값으로 나타나는 파라미터 쌍을 구분하기 위해 사용한��

hyubi.net

https://whatis.techtarget.com/definition/Web-stack

 

What is Web stack? - Definition from WhatIs.com

A Web stack is the collection of software required for Web development. At a minimum, a Web stack contains an operating system, a programming language, database software and a Web server.

whatis.techtarget.com

 

'𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆 > 𝐖𝐄𝐁' 카테고리의 다른 글

Web :: CSS  (0) 2020.10.01
Web :: HTML Syntax, HTML Semantic Elements  (0) 2020.09.16
Comments