본문으로 건너뛰기

인터넷의 구성과 교환 방식

정보처리기사 목차네트워크 기초레슨 166 / 233

목차

인터넷은 전 세계의 네트워크를 라우터로 이어, 같은 규칙(TCP/IP)으로 데이터를 주고받게 한 네트워크의 네트워크입니다. URL의 호스트 이름은 DNS가 IP 주소로 바꾸고, 데이터는 회선 교환이나 패킷 교환(가상 회선·데이터그램) 방식으로 전달됩니다.

주소창에 이름 하나를 치면 먼 곳 서버의 화면이 열립니다. 그 사이에 이름을 주소로 바꾸고, 여러 네트워크를 건너는 길을 고르고, 그 길을 다른 사용자와 나눠 씁니다. 이렇게 주고받는 규칙을 프로토콜(protocol)이라 합니다. 아래 그림은 URL 하나가 서버에 닿는 길을 따라간 뒤, 그 길을 쓰는 세 방식을 견줍니다.

6단계 중 1단계. URL은 자원이 있는 자리를 적는 꼴입니다. 브라우저는 URL을 나눠 어떤 프로토콜로, 어느 서버의, 어느 자원을 달라고 할지 읽습니다.

1인터넷을 이루는 것 — 호스트·라우터·IP 주소·DNS

이름하는 일
호스트(host)인터넷에 이어져 데이터를 주고받는 컴퓨터. PC도 웹 서버도 호스트다
라우터(router)네트워크 사이에서 패킷을 받아 다음 길을 골라 건넨다
IP 주소(IP address)인터넷에서 호스트를 가리키는 번호. 예: 203.0.113.10
DNS(Domain Name System)도메인 이름(www.example.com)을 IP 주소로 바꾼다

컴퓨터는 번호로 상대를 찾아가므로, 브라우저는 먼저 DNS 서버에 IP 주소를 묻습니다. 보낼 데이터는 패킷(packet)이라는 작은 덩어리로 잘려 받는 곳의 IP 주소를 머리에 달고, 라우터가 그 주소를 보고 다음 라우터를 골라 건넵니다. IP 주소의 짜임은 IP 주소와 IPv6에서, 라우터가 길을 고르는 규칙은 라우팅 프로토콜에서 배웁니다.

2URL의 구조

URL(Uniform Resource Locator)은 인터넷에 있는 자원의 자리를 적는 꼴입니다. 아래 표는 그림의 URL을 구분 기호에서 나눈 것입니다.

URL 조각이름하는 일
https://스킴(scheme)어떤 프로토콜로 주고받을지
www.example.com호스트(host)자원이 있는 서버. DNS가 IP 주소로 바꾼다
:443포트(port)서버에서 요청을 받을 프로그램의 번호. 생략하면 https는 443, http는 80
/board/list경로(path)서버 안에서 자원이 있는 자리
?page=2쿼리(query)서버에 넘기는 값. 이름=값을 &로 잇는다
#top프래그먼트(fragment)받은 문서 안의 위치. 서버로 보내지 않고 브라우저만 쓴다

URL 표준(RFC 3986)은 호스트와 포트를 묶어 authority라 부르고, URL을 scheme·authority·path·query·fragment 다섯으로 나눕니다. 자료에 따라 authority를 권한, 쿼리를 매개변수, 프래그먼트를 앵커라고도 옮깁니다.

3길을 나눠 쓰는 방식 — 교환

교환(switching)은 여러 사용자가 회선을 함께 쓰며 데이터를 맞는 곳에 넘기는 방식입니다.

회선 교환(circuit switching)은 통신 전에 두 끝 사이의 길을 잡아 두고 끝날 때까지 혼자 씁니다. 지연은 일정하지만, 보낼 것이 없어도 길이 묶여 있습니다.

패킷 교환(packet switching)은 데이터를 패킷으로 잘라 보내며 회선을 나눠 씁니다. 길을 정하는 때로 둘을 가릅니다.

  • 가상 회선(virtual circuit): 보내기 전에 길을 먼저 정하고, 모든 패킷이 그 길로 차례대로 갑니다. 연결을 먼저 맺는 연결형입니다.
  • 데이터그램(datagram): 길을 미리 정하지 않고 패킷마다 따로 고릅니다. 도착 순서가 바뀔 수 있어 받는 쪽이 다시 맞춥니다. 연결 없이 보내는 비연결형이고, 인터넷의 IP가 이 방식입니다.

메시지를 자르지 않고 통째로 담아 두었다 넘기는 메시지 교환(message switching)도 있습니다. 자료에 따라 이것과 패킷 교환을 묶어 축적 교환(store-and-forward)이라 부릅니다.

예제

다음 세 통신이 어느 방식인지 먼저 골라 보세요.

(가) 상담 전화를 걸면 두 전화 사이의 길이 잡히고, 말이 없는 동안에도 끊을 때까지 그 길을 혼자 씁니다.

(나) 사진 파일을 패킷으로 잘라 보냈더니 패킷마다 다른 라우터를 거쳐 3번이 1번보다 먼저 닿았고, 받는 컴퓨터가 번호대로 맞췄습니다.

(다) 공장의 두 기계가 통신을 시작할 때 거쳐 갈 라우터를 정해 두고, 패킷을 모두 그 길로 차례대로 보냅니다. 그 선을 다른 기계의 패킷도 지나갑니다.

답을 정했으면 아래 표로 맞춰 보세요.

가르는 물음회선 교환가상 회선데이터그램
길을 언제 정하나통신 전에 잡아 둔다보내기 전에 정한다패킷마다 그때그때
회선을 나눠 쓰나혼자 쓴다나눠 쓴다나눠 쓴다
도착 순서보낸 순서보낸 순서바뀔 수 있다 — 받는 쪽이 맞춘다
연결연결형연결형비연결형
  • (가) 회선 교환, (나) 데이터그램, (다) 가상 회선입니다.
  • (가)와 (다)가 가장 헷갈립니다. 둘 다 길을 먼저 정하지만, (다)는 그 길을 다른 기계와 나눠 쓰고 (가)는 혼자 묶어 둡니다.

시험 포인트

  • 필기: URL은 스킴·호스트·포트·경로·쿼리·프래그먼트 차례이고, 프래그먼트는 서버로 가지 않습니다. DNS는 도메인 이름을 IP 주소로 바꿉니다. 교환 방식은 회선 교환과 패킷 교환으로 나뉘고, 패킷 교환은 다시 가상 회선(연결형)과 데이터그램(비연결형)으로 나뉩니다. '패킷마다 길을 고른다'·'도착 순서가 바뀔 수 있다'를 가상 회선의 설명으로 바꿔 놓고 틀린 것을 고르게 합니다.
  • 실기: URL의 부분을 영문으로 씁니다 — Scheme, Authority(호스트와 포트를 묶은 부분), Path, Query, Fragment. 교환 방식은 한글 이름과 영문으로 씁니다 — 회선 교환(Circuit Switching), 패킷 교환(Packet Switching), 가상 회선(Virtual Circuit), 데이터그램(Datagram).

확인 문제

1. 어느 회사 네트워크가 패킷 교환 가운데 가상 회선(virtual circuit) 방식으로 데이터를 보냅니다. 이 네트워크에서 일어나는 일로 알맞은 것을 고르세요.

  • ① 한 사용자가 통신하는 동안, 다른 사용자의 데이터는 그 선로를 지나가지 못합니다.
  • ② 첫 패킷을 보내기 전에 거쳐 갈 길을 정하고, 패킷 1·2·3이 그 길로 가서 보낸 순서대로 닿습니다.
  • ③ 라우터가 패킷마다 그때그때 길을 골라, 2번 패킷이 1번보다 먼저 닿기도 합니다.
  • ④ 데이터를 자르지 않고 통째로 담아 두었다가, 다음 곳이 비면 한꺼번에 넘깁니다.
정답

②입니다. 가상 회선은 보내기 전에 길을 정하고 모든 패킷이 그 길로 차례대로 갑니다. 선로는 다른 사용자와 나눠 씁니다.

  • ① 선로를 혼자 묶어 쓰는 것은 회선 교환입니다. 가상 회선은 패킷 교환이라 선로를 나눠 씁니다.
  • ③ 패킷마다 길을 고르는 것은 데이터그램입니다. 가상 회선은 길이 하나라 순서가 바뀌지 않습니다.
  • ④ 통째로 담아 두었다가 넘기는 것은 메시지 교환입니다. 패킷 교환은 데이터를 패킷으로 자릅니다.

2. 다음 (가)~(라)에 맞는 이름을 한글 이름과 영문으로 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 화상 회의를 시작할 때 두 지사 사이의 길을 잡아 두고, 회의가 끝날 때까지 다른 누구도 그 길을 쓰지 못하게 하는 방식
  • (나) 데이터를 작은 조각으로 잘라 보내, 한 선로를 여러 사용자의 조각이 번갈아 지나가게 하는 방식을 함께 부르는 이름
  • (다) (나) 가운데, 첫 조각을 보내기 전에 거쳐 갈 길을 정해 두고 모든 조각이 그 길로 차례대로 가는 방식
  • (라) (나) 가운데, 조각마다 그때그때 길을 골라 늦게 보낸 조각이 먼저 닿기도 하는 방식
정답

받는 답: (가) 회선 교환(Circuit Switching) · (나) 패킷 교환(Packet Switching) · (다) 가상 회선(Virtual Circuit) · (라) 데이터그램(Datagram)

(가)의 실마리는 '끝날 때까지 혼자 묶어 둔다', (나)는 '잘라 보내 선로를 나눠 쓴다'입니다. (다)와 (라)는 길을 정하는 때로 가릅니다 — 보내기 전에 한 번 정하면 가상 회선, 조각마다 고르면 데이터그램입니다.

  • 같은 이름의 다른 꼴: 한글 이름만, 또는 영문만 쓴 꼴 — 문제가 한글 이름과 영문을 함께 쓰라고 했습니다.
  • 틀리는 꼴 (나)에 메시지 교환: 메시지를 자르지 않고 통째로 넘기는 방식입니다. (나)는 작은 조각으로 자릅니다.
  • 틀리는 꼴 (다)와 (라)를 바꿔 쓴 꼴: 길을 먼저 정해 차례가 지켜지는 쪽이 가상 회선입니다. 늦게 보낸 조각이 먼저 닿는 것은 길이 조각마다 달라서입니다.

3. 다음 URL을 부분으로 나눴습니다. (가)~(라) 부분의 이름을 영문으로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

http://                (가)
shop.example.com:8080  (나)
/item/view             (다)
?id=17&tab=info        (라)
#review
정답

받는 답: (가) Scheme · (나) Authority · (다) Path · (라) Query

(가)는 :// 앞의 프로토콜, (나)는 // 뒤 첫 / 앞의 조각으로 호스트 shop.example.com과 포트 8080을 묶은 부분입니다. 포트를 적었으므로 http의 기본 80번이 아니라 8080번으로 갑니다. (다)는 서버 안 자원의 자리, (라)는 ? 뒤에 이름=값을 &로 이은 값입니다.

  • 틀리는 꼴 (나)에 Host: 호스트는 그 안의 shop.example.com뿐입니다. 호스트와 포트를 묶어 부르는 부분의 이름은 Authority입니다.
  • 틀리는 꼴 (나)에 Port: 포트는 : 뒤의 8080뿐입니다.
  • 틀리는 꼴 (라)에 Fragment: # 뒤의 조각입니다. ? 뒤는 서버에 넘기는 값인 Query입니다.
  • 틀리는 꼴 (가)에 Protocol: 이 조각이 가리키는 것이 프로토콜이지만, URL 부분의 이름은 Scheme입니다.

4. 3번 URL을 브라우저에 넣어 문서를 받았습니다. 웹 서버가 받은 요청에 들어 있지 않은 조각을 쓰고, 그 부분의 이름을 영문으로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

정답

받는 답: #review — Fragment

# 뒤는 받은 문서 안에서 어느 위치로 갈지 브라우저가 쓰는 값이라, 요청을 보내기 전에 떼어 냅니다. 같은 문서 안에서 # 뒤만 바꾸면 서버에 새로 묻지 않고 그 위치로 옮겨 갑니다.

  • 틀리는 꼴 ?id=17&tab=info — Query: 서버가 어느 상품의 어느 칸을 보낼지 정하는 값이라 요청에 들어갑니다.
  • 틀리는 꼴 shop.example.com:8080 — Authority: 브라우저가 호스트로 IP 주소를 찾아 8080번으로 보내고, 요청에도 어느 서버에 보낸 것인지 적어 함께 보냅니다.

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

정보처리기사 목차로