구보현 블로그

인터넷이 작동하는 방법

20180901

와이어, 케이블 및 WIFI

인터넷은 어떻게 정보를 운반할 수 있을까?

  • 인터넷은 이진수를 운반한다.
  • BITS 는 한 쌍으로 이루저여 있다. 꺼짐 켜짐, 예 아니오와 같은
  • BITS 가 두 가지 상태가 되는 것이 가능하므로 그것을 이진코드라고 부른다.

8bits => 1byte

1024bytes => 1kilobyte

1024kilobytes => 1megabyte

  • 인터넷에 있는 모든 것들은 비트들로 나타내어지고 운송된다.

어떻게 0 과 1 을 보낼 수 있을까?

  • 우리가 물리적으로 0 이나 1 을 보내는 것은 아니다.
  • 전선과 전파로 이동한다.
  • 전기, 빛 그리고 전파를 통해 bit 를 보낸다.
  • 사람이 1 초에 엄청난 수의 비트들을 보낼 수는 없지만, 기계는 가능하다.

대역폭?

  • 대역폭(bandwidth)은 보통 초 단위인 일정한 시간 동안 우리가 실제로 보낼 수 있는 비트의 개소를 의미하는 비트율을 통해 측정된다.
  • 또다른 측정 방법은 대기시간이다. 비트가 이곳에서 저곳으로 이동할 때 걸리는 시간이다.

어떤 케이블로 메시지를 보낼까?

  • 광섬유 케이블을 이용하여 비트를 광선의 형태로 이곳에서 저곳으로 보낼 수 있다.
  • 광섬유 케이블은 유리로 만든 실이다.
  • 케이블을 통해 광선을 보내면 빛은 반대쪽에서 수신할 때까지 케이블 선 안에서 계속 위아래로 반사된다.
  • 반사되는 각도에 따라 실제로 모두 빛의 속도로 움직이는 여러 비트를 보낼 수 있다.

신호가 얼마나 멀리갈 수 있을까?

  • wireless

  • 전파를 사용한다.

  • 기계들은 실제로 1 과 0 들을 서로 다른 주파수의 전파들로 번역을 해야 한다.

  • 수신하는 기계들은 그 과정을 뒤집어서 컴퓨터에 있는 이진법으로 다시 변환한다.

  • 커피숍에서 인터넷을 하면 무선 통로를 통해 비트들이 보내진다. 그러나 짧은 거리만 이동할 수 있기 때문에

  • 그 다음에는긴 거리를 이동하기 위해 실제 물리적으로 존재하는 전선으로 이동한다.

IP 주소와 DNS

인터넷은 네트워크의 네트워크이다.

  • 우리가 인터넷에 주소를 치면, 인터넷 서비스 사업자(ISP)에 연결된다. ISP 는 서로 연결된 수많은 네트워크를 통해서 전세계의 수없이 많은 전자기기들과 연결시켜 준다.

  • 인터넷은 디자인 철학이고, 그 구조는 일련의 프로토콜로 표현된다.

  • 프로토콜은 각각의 부분들에 잘 알려진 규칙들과 표준들을 말한다.

IP (Internet Protocol)

  • IP 형식
    • 8 비트 4 개, 32 비트
    • 일반적으로 디바이스의 네트워크가 어느나라, 어느지역의 것인지 확인한다.
    • 그 다음은 하위 네트워크
    • 마지막으로 특정한 전자기기의 주소가 온다.
  • 이러한 형의 IP 주소를 IPv4 라고 부른다.
  • 80 년대 유행하였다. 그러나 40 억개의 고유한 주소도 부족해졌다.
  • 그래서 현재는 하나의 주소가 128 비트를 사용하는 IPv6 를 사용한다.

DNS (Domain Name System)

  • DNS 라는 시스템은 IP 주소를 www.example.com 과 같이 대응되는 인터넷 주소와 연결해준다.
  • 하나의 DNS 서버가 모든 요구사항을 처리할 수는 없다.
  • DNS 서버를 분산된 계층구조로 연결하고 주요한 주소들을 나누어 맡도록 지역을 나눈다. .org .com .net 처럼

DNS Spoofing

  • DNS 서버에 해커가 접속해서 인터넷 주소를 잘못된 아이피 주소와 연결되도록 바꾸어 놓는 것을 말한다.

패킷, 라우터 및 신뢰성

어떻게 모든 정보들이 안정적으로 전달될까?

인터넷에서 데이터가 전달되는 방식

패킷

  • 인터넷상의 정보가 한 컴퓨터에서 다른 컴퓨터로 전달 될 때 패킷이라는 형태로 전달된다.

패킷이 전달되는 과정

  • 정보의 크기는 제한이 있을 수밖에 없다.
  • 여러 개의 패킷으로 이동한다.
  • 각 패킷은 어디서 왔고 어디로 가는 지에 대한 주소를 가지고 있다.

라우터

  • 라우터라고 불리는 특별한 컴퓨터는 네트워크 상에서 패킷이 원할하게 움직일 수 있도록 통제하고 관리하는 역할을 맡는다.
  • 한 길이 복잡해지면 나머지 패킷들은 다른 경로를 택한다.
  • 인터넷 프로토콜로 각각의 라우터는 패킷을 보내는데 여러 개의 경로를 가지고 있다. - 그리고 각 정보마다 도착하는 곳의 ip 주소를 기반으로 가장 합리적인 길을 선택해서 패킷을 전달한다.
  • 여기서 합리성은 비용이 아니라, time, politics, relationship
  • 경로가 여러 개 있다는 것은 패킷을 보내는 도중 문제가 생겨도 괜찮을 수 있다는 뜻이다.

패킷을 모두 다 전달받지 못한다면?

  • 100%가 정확하게 도착했다면 어떻게 확인할 수 있을까.

  • TCP (Transmission Control Protocol): 보내고 받는 모든 패킷으로 된 데이터를 관리한다.

  • 패킷이 도착하면 TCP 는 목록을 보고 확인해서 각각의 패킷이 왔는지 오지 않았는지를 체크한다.

  • 모든 패킷이 왔으면 작업이 완료된다.

  • 안왔으면 파일을 완성하지 않고 다시 보낸다. 패킷을 받았다면 파일을 완성한다.

  • 확장이나 축소가 가능하다. 문제가 생겼을 떄 더 많은 라우터를 설치할 수 있다.

  • 라우터가 많으면 많을수록 더 안정성을 확보할 수 있다.

HTTP 와 HTML

HyperText Transfer Protocol

  • **URL(Uniform Resource Locator)**을 입력하면
  • 서버라는 다른 컴퓨터와 대화를 시작한다.
  • 서버에게 웹사이트를 묻고(Request), 서버는 HTTTP 라는 언어로 여러분의 컴퓨터에게 응답(Response)을 되돌려 준다.
  • HTTP 는 어떤 컴퓨터가 다른 컴퓨터에게 문서를 요청 할 때 쓰이는 것이다.
  • get document-name
  • get/login 로그인하는데 필요한 문서를 주라는 의미이다.
  • 텀블러에세 get/login 을 요청하면 텀블러가 html code 를 보내준다.
  • HTML, HyperText Markup Language
  • 그러나 이미지나 비디오는 자신의 url 을 가지고 있다. HTML 에 없기 때문에, 요쳥을 해야 얻을 수 있는 것들이다.
  • 브라우저는 이런 자료들 각각에 http 요청을 보내서 그들이 도착하면 화면에 보여준다.
  • 정보를 보내는 것도 가능하다. POST
  • 쿠키 데이터를 같이 전송하고, 여러분이 브라우저를 통해 보고 저장할 수 있도록 한다.
  • 쿠키는 웹사이트가 여러분이 누구인지를 기억하는 유일한 수단이기 때문이다.
  • 다음 접속했을 때는 id 넘버와 요청을 걸합하여 텀블러 서버에 보낸다.

신뢰성

인터넷은

  1. 완전히 오픈되어있고
  2. 연결되어있고
  3. 평범한 글자로 정보가 전달된다.
  • 그러나 안전한 웹사이트들은 웹브라우저가 SSL(Secure Socket Layer) 나 TLS(Transport Layer Security) 같은 것을 이용하는 보안채널을 통해 소통하도록 함으로써 해킹을 방지하고 있다.

https

  • 보안된 채널로 연결시키려고 하면 웹사이트는 전자인증이라는 것을 제공하는데
  • 이 사이트는 허위 사이트가 아니라는 것을 보증하는 id 카드 같은 것이다.
  • digital certificate 는 인증 기관에 의해 발급된다.
  • 인증 기관은 정부가 id 나 여권을 발급할 수 없는 것처럼
  • 웹사이트들의 진위성을 확인하고 그들에 대한 인증서를 발급하는 역할을 한다.

HTTP & DNS는 웹상에 존재하는 html, 미디어 파일과 같이 웹상에 존재하는 것들의 송수신을 관리한다.

그리고 이것을 가능하게 한 핵심적인 기술은 TCP/IP 와 라우터 네트워크라는 작은 단위로 정보를 쪼개서 전달하는 것이다. 이런 단위들은 0 과 1 의 이진수 배열로 이루어져 있고 전선이나 광섬유 무선 네트웍을 통해 전달된다.

  • HTTP & DNS
  • TCP/IP & ROUTING
  • WIRES, CABLES, WIFI

암호화 및 공개 키

  • 인터넷은 개방된 공공 시스템이다.

  • encryption scrambling or changing a message to hide it

  • decryption unscrambling the message or make it readable

  • key 는 읽는 사람이 비밀 메시지를 풀 수 있게 해준다.

  • 오늘날은 256bit 키를 써서 암호화되어 있다.

  • 더 긴 키 를 사용하는 것은 암호화는 더 어렵게 하지 않고 해독 가능성을 기하급수적으로 증가시킨다는 것이다.

  • 보내는 사람과 받는 사람이 암호화 해독을 위해 같은 키를 사용한다면 이는 대칭 암호라고 불린다.

  • 시저암호와 같은 암호를 사용하기 위해서는 두 사람이 미리 개인적으로 만나서 키를 약속해야 한다.

  • 컴퓨터 두 대가 만나 비밀 키에 대해 약속하는 것이 불가능하다.

  • asymmetric encryption 비대칭키를 이용한다.

  • 누가나 공유하는 공개키

  • 공유되지 않는 개인 키를 포함한다.

  • 공개키는 이를 이용해 암호화를 한다. 모든 사람이 사용할 수 있다.

  • 그러나 secret message 는 오직 개인 키에 대한 접근이 가능하다.

사이버 보안 및 범죄

  • 프로그램이 설치되는 의도를 속여서 설치하도록 유도한다.

  • 보트넷으로도 알려진 디지털 군대를 이용해서 웹사이트들을 공격하고 없앨 수 있다.

  • 이런 종류의 공격은 분산 서비스 거부, 즉 디도스라고 부른다.

  • Distributed Denial Of Service

  • 해커들이 웹사이트에 한꺼번에 요청을 보내 과부하를 만드는 것이다. 한번에 많은 컴퓨터로부터 공격이 들어오는 것이다.

  • 피싱

  • 많은 양의 스팸 이메일을 보내기

  • 피싱은 로그인해달라는 진짜 같은 이메일을 보내지만 이메일을 클릭하게 되면 실제로는 가짜 웹사이트로 접속된다.

  • 보안 설계나 소프트웨어에 있다고 생각할 수도 있지만 해킹당했을 때의 90%는 보안 문제가 아니라,인간의 작은 실수로 인해 범죄를 당하게 된다.