
인터넷은 세상에서 가장 인기있는
컴퓨터 네트워크다.
많은 사람들은 웹 브라우저를 사용해 인터넷 콘텐츠에 접근할 수 있다.
이러한 웹의 대중성 때문에 인터넷 === 웹이라고 생각하곤 하는데,
실제로 웹은 인터넷 응용 프로그램의 하나이다.

인터넷이 운영체제라면, 웹은 그 위에서 동작하는 애플리케이션이라고 비유할 수 있겠다.
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 : 인터넷은 어떻게 동작하는가?
엌ㅋ 반도 모르겠네요
정리 감사합니다