<인터넷은 어떻게 작동할까?>
- TLDR : 다양한 프로토콜에 따라 패킷을 이동하는 라우터
##프로토콜이란?
: 프로토콜은 컴퓨터가 네트워크를 통해 서로 통신하는 방법을 지정하는 일련의 규칙입니다.
- 전송 제어 프로토콜에는 한 컴퓨터가 다른 컴퓨터로 데이터를 보내는 경우 대상 컴퓨터에서 누락된 데이터가 있는지 원본 컴퓨터에 알려 원본 컴퓨터가 다시 보낼 수 있도록하는 규칙이 있습니다.
- 또는 그만큼 인터넷 프로토콜 컴퓨터가 보내는 데이터에 주소를 첨부하여 정보를 다른 컴퓨터로 라우팅하는 방법을 지정합니다.
##패킷이란?
: 인터넷을 통해 전송되는 데이터를 메시지라고 합니다. 메시지가 전송되기 전에 먼저 패킷이라는 여러 조각으로 분할됩니다.
- 이러한 패킷은 서로 독립적으로 전송됩니다.
- 일반적인 최대 패킷 크기: 1000자에서 3000자 사이
- 인터넷 프로토콜은 메시지 패킷화 방법을 지정합니다.
##패킷 라우팅 네트워크란?
: 원본 컴퓨터에서 대상 컴퓨터로 패킷을 라우팅하는 네트워크입니다. 패킷은 이동 중에 여러 라우터를 통해 이동합니다. (인터넷은 라우터라고하는 특수 컴퓨터의 방대한 네트워크로 구성됩니다.)
** 라우터의 역할
: 원본에서 대상으로 패킷을 이동하는 방법을 아는 것입니다.
** 홉
: 패킷이 한 라우터에서 다음 라우터로 이동할 때 이를 홉이라고합니다.
** 인터넷 프로토콜
- 메타 데이터를 포함하는 패킷의 지정된 공간인 패킷 헤더에 네트워크 주소를 첨부하는 방법을 지정합니다.
- 라우터가 헤더의 주소를 기반으로 패킷을 전달하는 방법을 지정합니다.
##이 인터넷 라우터는 어디에서 왔을까? 누가 소유할까?
- 이 라우터는 1960년대에 정부가 재난 발생시 정보에 액세스하고 정보를 배포할 수 있도록 분산된 컴퓨터 네트워크를 목표로 하는 군사 프로젝트인 ARPANET으로 시작되었습니다. 그 이후로 많은 ISP (인터넷 서비스 제공 업체) 회사 에서 이러한 ARPANET라우터에 라우터를 추가했습니다.
- 인터넷 라우터는 단일 소유자가 아니라 여러 소유자가 있습니다. 초기에는 ARPANET과 관련된 정부 기관 및 대학, 이후에는 AT&T 및 Verizon과 같은 ISP 기업이 있었습니다.
- 누구도 이 모든 것을 소유하지 않습니다.
##패킷이 항상 순서대로 도착할까? 그렇지 않은 경우 메시지는 어떻게 재조립될까?
원인 : 이후 패킷이 이전 패킷보다 대상으로 가는 더 빠른 경로를 찾을 때 발생합니다.
- 전송 제어 프로토콜은 이 정보를 사용하여 대상에서 메시지를 재구성합니다.
##패킷이 항상 목적지로 이동할까?
- 인터넷 프로토콜은 패킷이 항상 목적지에 도착한다고 보장하지 않습니다. (패킷손실)
원인: 라우터가 처리할 수 있는 더 많은 패킷을 수신할 때 발생합니다.
**전송 제어 프로토콜
- 재전송을 수행하여 패킷 손실을 처리합니다.
- 이는 대상 컴퓨터가 수신 및 재구성 한 메시지의 양을 나타내는 확인 패킷을 주기적으로 원본 컴퓨터로 다시 보내도록 함으로써 수행됩니다.
- 대상 컴퓨터에서 누락된 패킷이 있음을 발견하면 원본 컴퓨터에 누락된 패킷을 다시 보내도록 요청하는 요청을 보냅니다.
- 두 컴퓨터가 전송 제어 프로토콜을 통해 통신할 때 두 컴퓨터간에 TCP 연결이 있다고 말합니다.
##이러한 인터넷 주소는 어떻게 생겼을까?
이러한 주소를 IP 주소라고하며, 두 가지 표준이 있습니다.
- IPv4 -ex) 212.78.1.25
- IPv4는 2³² (약 40 억)의 가능한 주소 만 지원하기 때문에 Internet Task Force는 IPv6라는 새로운 주소 표준을 제안했습니다.
- IPv6
- ex) 3ffe : 1893 : 3452 : 4 : 345 : f345 : f345 : 42fc -2¹²⁸ 가능한 주소를 지원하여 훨씬 더 많은 네트워크 장치를 허용합니다. -이는 2017년 현재 인터넷에 있는 80 억 개 이상의 네트워크 장치보다 훨씬 더 많을 것입니다.
##IPv4 주소가 약 40 억 개에 불과하다면 어떻게 인터넷에 80 억 개 이상의 네트워크 장치가있을 수 있을까?
- Public ip, private ip가 있기 때문입니다.
public ip 주소
- 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다.
- 공인 IP는 전세계에서 유일한 IP 주소를 갖는다.
- 공인 IP 주소가 외부에 공개되어 있기에 인터넷에 연결된 다른 PC로부터의 접근이 가능하다.
private ip 주소
- 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소이며, 로컬 IP, 가상 IP라고도 한다.
- 일반적으로 192.168.xx 또는 172.16.x.x 또는 10.x.x.x 형식, 여기서 x는 1에서 255 사이의 숫자입니다.
- private IP 주소는 DHCP (Dynamic Host Configuration Protocol)에 의해 할당됩니다.
**NAT (Network Address Translation) 프로토콜
: private IP 주소를 public IP 주소에 매핑하는 프로토콜을 NAT (Network Address Translation) 프로토콜이라고 합니다. 이것이 가능한 IPv4 주소가 40 억 개에 불과한 80 억 개 이상의 네트워크 장치를 지원할 수 있게 해줍니다.
##라우터는 패킷을 보낼 위치를 어떻게 알 수 있을까? 인터넷에서 모든 IP 주소가 어디에 있는지 알아야 할까?
모든 라우터는 모든 IP 주소가 어디에 있는지 알 필요가 없습니다. 각 패킷을 라우팅 할 인접한 Outbound link만 알면 됩니다.
**Outbound links
- Outbound links는 다른 곳으로 이동하기위한 링크입니다.
- 이들은 다른 특정 웹 페이지 또는 웹 사이트로 연결되는 링크입니다.
- 전부는 아니지만 대부분의 웹 사이트에는 Outbound links가 있습니다.
- IP 주소는 네트워크 prefix와 호스트 식별자의 두 부분으로 나눌 수 있습니다.
Ex)
129.42.13.69
Network Prefix: 129.42
Host Identifier: 13.69
**Network Prefix
- 단일 연결을 통해 인터넷에 연결되는 모든 네트워크 장치 (예 : 대학 캠퍼스, 기업 또는 대도시 지역의 ISP)는 모두 동일한 네트워크 prefix를 공유합니다.
- 라우터는 129.42. . 형식의 모든 패킷을 동일한 위치로 보냅니다.
- 따라서 라우터는 수십억 개의 IP 주소를 추적하는 대신 백만 개 미만의 네트워크 prefix만 추적하면 됩니다.
##그러나 라우터는 여전히 많은 네트워크 prefix를 알아야한다. 새 라우터가 인터넷에 추가되면 이러한 모든 네트워크 prefix에 대한 패킷을 처리하는 방법을 어떻게 알 수 있을까?
- 새 라우터에는 몇 가지 사전 구성된 경로가 제공될 수 있습니다. 그러나 패킷을 발견하면 라우팅 방법을 알지 못하는 경우 인접 라우터 중 하나를 쿼리합니다.
- 이웃이 패킷을 라우팅하는 방법을 알고 있으면 해당 정보를 요청 라우터로 다시 보냅니다.
- 요청하는 라우터는 나중에 사용할 수 있도록 이 정보를 저장합니다.
이러한 방식으로 새 라우터는 Outbound links에 대한 네트워크 prefix 데이터베이스인 자체 라우팅 테이블을 구축합니다. 인접한 라우터가 모르는 경우 다른 인접한 라우터들을 쿼리합니다.
##네트워크로 연결된 컴퓨터는 도메인 이름을 기반으로 IP 주소를 어떻게 파악할까?
DNS(Domain Name System)은 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 컴퓨터가 읽을 수 있는 IP주소(예: 192.0.2.44)로 변환합니다.
- IP 주소를 확인하기 위해 컴퓨터는 먼저 최근에 방문한 웹 사이트의 IP 주소를 저장하는 로컬 DNS 캐시를 확인합니다.
- IP 주소를 찾을 수 없거나 IP 주소 레코드가 만료된 경우 IP 주소 확인 전용 ISP의 DNS 서버를 쿼리합니다.
- ISP의 DNS 서버가 IP 주소를 확인할 수 없는 경우 지정된 최상위 도메인의 모든 도메인 이름을 확인할 수 있는 루트 이름 서버를 쿼리합니다.
최상위 도메인은 도메인 이름의 맨 오른쪽 마침표 오른쪽에 있는 단어입니다. Ex) .com .net .org
##응용 프로그램은 인터넷을 통해 어떻게 통신할까?
- 인터넷 네트워크 계층은 링크 계층, 인터넷 계층, 전송 계층 및 응용 프로그램 계층으로 구성됩니다.
- <계층구조>
응용 프로그램 계층
전송 계층
인터넷 계층
링크 계층
- 각 계층은 구현 세부 사항에 대해 걱정하지 않고 하위 계층의 기능을 사용합니다.
예를 들어, 애플리케이션은 소켓이라는 구조를 사용하여
TCP를 통해 네트워크의 다른 애플리케이션에 연결합니다.
이 구조는 패킷 라우팅 및 패킷을 메시지로 재조립하는 세부 정보를 추상화합니다.
##각 인터넷 계층은 무엇을 할까?
링크계층
- 링크 계층은 광섬유 케이블이나 와이파이 무선 신호와 같은 물리적 매체를 통해 데이터 비트를 전송하는 것과 관련이 있습니다.
인터넷계층
- 링크 계층 위에는 인터넷 계층이 있습니다.
- 인터넷 계층은 패킷을 대상으로 라우팅하는 것과 관련이 있습니다. (인터넷 프로토콜이 있습니다.)
- 인터넷 프로토콜은 네트워크로드 또는 중단에 따라 동적으로 패킷을 조정하고 다시 라우팅합니다.
전송 계층
- 인터넷 계층 위에는 전송 계층이 있습니다.
- 이 계층은 아래의 인터넷 및 링크 계층에서 데이터가 손실될 수 있다는 사실을 보완하기위한 것입니다.
- 주로 패킷을 원래 메시지로 재조립하고 손실된 패킷을 재전송하는 데 주로 사용됩니다(전송 제어 프로토콜이 있습니다)
응용 프로그램
- 응용 프로그램 계층이 맨 위에 있습니다.
- 이 계층은 아래의 모든 계층을 사용.
- 인터넷을 통해 패킷을 이동하는 복잡한 세부 사항을 처리합니다 -> 프로그램은 소켓과 같은 간단한 추상화를 사용하여 인터넷의 다른 응용 프로그램과 쉽게 연결할 수 있습니다.
- 웹 브라우저와 웹 서버가 상호 작용하는 방법을 지정하는 HTTP 프로토콜은 응용 프로그램 계층에 있습니다.
- 이메일 클라이언트가 이메일을 검색하는 방법을 지정하는 IMAP 프로토콜은 애플리케이션 계층에 있습니다.
- 파일 다운로드 클라이언트와 파일 호스팅 서버 간의 파일 전송 프로토콜을 지정하는 FTP 프로토콜은 응용 프로그램 계층에 있습니다.
##클라이언트와 서버는 무엇일까?
공통점 : 클라이언트와 서버는 모두 인터넷을 통해 통신하는 응용 프로그램
클라이언트
- 웹 브라우저, 이메일 클라이언트 또는 스마트 폰 응용 프로그램과 같은 사용자 대면 응용 프로그램이라는 점에서 "사용자에게 더 가깝습니다".
- TCP 연결을 시작하는 애플리케이션
서버
- 클라이언트가 필요할 때 인터넷을 통해 통신하는 원격 컴퓨터에서 실행되는 응용 프로그램입니다.
- TCP 연결을 수신하는 애플리케이션
##신용 카드와 같은 민감한 데이터를 인터넷을 통해 안전하게 전송하려면 어떻게 해야할까?
- 문제 : WiFi와 같은 무선 기술의 출현으로 해커는 공중에서 패킷을 가로 챌 수 있습니다. 네트워크 하드웨어가 물리적으로 안전한지 확인하는 것만으로는 충분하지 않았습니다.
- 해결책 : SSL / TLS를 통한 암호화 및 인증
##SSL / TLS란?
- SSL은 Secured Sockets Layer를 나타냅니다.
- TLS는 Transport Layer Security를 나타냅니다.
- SSL은 1994 년 Netscape에 의해 처음 개발되었지만 나중에 더 안전한 버전이 고안되어 TLS로 이름이 변경되었습니다.
- SSL / TLS는 전송 계층과 애플리케이션 계층 사이에있는 선택적 계층입니다.
- 암호화 및 인증을 통해 민감한 정보의 안전한 인터넷 통신을 가능하게합니다.
**암호화
- 클라이언트가 서버에 대한 TCP 연결을 암호화하도록 요청할 수 있음을 의미합니다.
- 클라이언트와 서버간에 전송되는 모든 메시지는 패킷으로 분할되기 전에 암호화됩니다. 해커가 이러한 패킷을 가로 채면 원래 메시지를 재구성할 수 없습니다.
**인증
- 클라이언트가 서버가 자신이 주장하는 사람임을 신뢰할 수 있음을 의미합니다.
SSL 작동 과정:
- 최신 브라우저에서 SSL이 활성화 된 웹 사이트를 방문 할 때마다 SSL이 작동하는 것을 확인합니다.
- 브라우저가 http 대신 https 프로토콜을 사용하는 웹 사이트를 요청하면 웹 서버에 SSL 암호화 연결을 원한다는 것을 알립니다.
- 웹 서버가 SSL을 지원하는 경우 암호화된 보안 연결이 설정되고 브라우저의 주소 표시 줄 옆에 자물쇠 아이콘이 표시됩니다.
##SSL은 서버의 ID를 어떻게 인증하고 통신을 암호화 할까?
- 비대칭 암호화 및 SSL 인증서를 사용합니다.
**비대칭 암호화는?
- 공개 키와 개인 키를 사용하는 암호화 체계입니다.
- 개인 키 > 데이터를 해독하고 문서에 서명하는 데 사용됩니다.
- 공개 키 > 데이터를 암호화하고 서명 된 문서를 확인하는 데 사용됩니다.
- 대칭 암호화와 달리 비대칭 암호화는 암호화 기능이 자동으로 해독 기능을 부여하지 않음을 의미합니다.
**SSL 인증서
- 웹 서버에 할당된 공개 키로 구성된 디지털 문서입니다.
과정:
- SSL 인증서는 인증 기관에서 서버에 발급합니다. 운영 체제, 모바일 장치 및 브라우저는 SSL 인증서를 확인할 수 있도록 일부 인증 기관의 데이터베이스와 함께 제공됩니다.
- 클라이언트가 서버와의 SSL 암호화 연결을 요청하면, 서버는 SSL 인증서를 다시 보냅니다.
- 클라이언트가 체크합니다.
- -SSL 인증서가 서버에 발급됐는지
- -SSL 인증서가 신뢰할 수있는 인증 기관에 의해 서명됐는지
- -SSL 인증서가 만료되지 않았는지
- 클라이언트는 SSL 인증서의 공개 키를 사용하여 임의로 생성된 임시 비밀 키를 암호화하고 서버로 다시 보냅니다.
- 서버에는 해당 개인 키가 있으므로 클라이언트의 임시 비밀 키를 해독할 수 있습니다.
- 이제 클라이언트와 서버 모두 이 임시 비밀 키를 알고 있으므로 이를 사용하여 서로에게 보내는 메시지를 대칭 적으로 암호화할 수 있습니다.
- 세션이 끝나면 이 임시 비밀 키를 버립니다.
##해커가 SSL 암호화 세션을 가로 채면 어떻게 될까?
- 해커는 개인 키가 없기 때문에 임시 비밀 키를 해독할 수 없습니다.
- 임시 비밀 키가 없기 때문에 클라이언트와 서버 간의 메시지를 해독할 수 없습니다.