[Web] 웹(Network, TCP/IP, Internet, Protocol, Port, DNS)

2022. 10. 14. 18:18·Programming/Web
728x90

웹의 특징

  • 인터넷은 컴퓨터 네트워크망을 의미하고, 웹은 인터넷 서비스 중 하나를 의미한다.
  • 웹은 인터넷상의 정보를 하이퍼텍스트 방식과 멀티미디어 환경에서 검색할 수 있게 해주는 정보 검색 시스템을 의미한다.
  • 웹은 HTTP 프로토콜을 사용하며 HTML로 작성된 문서를 연결하여 다양한 콘텐츠를 제공한다.
  • 웹 서비스는 많은 사람들이 정보를 쉽게 공유하고 접근할 수 있도록 하는 것을 목적으로 한다.

웹의 동작 구조

HTML로 만들어진 콘텐츠는 '웹 서버(Web Server)'라고 하는 별도의 서버 소프트웨어를 통해 서비스로 제공되며 웹 서버 소프트웨어로는 아파치(Apache)가 대표적이다. 또한 웹 서비스를 요청한 클라이언트에서 서비스를 이용하려면 웹 브라우저(Web Browser)라고 하는 클라이언트 소프트웨어가 필요하며 마이크로소프트 엣지Edge, 크롬Chrome, 사파리Safari 등이 여기에 해당한다.

HTML을 중심으로 한 웹의 동작 과정

  1. 웹 브라우저에서 https://www.google.com/index.html을 입력한다.
  2. DNS 서버는 www.google.com이라는 도메인을 가진 IP주소를 웹 브라우저에 제공한다.
  3. 웹 브라우저는 IP 주소의 해당 서버 80번 포트로 접속을 시도한다. www.google.com의 웹 서버는 80번 포트로 접속을 기다리다 접속 요청이 들어오면 받는다.
  4. 웹 서버는 요청 내용을 분석하고 요청된 index.html 파일을 디스크에서 읽는다.
  5. 웹 서버는 파일 내용을 텍스트 그대로 요청한 클라이언트에 전송한다.
  6. 웹 브라우저는 웹 서버로부터 받은 텍스트 내용 중 HTML 태그를 분석하고 적절히 변환하여 화면을 구성한다.

네트워크

웹은 인터넷 기반 서비스 중 하나이고, 인터넷을 전세계를 연결한 컴퓨터 네트워트이다.

네트워크(Network)의 사전적 의미는 '전선이나 혈관, 통로 등으로 이루어진 망형 조직'이다. '네트워크'라는 용어는 방송사 네트워크, 인맥을 의미하는 휴면 네트워크(Human Network) 등 다양한 의미로 사용하는데, 그중 가장 많이 쓰이는 의미는 '컴퓨터와 컴퓨터를 연결해주는 망'이다.

컴퓨터와 컴퓨터를 연결한 네트워크는 이전보다 더 편리한 세상을 만들었다. 만일 네트워크가 없다면 보고서를 제출하기 위해 USB 메모리나 출력물을 이용해야 하지만, 네트워크에 연결되어 있다면 이메일(Email)이나 웹하드(Web Hard) 또는 드롭박스, 구글 드라이드와 같은 클라우드(Cloud)기반의 스토리지(Storage)를 통해 제출하는 것이 가능하다. 이처럼 네트워크는 이전과는 비교할 수 없는 편리함을 가져다주었다.

네트워크를 구축하려면 컴퓨터 간의 연결 규격, 즉 프로토콜(Protocol)이 필요하다. 여러 프로토콜 중 가장 널리 쓰이며 인터넷에서도 사용되고 있는 것은 TCP/IP이다.

TCP/IP

TCP/IP(Transmission Control Protocol / Internet Protocol)는 컴퓨터 간에 통신할 수 있도록 만든 프로토콜의 종류 중 하나다. 이 프로토콜에 기반하고 있는 것이 인터넷인데, TCP/IP가 인터넷의 기반 프로토콜로 자리 잡은 이유는 하드웨어, 운영체제, 접속 매체와 관계없이 동작할 수 있는 개방형 구조이기 때문이다. TCP/IP는 OSI(Open Systems Interconnection) 7계층에서 유래한 것으로, TCP/IP는 4계층으로 이루어져 있다.

  • 응용 계층 : WWW, FTP, Telnet, SMTP와 같은 네트워크 프로그램으로 구성된다.
  • 전송 계층 : 각 시스템을 연결하고 TCP 프로토콜을 이용하여 데이터를 전송한다.
  • 인터넷 계층 : IP 프로토콜을 이용하여 데이터를 정의하고 경로를 배정한다.
  • 물리 계층 : 실제 네트워크에 접근할 수 있도록 하는 물리적인 부분이다.

원래 OSI 7계층은 네트워킹을 위한 물리적 장비에서부터 실제 서비스를 제공하기 위한 애플리케이션에 이르는 단계까지를 계층화한 것을 말한다. 이러한 계층화를 통해 상위 레벨에서는 하위 레벨에서 구현한 내용을 모르더라도 표준화된 인터페이스를 통해 네트워크 시스템을 개발·운영할 수 있다. TCP/IP는 이러한 OSI 7계층을 좀 더 단순화하여 4계층으로 정의한 것이다. TCP는 데이터 흐름관리, 데이터 정확성 확인 등의 역할을 수행하고 IP는 데이터(패킷)를 목적지까지 전송하는 역할을 담당한다. TCP/IP는 개방형 구조로, 특정 운영체제나 하드웨어에 영향을 받지 않고 근거리와 원거리 모두 데이터를 전송할 수 있다.

IP 주소

IP 주소(IP Address)는 TCP/IP로 연결된 네트워크에서 각각의 컴퓨터를 구분하기 위해 사용하는 주소다. IP 주소는 숫자로 구성되어 있고 '123.123.123.123'과 같이 4개로 구분되며, 10진수를 사용한다.

구분 범위 네트워크 수 사용 목적/네트워크당 주소
클래스 A 1.0.0.0 ~ 127.0.0.0 128 대형 통신망 / 16,777,214개(224-2개)
클래스 B 128.0.0.0 ~ 191.255.0.0 16,384 중형 통신망 / 65,534개(216-2개)
클래스 C 192.0.0.0 ~ 223.255.255.0 2,097,152 소형 통신망 / 256개(28-2개)
클래스 D 224.0.0.0 ~ 239.255.255.255 - 멀티 캐스트용
클래스 E 240.0.0.0 ~ 255.255.255.255 - 실험 목적 / 배포중지

이론적으로 컴퓨터가 TCP/IP 네트워크에 연결되려면 IP 주소가 있어야 하고, 인터넷에 연결되면 전세계 모든 컴퓨터에 원격으로 접속할 수 있어야 한다. 하지만 수많은 컴퓨터에 각기 다른 고유한 IP 주소를 할당하기에는 한계가 있고, 모바일 인터넷의 급속한 확산과 함께 IP 주소 고갈문제가 심각하게 대두되었다. 그러나 현재는 초기에 걱정했던 것보다 문제가 다소 완화되었다. 네트워크와 라우터 기술의 발달로 사설 IP를 통해 대부분의 인터넷 서비스를 이용할 수 있게 되었기 때문이다.

사설 IP는 일반적으로10.X.X.X, 192.X.X.X등의 몇 가지 IP블록을 사용하지만, 실제로는 모든 인터넷 IP를 사용할 수 있다. 다만 네트워크 구성상 직접 인터넷에 연결하지 않고 라우터 장비 등에서 제공하는 NAT(Network Access Translator) 기능을 이용해서 접속해야 한다, NAT를 이용해서 공인 IP로 대응하면 인터넷에 접속할 수 있다. 쉬운 예로 집에서 사용하는 유무선 인터넷 공유기를 생각하면 된다. 공유기에 연결된 컴퓨터나 스마트폰은 DHCP(Dynamic Host Configuration Protocol)라고 하는 동적 IP 할당 프로토콜에 의해서 사설 IP를 배정받게 되고 공유기를 통해 인터넷에 접속한다.

인터넷

인터넷(Internet)은 하나의 고유명사로 internet이 아닌 Internet으로 써야한다. internet은 내부 네트워크를 의미하고, Internet은 전세계가 하나로 연결된 네트워크를 의미하기 때문이다. 즉 인터넷 자체는 네트워크 인프라이고 우리가 알고 있는 웹, 이메일 등은 인터넷 기반의 서비스인 셈이다. 웹은 인터넷에 기반한 서비스 중 하나이기 때문에 인터넷과 관련된 기술과 용어, 동작 원리 등을 살펴볼 필요가 있다.

인터넷 기반 서비스

인터넷 기반의 대표적인 서비스는 웹 의외에도 이메일, FTP, Telnet, DNS 등이 있지만 일반적으로 사용하는 서비스로는 웹이 절대적이다. 이메일은 대부분 네이버, 구글과 같은 웹 기반의 메일 서비스를 이용하는 경우가 많다. 또한 인스타그램, 트위터, 페이스북 등의 SNS(Social Networking Service)는 주로 스마트폰에서 많이 사용하는 인터넷 기반 서비스이며, 웹과 앱 모두 제공되는 경우가 일반적이다.

스마트폰은 보통 웹이 아닌 폰에 설치된 앱을 통해 서비스를 이용하는 형태가 일반적이다. 예를 들어 네이버나 트위터, 페이스북 등은 PC의 웹 브라우저를 통해서도 접속이 가능하지만, 스마트폰에서 사용할 수 있는 전용 앱을 제공한다. 이러한 앱 서비스는 웹 콘텐츠를 스마트폰 화면에 맞게 보여주는 형태로 구현되는 하이브리드형과 데이터만 서버를 통해 받아와 앱에서 하면을 직접 생성해 보여주는 네이티브형이 있다.

대표적인 인터넷 기반 서비스와 각각의 서비스에 해당하는 프로토콜과 포트
서비스 이름 기능 프로토콜 포트
웹(www) 웹 서비스 HTTP/HTTPS 80/443
이메일(Email) 이메일 서비스 SMTP/POP3/IMAP 25/110/143
FTP 파일 전송 서비스 FTP 21
Telnet/SSH 원격 로그인 서비스 TELNET/SSH 23/22
DNS 도메인 이름 변환 서비스 DNS 53

프로토콜

프로토콜(Protocol)은 네트워크에 연결된 컴퓨터들 간의 통신 규약을 말한다. 위 표의 서비스는 모두 TCP/IP를 사용하고 있으며, TCP/IP 4계층에서도 응용 계층에 해당하는 프로토콜이다. 즉 물리적인 네트워크 연결은 TCP/IP를 사용하지만, 응용 계층에서는 서비스마다 별도의 규격이 필요하다.

포트

포트(Port)는 네트워크 서비스를 제공하기 위한 일종의 출입문으로 하나의 컴퓨터에서 여러 개의 네트워크 서비스를 제공하는 경우 이들을 구분하기 위한 목적으로 사용한다. 은행에서 입출금, 대출, 신용카드, 보험 등 업무에 따라 창구를 구분해놓은 것과 같은 개념이다. 해당 업무를 처리하지 않는 창구에서는 내가 원하는 서비스를 받을 수 없듯이 포트와 프로토콜이 일치하지 않는 경우에는 정상적인 네트워크 서비스를 이용할 수 없다. 포트는 네트워크를 통해 내 컴퓨터에 접속할 수 있도록(들어올 수 있게) 개방해둔 문과 같으므로 보안과 밀접한 관계가 있기 때문에 불필요한 네트워크 서비스를 컴퓨터에 실행해두지 않도록 주의한다.

도메인 네임 시스템

대한민국 국민이라면 외국인과 구별되는 고유 번호인 주민번호를 가진다. 이처럼 컴퓨터의 IP 주소는 네트워크에서 컴퓨터를 구분해주는 주민번호와 같은 개념이다. 그러나 우리가 사람을 부를 때 주민번호를 부르는 경우는 없다. 주민번호는 단지 관리를 위한 번호일 뿐, 평소에 사용하려면 불편하기 때문이다. 인터넷에도 이와 유사한 개념으로 도메인 이름(Domain Name)이 있다. 대부분의 웹 사이트 이름으로 알고 있는 'www.naver.com'이나 'www.google.com' 등의 인터넷 주소는 호스트(컴퓨터) 이름(www) + 도메인 이름(naver.com)형태로 되어있다. 여기서 도메인 이름은 전세계적인 관리 체계가 있기 때문에 마음대로 붙일 수 있는 것은 아니며, 도메인을 관리하는 기관에 일정 비용을 지불하고 구매해야 한다.

우리가 일상적으로 사용하는 도메인 이름을 통한 웹 사이트 접속도 겉으로는 보이지 않지만 내부적으로 도메인 이름을 IP 주소로 변환하는 서비스를 이용하는 것이다. 이러한 서비스를 도메인 네임 시스템(Domain Name System, DNS) 이라고 한다.

'Programming > Web' 카테고리의 다른 글

[Web] 웹(웹 개발 트렌드)  (0) 2022.10.18
[Web] 웹(Server, Front-end, Back-end)  (0) 2022.10.18
[HTML] [CSS] [Bootstrap] 웹 연습  (0) 2022.09.22
동적 웹페이지  (0) 2022.07.18
웹 페이지 구성  (0) 2022.06.21
'Programming/Web' 카테고리의 다른 글
  • [Web] 웹(웹 개발 트렌드)
  • [Web] 웹(Server, Front-end, Back-end)
  • [HTML] [CSS] [Bootstrap] 웹 연습
  • 동적 웹페이지
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    객체
    CSS
    HTML
    변수
    타입스크립트
    event
    TypeScript
    MySQL
    object
    파이썬
    리액트
    제어문
    next.js
    array
    Python
    JavaScript
    Java
    자바스크립트
    web
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
[Web] 웹(Network, TCP/IP, Internet, Protocol, Port, DNS)
상단으로

티스토리툴바