인터넷은 세상에서 가장 인기있는
컴퓨터 네트워크
다.
많은 사람들은 웹 브라우저를 사용해 인터넷 콘텐츠
에 접근할 수 있다.
이러한 웹의 대중성 때문에 인터넷 === 웹
이라고 생각하곤 하는데,
실제로 웹은 인터넷 응용 프로그램
의 하나이다.
인터넷이 운영체제라면, 웹은 그 위에서 동작하는 애플리케이션이라고 비유할 수 있겠다.
1960년대에 인터넷이 등장하고, 1990년대에 웹이 등장했다.
네트워크
팀버너스리는 컴퓨터 사이에 정보를 주고 받기 위해 최초로 웹 브라우저와 웹 서버를 개발했다.
웹 브라우저와 웹 서버 사이에서 사용되는 통신 규약을 HTTP
라고 한다.
그 과정에서 웹 페이지의 정보를 담고 있는 언어가 HTML
이다.
인터넷에는 세 가지 핵심 부분이 있다. 한번 읽어보자
광케이블 인터넷
, 무선 인터넷 서비스
최초의 네트워크는 ARPANET에 의해 시작되었고, 이때 디자인된 TCP/IP
는 현대 인터넷의 기초가 되었다.
No one runs the internet.
인터넷
은 분산 네트워크의 네트워크
이다.
기관은 자체 네트워크를 운영하고, 상호 연결을 기반으로 서로 트래픽을 교환한다.
인터넷이 작동하도록 하는 공유 기술 표준은 IETF
에서 관리하며,
이 IETF
는 누구나 참석하고 제안할 수 있는 개방형 조직이다.
ICANN
는 도메인 이름과 IP 주소 배포를 담당하지만,
누가 인터넷에 연결할지 어떤 종류의 데이터를 보내는 지 제어하는 것은 아니다.
초기 인터넷 엑세스는 물리적 케이블(보통 이더넷 케이블)을 통해 이루어졌다.
최근에는 무선 인터넷 엑세스가 보편화되었다.
셀
로 나누는 방식으로 작동한다.2000년대 초반에 대중화된 컴퓨팅 접근 방식
서버에 파일을 저장하고 인터넷을 통해 서버를 소프트웨어에 제공함으로써
사용자에게 간단하고 안정적인 컴퓨팅 경험을 제공한다.
Google docs
Google 서버에 저장된 문서를 모든 컴퓨터에서 사용할 수 있다.
Gmail
및 Hotmail
, Dropbox
, Apple의 iCloud
등
파일을 가지고 다지니 않아도 되는 클라우드 컴퓨팅 서비스
Amazon Web Services
자체 서버를 구매하고 운영하지 않아도 된다. 시간당 서버를 임대할 수 있다.
웹사이트 생성을 위한 낮은 진입 장벽. 빠르게 용량을 확장할 수 있다.
패킷 : 인터넷을 통해 전송되는 정보의 기본 단위
정보를 작게 분할하면 네트워크 용량을 보다 효율적으로 사용할 수 있다.
헤더
패킷의 길이
, 소스
및 대상
, 체크섬
(전송중 패킷 손상 감지) 등을 포함해 패킷이 대상에 도달하는 데 도움이 되는 정보가 포함되어 있다.
실제 데이터
인터넷 라우터에 문제가 발생하면 패킷을 폐기함으로써 처리할 수 있다.
이러한 방식은 인터넷의 핵심 인프라를 단순화해 낮은 비용으로 높은 성능을 제공한다.
인터넷에 정보를 게시하는 인기 있는 방법 (이 역시 팀버너스리가 만들었다)
팀버너스리의 개발 일기..
웹 브라우저는 사용자가 웹 사이트를 다운로드하고 볼 수 있도록 하는 컴퓨터 프로그램이다.
데스크톱 컴퓨터, 태블릿 및 휴대폰에서 사용할 수 있다.
널리 사용되는 최초의 브라우저는 Mosaic였으며, 이후 Microsoft의 Internet Explorer
에 의해 가려졌다. Mosaic팀은 Netscape
브라우저를 출시했으며, Netscape
브라우저의 오픈 소스 버전은 Firefox
브라우저가 되었다.
Apple은 2003년 Safari
브라우저를 출시했으며 Google은 2008년 Chrome
브라우저를 출시했다.
SSL(Secure Sockets Layer)의 약어인 SSL은 웹 사용자가 인터넷을 통해 전송하는 정보의 개인 정보를 보호할 수 있도록 하는 암호화 기술 제품군이다.
Gmail.com
처럼 보안 웹사이트를 방문하면 URL 옆에 자물쇠가 표시되어 사이트와의 통신이 암호화되었음을 나타낸다.
자물쇠
- 주고 받는 정보를 제 3자가 읽을 수 없다는 신호
- SSL은 데이터를 수신자만 해독할 수 있는 코딩된 메시지로 변환하여 보안을 수행한다.- 제 3자는 통신에 대해 무작위 문자열을 보게 된다.
SSL은 Netscape에 의해 도입되었으며, 초기에는 온라인 뱅킹 등에만 사용되었으나 Google, Yahoo, Facebook은 웹사이트와 온라인 서비스에 SSL 암호화를 사용했다.
최근 SSL을 보편적으로 사용하려는 움직임이 있었고,
2015년에 Mozilla는 Firefox
브라우저의 향후 버전에서 SSL 암호화의 부재를 보안 결함으로 처리하여 모든 웹사이트의 업그레이드를 장려할 것이라고 발표했다.
DNS(Domain Name System)는 기억하기 어려운 IP주소 대신 브라우저에
google.com
등을 입력해서 엑세스 할 수 있는 이유이다.
웹 브라우저는 Name Server(Domain Name Server)에 접속해서도메인별 IP
를 응답받아 해당 IP의 컴퓨터에 접속한다.즉, 도메인을 구입해서 네임서버에 등록해야 도메인을 사용할 수 있다!
시스템은 계층적이다.
.com
도메인은 Verisign이라는 회사에서 관리한다.google.com
과 같은 하위 도메인을 할당하며,mail.google.com
, maps.google.com
과 같은 하위 도메인을 만들 수 있다.인기있는 웹 사이트의 도메인 이름은 범죄에 악용될 우려가 있다.
DNS 보안을 강화하기 위한 DNSSEC
라는 표준이 있지만 보편적이지 않다.
도메인 이름 시스템(DNS)은
ICANN(Internet Corporation for Assigned Names and Numbers)
에서 관리한다.
도메인 이름에는 두 가지 유형이 있다.
.com
, .edu
, .org
및 .gov
와 같은 일반 최상위 도메인(gTLD) : 일반적으로 이 도메인에 대한 권한은 사설 조직에 있다..us
, 한국의 경우 .kr
. 이러한 도메인은 각 국가에서 관리하는데, .tv
, .io
등 일부는 국가 밖에서도 널리 사용된다.먼저, 인터넷은 거대한 네트워크라고 했다.
거대한 네트워크를 이용해 컴퓨터와 컴퓨터가 연결되기 위해 먼저,
인터넷에 연결된 각 컴퓨터에는 서로를 식별할 수 있는 고유한 주소(IP)가 필요하다.
통신을 위해 각각의 컴퓨터, 장비가 가지고 있는 고유한 주소
주소를 통해 인터넷에서 서로를 식별할 수 있다.ICANN
은 서로 다른 조직에 다른 IP 주소를 배포한다.
ISP(인터넷 서비스 공급자)
를 통해 인터넷에 연결하기LAN(Local Area Network)
에서 인터넷에 연결하기DHCP(Dynamic Host Configuration Protocol)
서버에서 임시 IP주소 얻기IP 주소 확인하기 : 터미널에서 ping 도메인이름으로 확인할 수 있다.
IPv4 : 0.0.0.0 ~ 255.255.255.255 (약 42억)
컴퓨터, 스마트폰, 사물인터넷이 모두 인터넷을 사용하기 때문에 IP가 부족하다!
IPv6
의 등장 : 새로운 주소체계 (2^128)Private IP
: 하나의 한정된 공인 IP 안에 여러 개의 IP를 만든 체계Private IP
에는 사용자들이 직접 접속할 수 없다.
포트 : 6만 5천개 정도의 가상의 문
인터넷 서비스 | 일반적인 포트 번호 |
---|---|
FTP | 20/21 |
Telnet | 23 |
SMTP | 25 |
HTTP | 80 |
HTTPS | 443 |
MySQL | 3306 |
포트 포워딩
공유기(Public IP
)가 컴퓨터(Private IP
)로 토스해주는 것
즉, Public IP
에게 Private IP
로 접속할 방법을 지정하는 것
외부에서 불필요하게 접근하는 것을 막아주는 보안성
Dynamic IP
(유동 IP) : 통신사에서는 사용되지 않는 IP를 회수하고, 재사용시 새로 부여한다. 때문에 가정에서 서버를 운영하는 것은 적절치 못하다. (고정 IP 필요, 네임 서버 정보와 IP 정보가 다르다.)DDNS
: 네임서버에 계속해서 IP를 전달(도메인와 호스트의 IP를 지속적으로 동기화)해준다.고유한 주소를 어떻게 얻는지를 살펴보았다. 그렇다면 그 주소로 어떻게 통신을 할까?
메시지는 전자 신호로 번역되어 인터넷을 통해 전송된 다음 다시 텍스트로 번역되어야 한다.
이것이 프로토콜 스택
으로 이루어진다.
인터넷에서 사용되는 프로토콜은 두 가지 주요 통신 프로토콜로 이루어져 있어 TCP/IP 프로토콜 스택
이라고 한다.
프로토콜 계층 | 설명 |
---|---|
애플리케이션 프로토콜 계층 | WWW, 이메일, FTP 등과 같은 애플리케이션에 특정한 프로토콜 |
전송 제어 프로토콜(TCP) 계층 | TCP는 포트 번호를 사용하여 컴퓨터의 특정 애플리케이션에 패킷을 보낸다 |
인터넷 프로토콜(IP) 계층 | IP는 IP 주소를 사용하여 패킷을 특정 컴퓨터로 보낸다. |
하드웨어 계층 | 이진 패킷 데이터를 네트워크 신호로 변환하고 또 그 반대로 변환한다. (예: 이더넷 네트워크 카드, 전화선용 모뎀 등) |
메시지를 보내는 과정은 다음과 같다.
1. 메시지는 컴퓨터의 프로토콜 스택 맨 위에서 시작해 아래쪽으로 동작
한다.
2. 메시지가 길면 통과하는 각 스택 계층에서 더 작은 데이터 청크(패킷)로 나누어 전송
한다.
3. 패킷은 애플리케이션 계층을 거쳐 TCP 계층
으로 진행된다. 이 때 각 패킷에는 포트 번호가 할당된다.
4. TCP 계층을 거쳐 패킷은 IP 계층
으로 이동한다. 여기서 각 패킷이 전송될 대상의 IP를 수신
한다.
5. 이제 메시지 패킷에 포트 번호와 IP 주소가 있으므로 인터넷을 통해 전송될 준비가 완료되었다. 하드웨어 계층
에서 텍스트로 된 패킷을 전자 신호로 변환하고 전화선을 통해 전송한다.
6. 전화선의 다른 쪽 끝에는 ISP
가 인터넷에 직접 연결되어 있다. ISP 라우터
는 각 패킷의 대상 주소를 검사하고 보낼 위치를 결정한다.
7. 패킷은 대상 컴퓨터에 도달해, 대상 컴퓨터의 프로토콜 스택 맨 아래에서 시작해 위쪽으로 동작
한다.
8. 패킷이 스택을 통해 위쪽으로 이동하면 보내는 컴퓨터의 스택이 추가했던 모든 라우팅 데이터(IP주소, 포트 번호 등)가 패킷에서 제거
된다.
9. 데이터가 스택의 맨 위에 도달하면 패킷의 원래 형식 데이터로 재조립
된다!
실제 인터넷이 물리적으로 연결된 상태를 그려보자.
컴퓨터를 모두 연결하려면 너무 많은 연결이 필요하다. (예를 들어, 10대의 컴퓨터에 45개의 연결 필요)
그래서 네트워크의 각 컴퓨터는 라우터
라고하는 특수한 소형 컴퓨터에 연결된다.
라우터에는 주어진 컴퓨터에서 보낸 메시지가 올바른 대상 컴퓨터에 도착하는지 확인하는 한 가지 작업만 수행한다.
컴퓨터를 라우터
에 연결하고, 라우터
에서 라우터
로 무한히 확장할 수 있다.
이렇게 연결된 거대한 네트워크를 전화 시설과 연결하기 위해 모뎀이라는 특수 장비가 필요하다.
모뎀은 네트워크 정보를 전화 시설에서 처리할 수 있는 정보로 바꾸며 그 반대도 가능하게 해준다.
전화 시설에 연결하고 나서, 네트워크에서 네트워크로 메시지를 보내기 위해 인터넷 서비스 제공 업체(Internet service Provider, ISP)
에 연결해야 한다.
몇몇 특수한 라우터를 제외하고, 다른 ISP의 라우터에 엑세스 할 수 있게 해준다.
즉, 네트워크의 메시지는 ISP 네트워크의 네트워크를 통해 대상 네트워크로 전달된다.
패킷이 전화 네트워크와 ISP
의 로컬 장치를 통과한 후,
패킷은 ISP
의 백본이나 ISP
가 대역폭은 구입하는 백본으로 라우팅된다.
이때, 패킷은 목적지의 주소가 대상 컴퓨터의 주소인 컴퓨터를 찾을 때까지 여러 라우터와 여러 백본, 전용 회선 및 기타 네트워크를 통해 이동한다.
패킷이 인터넷을 차지하는 정확한 경로를 알고 있을까? :
Traceroute
프로그램
traceroute는 주어진 인터넷 목적지로 가는 경로를 보여준다.
패킷이 목적지에 도달하기 위해 통과해야 하는 모든 라우터, 컴퓨터 및 기타 인터넷 엔티티의 목록을 보여준다.
상호 연결되는 대규모 네트워크(Network Service Provider, NSP)
로 구성된다.
대형 NSP : UUNet, CerfNet, IBM, BBN Planet, SprintNet, PSINet ...
이러한 네트워크들은 서로 peering하며 패킷 트래픽을 교환한다.
각 NSP
는 3개의 NAP(Network Access Point)
에 연결해야 한다.
NAP
에서 패킷 트래픽은 한 NSP
의 백본에서 다른 NSP
의 백본으로 이동할 수 있다.
NAP
는 수도권 지역 교환이나 MAE
와 상호 연결되어 있다. (MAE
는 NAP
와 같은 역할을 하지만 개인 소유다.)
NAP
는 원래 인터넷 상호 교환 지점이었다. NAP
와 MAE
를 모두 Internet Exchange Points(IX)
라고 한다.
NSP
는 ISP
및 소규모 대역폭 공급자 등 소규모 네트워크에 대역폭을 판매한다.
어떤 컴퓨터도 다른 컴퓨터가 어디에 있는지 알지 못하며, 패킷이 모든 컴퓨터에 전송되지 않는다.
패킷을 목적지로 보내는 데 사용되는 정보는 인터넷에 연결된 각 라우터가 보관하는 라우팅 테이블
에 포함된다.
라우터는 패킷 스위치
다.
라우터는 일반적으로 네트워크 간에 연결
되어 패킷을 라우팅한다.
각 라우터는 하위 네트워크가 사용하는 IP 주소를 알고 있다.
라우터는 라우터 상위의 IP 주소를 알지 못한다.
커다란 NSP
백본이 NAP
에서 연결되고, 그 아래는 여러 개의 하위 네트워크가 있다.
패킷이 라우터에 도착하면 라우터는 발신 컴퓨터의 IP 프로토콜 계층
에서 배치된 IP 주소를 검사한다.
라우터는 라우팅 테이블
을 확인하고, IP 주소를 포함하는 네트워크가 발견되면 패킷이 해당 네트워크로 전송된다.
IP 주소가 포함된 네트워크를 찾을 수 없으면 위쪽(NSP 백본)으로 라우팅된다.
DNS : 인터넷에서 컴퓨터 이름과 해당 IP 주소를 추적하는
분산 데이터베이스
웹 브라우저에 웹 주소를 입력하면 브라우저는 DNS 서버에 연결하여 입력한 도메인 이름에 대한 IP 주소를 얻고 대상 컴퓨터에 연결해 웹 페이지를 요청한다.
도메인 이름이 있는 DNS 서버를 찾을 때까지 상위 계층으로 리디렉션된다.
인터넷에서 가장 널리 사용되는 서비스 중 하나는 WWW(World Wide Web)
이다.
웹을 작동시키는 애플리케이션 프로토콜은 HTTP(Hypertext Transfer Protocol)
이다.
DNS
에 연결해 웹 서버에 해당하는 IP 주소를 검색한다.HTTP 요청
을 프로토콜 스택
을 통해 보낸다.페이지
를 보낸다. 서버가 요청된 페이지를 찾을 수 없으면 HTTP 404 오류 메시지
를 보낸다.파싱
(구문 분석)하고 웹 페이지를 완성하는 데 필요한 다른 페이지 요소(이미지, 애플릿 등)를 찾는다. HTTP 요청
을 수행한다.로드
된다.Telnet을 사용해
HTTP
를 사용한 웹 페이지 검색 해보기
일반적으로 쓰이는 또 다른 인터넷 서비스는 전자 메일
이다. 전자 메일에서 쓰는 애플리케이션 수준 프로토콜은 SMTP(Simple Mail Transfer Protocol)
이다.
SMTP HELO
명령을 보낸다.SMTP QUIT
명령을 보낼 때까지 계속 된다. 그러면 서버가 종료되고 연결이 끊어진다.애플리케이션이 인터넷의 다른 컴퓨터에 연결하면 특정 애플리케이션 계층 프로토콜을 사용
하여
보내는 메시지가 스택을 통해 TCP 계층으로 전달
된다.
TCP
는 포트 번호를 사용해 애플리케이션이 프로토콜을 대상 컴퓨터의 올바른 프로그램으로 라우팅하는 역할을 한다.
ex. 이메일을 읽으면서 웹 서핑을 하는 것 : 두 애플리케이션(웹 브라우저와 메일 클라이언트)이 서로 다른 포트 번호를 사용했다.
TCP 계층
은 위에서 애플리케이션 계층 프로토콜 데이터를 수신하면 관리 가능한 청크
로 분할한 다음 각 청크
에 특정 TCP 정보가 포함된 TCP 헤더
를 추가한다. TCP 헤더에 포함된 정보에는 데이터를 보내야 하는 애플리케이션의 포트 번호가 포함된다.TCP 계층
이 그 아래에 있는 IP 계층에서 패킷을 수신하면 TCP 계층은 패킷에서 TCP 헤더 데이터를 제거
하고 필요한 경우 일부 데이터 재구성
을 수행한 다음 TCP에서 가져온 포트 번호를 사용해 패킷을 올바른 응용 프로그램에 보낸다.TCP 헤더
TCP
는 IP
에 대해 아무 것도 모른다.
TCP의 역할은 애플리케이션 수준 데이터를 애플리케이션에서 애플리케이션으로 안정적으로 가져오는 것이다.
컴퓨터에서 컴퓨터로 데이터를 가져오는 작업은 IP의 작업이다.
TCP
와 달리 신뢰할 수 없다.TCP
와 달리 IP
는 패킷이 목적지에 도달하는지 여부를 신경쓰지 않는다.
IP
는 연결 및 포트 번호에 대해 알지 못하며, IP
의 역할은 단지 패킷을 다른 컴퓨터에 보내고 라우팅하는 것이다.
IP 패킷
은 독립적인 엔터티이며 순서가 맞지 않거나, 목적지에 도착하지 않을 수 있다. (TCP
의 역할)
IP
와 TCP
의 공통점은 데이터를 수신하고 자신의 헤더 정보를 TCP
데이터에 추가하는 방식 뿐이다.
IP 헤더
IP 헤더
에서 보내는 컴퓨터와 받는 컴퓨터의 IP 주소
를 볼 수 있다.
보내는 컴퓨터에서 애플리케이션 계층
, TCP 계층
, IP 계층
을 거친 패킷의 모습은 이렇다.
1. 애플리케이션 계층
데이터는 TCP 계층
에서 분할되고
2. TCP 계층
에서 TCP 헤더
가 추가되고
3. 패킷은 IP 계층
으로 진행되어 IP 헤더
가 추가된 다음
4. 완료된 패킷
이 인터넷을 통해 전송된다.
The internet, explained
How Does the Internet Work?
생활코딩 : 인터넷과 웹의 역사
생활코딩 : 인터넷
MDN : 인터넷은 어떻게 동작하는가?
엌ㅋ 반도 모르겠네요
정리 감사합니다