WEB🔨/Internet과 Web

인터넷은 어떻게 동작할까? (번역)

최문경 블로그 2020. 3. 8. 23:22
이해가 쏙쏙되는 영상
 

How Does The Internet Work?

TLDR: Routers Moving Packets According To Various Protocols

user3141592.medium.com

아래의 글은 위의 글을 번역한 글입니다.

 

How does the Internet work?

인터넷은 Internet Protocol (IP), Transport Control Protocol (TCP), 그리고 다른 프로토콜들을 따르는 packet routing network를 통해 동작합니다.

 

 

What's a protocol?

프로토콜은 네트워크에서 컴퓨터가 서로 어떻게 통신해야 하는지에 대한 방법을 구체화한 규칙의 집합입니다. 예를 들어, Transport Control Protocol (TCP)는 데이터를 받은 컴퓨터가 데이터를 모두 받지 못했다면, 데이터를 보낸 컴퓨터가 다시 데이터를 보낼 수 있도록 그것을 알려줘야 하는 규칙을  가지고 있습니다.

 

 

What's a packet?

인터넷을 통해 전송되는 데이터를 message라고 부릅니다. message는 전송되기 전에 먼저, packet이라는 여러 조각들로 나누어지고 이 packet들은 서로 독립적으로 전송됩니다. 일반적으로 packet의 최대 크기는 1000 ~ 3000자입니다. 그리고 Internet Protocol (IP)는 message가 어떻게 packet이 돼야 하는지 구체화합니다.

 

 

What's a packet routing network?

packet routing network는 source 컴퓨터에서 destination 컴퓨터로 packet을 routing 하는 네트워크입니다. 인터넷은 router라는 전문화된 컴퓨터의 거대한 네트워크로 이루어져 있고, 각각의 router들은 packet들이 source 컴퓨터에서 destination 컴퓨터로 어떻게 움직여야 하는지 알려줍니다. packet은 이동하는 동안 여러 개의 router를 통해 움직입니다.

 

packet이 하나의 router에서 다음 router로 움직일 때, 그것을 hop이라고 부릅니다.

 

 

윈도우의 경우 tracert 명령어를 사용해 hop들의 리스트를 볼 수 있습니다.

Internet Protocol (IP)는 packet의 header(메타데이터를 포함하는 packet안에 지정된 공간)에 네트워크 주소를 어떻게 붙일지 지정합니다. 그리고 header의 주소를 기반으로 router가 어떻게 packet을 보내야 하는지 알려줍니다.

 

 

Where did these Internet routers come from? Who owns them?

라우터는 1960년대에 ARPANET으로부터 시작했는 데, 정부가 핵전쟁과 같은 재앙이 일어났을 경우에 정보에 접근하고 배포할 수 있도록 네트워크를 분산시키는 것이 목적이었습니다. 그 이후, 수 많은 Internet Service Providers (ISP) 기업들이 APRANET 라우터에 라우터를 추가했습니다.

 

Internet routers는 초기에는 ARPANET과 연계된 정부 기관들과 대학들의 소유였지만 나중에는 AT&T와 Verizon과 같은 기업들도 소유하면서 소유자가 많아졌습니다.

 

인터넷을 누가 소유하고 있는지 묻는 것은 모든 전화선을 누가 소유하고 있는지 묻는 것과 같습니다. 누구도 그것을 모두 가질 수 없습니다. 서로 다른 많은 존재들이 그것의 일부분을 가지고 있습니다.

 

처음에는 군사 목적으로 프로젝트를 의뢰한 것이지만, 일단 네트워크가 연결되자, 대학교에서는 학문 연구를 이유로 다양한 시도를 하고, 자료를 공유하기 시작했다. 또한, 대학교내 다른 연구소들이 서로 컴퓨터를 연결하고자 했을 뿐만 아니라, 4개 대학 교외에 다른 대학교들도 참여를 희망하면서 네트워크는 계속 확장되기 이른다. 이렇게, 아파넷에 대한 수요가 기하급수적으로 많아지자 미국 국방부는 1983년에 아파넷(ARPAnet)을 민간에게 풀어 버리고, 군용으로 따로 밀넷(MILnet)을 새로 만들었다. 그리고, 아파넷은 전 세계로 연결되어 현재의 인터넷으로 진화했다. 참고로, 밀넷은 처음에는 아파넷과 분리되어 있었으나 현재는 서로 연결되어 있다. 이는 주한미군 등 외국에 주둔 중인 미군이 사용하기 위해서 다시 연결된 것이다. - 나무위키

 

 

Do the packets always arrive in order? If not, how is the message re-assembled?

패킷은 목적지에 잘못된 순서로 도작할 수도 있습니다. 이것은 뒤의 패킷이 앞의 패킷보다 더 빠른 경로를 찾았을 때 발생합니다. 하지만, packet의 header는 순서에 대한 정보를 포함하고 있습니다. Transport Control Protocol는 이 정보를 사용해 목적지에서 message들을 재구성합니다.

 

 

Do packets always make it to their destination?

Internet Protocol은 패킷이 항상 목적지에 도착할 것이라는 보장을 하지 않습니다. 만약 제대로 도착하지 못한다면 그것을 packet loss라고 부릅니다. 이것은 일반적으로 라우터가 처리할 수 있는 것보다 더 많은 패킷을 받았을 때 발생합니다. 일부 패킷을 삭제하는 것 외에는 다른 방법이 없습니다.

 

그러나, Tansport Control Protocol은 재전송을 수행하여 packet loss를 처리합니다. 이렇게 하려면 destination 컴퓨터가 주기적으로 source 컴퓨터에게 얼마나 많은 message를 받았는지 확인 패킷을 보내야 합니다. 만약 destination 컴퓨터가 missing packet을 발견한다면, source 컴퓨터에게 missing packet을 재전송해달라는 요청을 보냅니다.

 

두 컴퓨터가 Transport Control Protocol을 통해 통신할 때, 우리는 그들 사이에 TCP 연결이 존재한다고 말합니다.

 

 

What do these Internet addesses look like?

이러한 주소를 IP 주소라고 부르고 두 가지 표준이 있습니다.

 

첫 번째 address standard는 IPv4라고 불리며 212.78.1.25와 같이 생겼습니다. 그러나 IPv4는 2³²(약 40억)개의 주소만 지원하기 때문에, Internet Task Force는 3ffe:1893:3452:4:345:f345:f345:42fc 처럼 생긴 IPv6라고 불리는 새로운 address standard를 제안했습니다. IPv6는 2¹²⁸개의 주소를 지원합니다. 

 

IPv4에서 IPv6로의 전환은 여전히 진행 중이며 오랜 시간이 걸릴 것입니다. 2019년에 구글에서는 약 28%의 IPv6 트래픽이 발생했다고 합니다.

 

IPv6은 IPv4 주소의 고갈을 앞두고 차기 주소 체계로서 고안되었으며, 조금씩 적용 사례가 늘고 있다. IPv4의 이론상 주소 수는 2³²개인 반면, IPv6의 최대 할당 IP 개수는 2¹²⁸(약 3.4*1038)개 주소를 가질 수 있으므로 통신이 가능한 기기마다 공인 IP를 하나씩 할당해도 고갈될 걱정이 없을 정도로 주소가 매우 넘쳐난다. 인류가 관측 가능한 범위 안에서 우주에 있는 별의 총 개수가 우리 은하의 별 개수 추정치*1000억개의 은하로 계산해야 약 100해 정도로 추정되니 이론상으로 계산하면 말 그대로 온 우주가 같이 써도 다 못쓸 만큼 많은 양이다. - 나무위키

 

 

How can there be over 8 billion networked devices on the Internet if there are only about 4 billion IPv4 addresses?

그것은 IP addresses에는 public과 private이 있기 때문입니다. 로컬 네트워크에 연결된 여러 개의 장치들은 같은 public IP address를 공유합니다.  로컬 네트워크 안에서 기기들은 각각의 private IP address로 구분됩니다. 예를 들어, 만약 노트북과 스마트폰이 같은 로컬 네트워크에서 www.google.com에 요청을 한다면 패킷들은 모뎀을 떠나기 전에 패킷의 헤더를 수정하고 그것의 포트 중 하나를 패킷에 할당합니다. 구글 서버는 요청에 응답할 때, 데이터를 이 특정 포트에서 모뎀으로 다시 보내기 때문에 모뎀은 패킷을 노트북으로 라우팅 할지 아니면 스마트폰으로 라우팅할지 알 수 있습니다.

 

이러한 의미에서, IP address는 컴퓨터에 한정되지 않고 컴퓨터가 인터넷에 연결하는 연결보다 더 많습니다. 당신의 컴퓨터에 고유한 주소는 MAC address이고 이 주소는 컴퓨터의 수명 동안 절대 변하지 않습니다.

 

private IP addresses에서 public IP addresses로 매핑하는 프로토콜을 Network Address Translation(NAT) 프로토콜이라고 합니다. 이것이 40억 개의 IPv4 주소를 가지고 80억 개 이상의 네트워크 장치들을 지원할 수 있게 합니다.

 

 

How does the router know where to send a packet? Does it need to know where all the IP addresses are on the Internet?

모든 라우터는 모든 IP address가 어디에 있는지 알 필요가 없습니다. 오직 각 패킷을 라우팅할 이웃(outbound link)들만 알고 있으면 됩니다. IP 주소는 network prefix와 host identifier의 두 부분으로 나눌 수 있습니다. 예를 들어, 129.42.13.69는 129.42(Network Prefix)와 13.69(Host Identifier)로 나눌 수 있습니다.

 

대학 캠퍼스, 회사와 같이 single connection을 통해 인터넷을 연결하는 모든 네트워크 장치들은 같은 network prefix를 공유합니다. 라우터들은 129.42.*.* 형식의 모든 패킷을 같은 위치로 보낼 것입니다. 따라서 라우터는 수십억 개의 IP 주소를 추적하는 대신 백만 개 미만의 network prefix만 추적하면 됩니다.

 

 

But a router still needs to know a lot of network prefixes. If a new router is added to the Internet how does it know how to handle packets for all these network prefixes?

새로운 라우터는 몇 가지 미리 구성된 라우트와 함께 만들어집니다. 그러나 어떻게 라우트 해야 하는지 모르는 패킷을 마주치면 인접 라우터 중 하나에게 질의합니다. 인접 라우터가 어떻게 패킷을 라우팅 하는지 알고 있다면 해당 정보를 요청 라우터에 다시 보냅니다. 요청 라우터는 나중에 사용하기 위해서 이 정보를 저장합니다. 이러한 방식으로, 새로운 라우터는 자체 라우팅 테이블을 구축합니다. 만약 이웃 라우터가 모른다면, 계속해서 다른 이웃에게 질의합니다.

 

 

How do networked computers figure out ip addresses based on domain names?

IP address를 www.google.com처럼 사람이 읽을 수 있는 이름으로 바꾸는 것을 "resolving the IP address"라고 부릅니다. 컴퓨터들은 Domain Name System (DNS)를 통해 IP addresses를 resolve 합니다.

 

IP address를 resolve 하기 위해서 컴퓨터는 먼저 최근에 방문한 웹사이트의 주소를 저장하는 로컬 DNS 캐시를 확인합니다. 거기서 IP 주소를 찾을 수 없거나 IP 주소 레코드가 만료된 경우 ISP의 DNS 서버에 질의합니다. 만약에 DNS 서버가 IP 주소를 resolve 할 수 없는 경우 root name server에게 질의합니다.

 

 

How do applications communicate over the Internet?

다른 많은 복잡한 엔지니어링 프로젝트들과 마찬가지로, 인터넷은 잘 정의된 인터페이스를 통해 함께 작동하는 더 작은 독립 component들로 분해됩니다. 이러한 component들은 인터넷 네트워크 계층이라고 불리고 Link Layer, Internet Layer, Transport Layer, Application Layer로 구성됩니다. 이것들은 서로서로 위에 구축되어있기 때문에 layer라고 불립니다. 각 layer는 세부 정보에 대한 걱정 없이 아래 계층의 능력을 사용합니다.

인터넷 애플리케이션은 애플리케이션 계층에서 동작하므로 아래 계층의 세부 사항에 대해 걱정할 필요가 없습니다. 예를 들어, 애플리케이션은 소켓이라고 불리는 구조를 사용하는 TCP를 통해 다른 애플리케이션과 연결됩니다.

 

 

What do each of these Internet layers do?

가장 낮은 level은 인터넷의 "물리적 계층"인 Link 계층입니다. Link 계층은 광케이블이나 와이파이 무선 신호와 같은 일부 물리적 매체를 통해 데이터 비트를 전송하는 것과 관련이 있습니다.

 

Link 계층 위에는 Internet 계층이 있습니다. Internet 계층은 패킷을 목적지로 라우팅 하는 것과 관련 있습니다. Internet Protocol은 network load 또는 outages를 기반으로 패킷들을 동적으로 adjusts 하고 reroutes 합니다. 참고로 패킷이 항상 목적지에 도착하도록 보장하는 것은 아니고, 최선을 다할 뿐입니다.

 

Internet 계층 위에는 Transport 계층이 있습니다. 이 계층은 Internet과 Link 계층에서 data가 손실될 수 있다는 사실을 보상합니다. 주로 패킷을 원래 메시지로 다시 조합하고 손실된 패킷을 다시 전송하는 일을 합니다.

 

Application 계층은 패킷의 복잡한 움직임을 다루기 위해서 아래의 모든 계층을 사용합니다. 이것은 소켓과 같은 간단한 추상화를 가지고 다른 애플리케이션과 쉽게 연결할 수 있습니다. 웹 브라우저와 웹 서버가 어떻게 상호작용해야 하는지 알려주는 HTTP protocol은 Application 계층에 있습니다. 파일 다운도르 클라이언트와 파일 호스팅 서버 사이의 파일 전송 프로토콜을 지정하는 FTP protocol도 Application 계층에 있습니다.

 

 

What's a client versus a server?

... 생략

좀 더 공식적인 정의는 TCP 연결을 시작하는 application이 클라이언트라면 TCP 연결을 받은 application은 서버라는 것입니다.

 

 

How can sensitive data like credit cards be transmitted securely over the Internet?

인터넷의 초창기에는 네트워크 라우터와 링크들이 물리적으로 안전한 장소에 있는지 확인하는 것으로 충분했습니다. 하지만 인터넷의 크기가 커지면서 많은 라우터는 더 많은 취약점을 의미합니다. 게다가, WiFi와 같은 무선 기술이 생기면서, 해커들은 공중에서 패킷을 가로챌 수 있게 되었습니다. 그것은 네트워크 하드웨어가 물리적으로 안전하다는 것 만으로는 충분하지 않았습니다. 이에 대한 해결책은 SSL/TLS를 통한 암호화와 인증이었습니다.

 

 

What is SSL/TLS?

SSL은 Secured Sockets Layer를 의미합니다. TLS는 Transport Layer Security를 의미합니다. SSL은 1994년에 Netscape에 의해 처음 개발되었지만 나중에 더 안전한 버전이 고안되어 TSL로 이름이 바뀌었습니다.

 

SSL/TLS은 Transport 계층과 Application 계층 사이에 있는 선택적 계층입니다. 그것은 암호화와 인증을 통해서 중요한 정보의 안전한 인터넷 통신을 가능하게 합니다.

 

암호화는 클라이언트가 서버에 대한 TCP 연결을 암호화하도록 요청할 수 있음을 의미합니다. 즉, 클라이언트와 서버 간에 전송되는 모든 메시지가 패킷으로 분리되기 전에 암호화됩니다. 해커가 이러한 패킷을 가로채면 그들은 원래 메시지를 변경할 수 없습니다.

 

인증은 클라이언트가 서버를 신뢰할 수 있음을 의미합니다. 이것은 악의적인 사람이 클라이언트와 서버의 연결을 가로채서 엿듣고 간섭하는 것을 막을 수 있습니다.

 

최신 브라우저에서 SSL 사용 웹사이트를 방문할 때마다 SSL이 작동 중인 것을 볼 수 있습니다. 브라우저가 http 대신 https 프로토콜을 사용해서 웹 사이트를 요청하면 웹서버에게 SSL 암호화된 연결을 원한다고 말합니다. 만약 웹서버가 SSL을 지원한다면 암호화된 연결이 이루어지고 브라우저의 주소 표시줄 옆에 잠금 아이콘을 볼 수 있습니다.

 

 

 

How does SSL authenticate the identity of a server and encrypt their communication?

비대칭 암호화 및 SSL 인증서를 사용합니다.

비대칭 암호화는 public keyprivate key를 사용하는 방식입니다. 이 키들은 기본적으로 large primes에서 숫자들입니다. private key는 데이터의 암호를 해독하고 문서에 서명하는 데 사용됩니다. public key는 데이터를 암호화하고 서명된 문서를 확인하는 데 사용됩니다. 대칭 암호화와 달리 비대칭 암호화는 암호화 기능이 자동으로 암호 해독 기능을 부여하지 않음을 의미합니다.

 

SSL 인증서는 웹 서버에 할당된 public key로 구성된 디지털 문서입니다. 이러한 SSL 인증서들은 인증 기관에서 서버로 발급됩니다. 운영체제, 모바일 장치, 브라우저들은 SSL 인증서를 확인할 수 있도록 일부 인증 기관의 데이터베이스가 제공됩니다.

 

클라이언트가 SSL 암호화 연결을 서버에 요청하면 서버는 SSL 인증서를 보냅니다. 클라이언트는 SSL 인증서가 해당 서버로부터 발행되었는지, 신뢰할 수 있는 인증 기관에서 서명되었는지, 만기가 끝나지 않았는지 확인합니다. 

 

그런 다음 클라이언트는 SSL 인증서의 공개키를 사용하여 랜덤 하게 생성된 temporary secret key를 암호화한 뒤 다시 서버로 보냅니다. 서버는 일치하는 private key를 가지고 있기 때문에, 클라이언트의 temporary secret key를 해독할 수 있습니다. 이제 클라이언트와 서버는 이 temporary secret key를 알고 있으므로, 이 키를 사용하여 서로 보내는 메시지를 대칭적으로 암호화할 수 있습니다. 그리고 그들은 세션이 종료된 이후 이 temporary secret key를 삭제합니다.

 

What happens if a hacker intercepts an SSL-encrypted session?

해커가 클라이언트와 서버 간에 전송되는 모든 메시지를 가로챘다고 가정합시다. 해커는 서버가 보내는 SSL certificate와 클라이언트의 암호화된 temporary secret key를 확인합니다. 하지만 해커는 private key를 가지고 있지 않기 때문에 temporarily secret key를 해독할 수 없습니다. 또한 temporary secret key가 없기 때문에 클라이언트와 서버 간의 메시지를 해독할 수 없습니다.

 

 

Summary

  • 인터넷은 컴퓨터 네트워크를 탈중앙화 하려는 목적으로 1960년 대에 ARPNET으로 시작되었다.
  • 물리적으로 인터넷은 유선, 케이블 및 무선 신호를 통해 비트를 서로 이동시키는 컴퓨터 모음이다.
  • 많은 복잡한 엔지니어링 프로젝트와 마찬가지로 인터넷은 여러 계층으로 나뉘며 각 계층은 작은 문제만 해결합니다. 이러한 계층은 잘 정의된 인터페이스에서 서로 연결됩니다.
  • HTTP, IMAP, SSH, TCP, UDP, IP 등 인터넷과 그것의 application이 다른 층에서 어떻게 동작해야 하는지 정의한 많은 protocol들이 있다. 이런 의미에서 인터넷은 컴퓨터의 물리적 네트워크인 것처럼 컴퓨터와 프로그램이 어떻게 행동해야 하는지에 대한 규칙들의 집합니다.
  • 인터넷의 성장, 와이파이의 출현 그리고 e-commerce의 필요성으로 SSL/TLS는 address 보안 문제를 위해 개발되었다.

'WEB🔨 > Internet과 Web' 카테고리의 다른 글

브라우저는 어떻게 동작하는가? (번역)  (0) 2020.06.01
HTTP란 무엇인가? (번역)  (0) 2020.05.31