오늘 끝나면
인터넷의 탄생
- ✓인터넷의 탄생의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 인터넷의이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
1969 아파넷 — 컴퓨터끼리 선으로 잇다. 패킷과 IP 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
개발 · Day 8 / 인터넷 · 웹
컴퓨터끼리
선을 잇다
지금까지는 컴퓨터 한 대 안의 이야기였음. 이제 컴퓨터끼리 연결함. 1969년 아파넷이 그 시작임. 글을 통째로 안 보내고 조각내 보내는 게 핵심임.
왜 망을 만들었나
1960년대 미국. 전화망은 한 곳이 끊기면 통화가 통째로 죽음. 군은 그게 무서웠음.
냉전기였음. 핵폭격 한 방 맞아도 안 죽는 통신망이 필요했음.
문제는 중앙 교환소. 거기 하나에 다 걸려 있으면 거기만 터뜨리면 끝임. 그래서 미 국방부가 돈을 댐.
1969년 ARPANET이 켜짐. 대학 컴퓨터 4대를 선으로 이은 게 전부. 첫 메시지는 LO. "LOGIN" 치다 두 글자 만에 시스템이 죽음. 그래도 컴퓨터끼리 처음 말을 건 순간임.
답은 중앙 없는 그물망. 어디가 끊겨도 다른 길로 돌아가면 됨. 이게 오늘날 인터넷의 DNA임.
대학 컴퓨터 4대 — 중앙 없는 그물망, 한 선 끊겨도 우회
글을 조각내 보낸다
핵심 아이디어는 패킷 교환임. 보낼 데이터를 작은 조각으로 쪼개 보내는 방식임.
옛 전화는 회선 교환임. 통화하는 동안 두 사람 사이 선 하나를 통째로 잡아둠. 말 안 해도 선은 계속 점유됨. 낭비가 큼.
패킷 교환은 다름. 글을 여러 조각(패킷)으로 쪼갬. 각 조각에 받는 사람 주소를 붙임. 조각은 제각각 다른 길로 가도 됨. 도착하면 번호 순서대로 다시 합침.
그래서 선 하나를 여러 사람이 나눠 씀. 한 길이 막히면 다른 길로 감. 효율적이고 안 끊김.
선을 통째로 잡는 대신, 조각내 나눠 보내고 도착해 합침
라우터가 길을 찾는다
패킷은 한 번에 목적지까지 안 감. 라우터라는 중간 우체국을 여러 번 거침.
라우터는 패킷에 적힌 주소를 보고 "이쪽이 더 가깝다"를 판단함. 그리고 다음 라우터로 넘김. 이 한 칸 이동을 홉(hop)이라 함. 목적지까지 보통 여러 홉을 거침.
오른쪽에서 직접 해보셈. 라우터를 눌러 고장 내면 패킷이 즉시 다른 길로 돌아감. 길 하나가 죽어도 망 전체는 멀쩡함. 1969년 군이 원했던 바로 그 성질임.
코드 보기
# 죽은 라우터를 피해 최단 경로 찾기 (BFS)
def find_path(dead):
q = ["나"]
prev = {"나": None}
while q:
cur = q.pop(0)
for nxt in neighbors(cur):
if nxt in dead: continue
if nxt not in prev:
prev[nxt] = cur
q.append(nxt)
return trace(prev, "친구")IP — 인터넷의 집주소
라우터가 길을 찾으려면 "어디로 보낼지"가 필요함. 그 주소가 IP임.
IP는 Internet Protocol의 줄임임. 인터넷에 연결된 모든 기기에고유 번호가 붙음. 집집마다 도로명 주소 있는 것과 같음.
예전 방식(IPv4)은 142.250.207.46처럼 점으로 나뉜 숫자 넷임. 각 칸은 0~255. 이 주소만 알면 지구 반대편 컴퓨터에도 패킷을 보냄.
근데 숫자는 외우기 어려움. 그래서 google.com 같은 이름을 IP로 바꿔주는 장치가 따로 있음. 그게 DNS임 — 인터넷의 전화번호부. 자세한 건 뒤 챕터에서.
모든 기기에 붙는 고유 번호 — 인터넷의 도로명 주소
인터넷 = 망들의 망
그럼 인터넷은 정확히 뭔가. 망들의 망임 — 작은 망 수없이 많은 걸 또 이은 것임.
집 와이파이도 작은 망 하나임. 회사 망, 카페 망, 통신사 망 다 따로 있음. 이 망들을 또 서로 이은 거대한 그물이 인터넷임. "인터넷 (inter-net)" 이름 자체가 "망과 망 사이"라는 뜻임.
그래서 인터넷엔 주인이 없음. 한 회사가 가진 게 아님. 약속(프로토콜)만 지키면 누구든 자기 망을 붙임. 이 개방성이 인터넷을 폭발적으로 키움.
여기까지가 "선으로 데이터 나르는 법"임. 다음은 이 선 위에 웹이 올라옴 — 매일 보는 웹페이지가 어떻게 태어났는지.
Q. 인터넷과 웹은 같은 말인가?
아님. 인터넷은 컴퓨터를 잇는 망 자체임(이번 챕터). 웹은 그 망 위에서 돌아가는 한 가지 서비스임 — 링크로 이어진 문서들(다음 챕터). 이메일·영상통화도 인터넷 위에 있지만 웹은 아님. 인터넷이 도로라면 웹은 그 위를 달리는 한 종류의 차임.작은 망들을 또 이은 거대한 그물 — 주인 없는 개방형 망