9.1. 왜 네트워크인가

하드웨어 제어는 카메라가 특정한 다른 전선상의 특정한 다른 장치와 대화할 수 있는 방법을 제공했습니다. 카메라와 단일 동반 보드 사이의 UART. 카메라와 같은 짧은 버스에 매달린 센서들 사이의 I2C. 하나의 견고한 버스를 공유하는 소수의 모듈 사이의 CAN. 각 경우는 같은 형태를 따릅니다: 두 당사자(또는 알려진 소규모 그룹), 하나의 공유 매체, 그 매체 위의 바이트가 무엇을 의미하는지에 대한 그들 사이의 합의.

9.1.1. 그 형태는 확장되지 않습니다

점대점 패턴은 양쪽 끝이 가깝고, 양쪽 끝이 미리 알려져 있으며, 스크립트가 어느 전선으로 대화할지 고를 수 있는 한 작동합니다. 이러한 제약 중 어느 하나라도 깨지면 배선만으로는 더 이상 충분하지 않게 됩니다.

  • 많은 상대. 하나의 서버에 보고하는 50대의 카메라로 이루어진 네트워크는 일대일로 배선할 수 없습니다. 서버에 충분한 UART가 없고, 케이블을 까는 것이 불가능할 것입니다.

  • 같은 전선상에 있지 않은 상대. 공장 안의 카메라와 시내 건너편 사무실의 대시보드는 시리얼 케이블을 공유할 수 없습니다. 두 건물 사이에 이미 깔려 있는 인프라가 무엇이든 그것을 통해 그들 사이에 어떤 경로가 존재해야 합니다.

  • 미리 알려져 있지 않은 상대. 결과를 클라우드에 게시하는 카메라는 배선도에서 어느 서버와 대화할지 고르지 않습니다. 클라우드의 주소는 스크립트가 런타임에 조회하여 데이터를 라우팅하는 무엇입니다.

  • 하나의 케이블상의 많은 프로그램. 오늘날의 노트북은 브라우저, 채팅 앱, 화상 통화, 백업을 실행하면서 이 모두가 동시에 같은 네트워크 인터페이스를 통해 대화합니다. UART처럼 하나의 대화가 전선을 “소유”할 수는 없습니다.

이러한 각각의 실패는 서로 다른 종류 의 주소 지정 문제입니다. 이 모두를 함께 해결하려면 전선과 보드 레이트 이상의 것이 필요합니다.

9.1.2. 네트워크란 무엇인가

네트워크 는 각 쌍이 자신만의 전용 링크를 필요로 하지 않고도 많은 수의 컴퓨터 중 임의의 것이 다른 임의의 것과 메시지를 주고받을 수 있게 하는 인프라입니다. 세 가지 속성이 네트워크를 단순히 큰 시리얼 케이블 이상의 무엇으로 만듭니다:

  • 공유 매체. 많은 장치가 같은 케이블, 스위치, 또는 무선 채널에 연결됩니다. 둘 이상의 대화가 같은 물리적 링크에 들어갈 수 있도록 차례를 번갈아 쓰거나 다중화합니다.

  • 논리 주소. 각 장치는 어느 케이블에 꽂혀 있는지와 무관하게 그것을 식별하는 번호를 가집니다. 메시지를 보낸다는 것은 특정 전선을 연결하는 것이 아니라 그 번호를 메시지에 쓰는 것을 의미합니다.

  • 라우팅. 송신자와 수신자가 같은 로컬 세그먼트상에 있지 않을 때, 그들 사이 의 인프라가 메시지를 한 홉씩 운반합니다. 종단점은 경로를 알지 못합니다. 단지 서로의 주소를 알 뿐입니다.

사무실 Wi-Fi에 연결된 노트북이 먼 데이터 센터의 서버에 도달하는 것은 이 세 가지를 모두 사용합니다. Wi-Fi 링크는 공유 무선 매체이고, 노트북과 서버는 각각 자신의 논리 주소를 가지며, 메시지는 둘 사이에 자리한 인프라가 무엇이든 그것을 한 번에 한 홉씩 전달되며 통과합니다. 사용자가 링크를 클릭하면 노트북이 패킷을 보내고, 네트워크가 나머지를 처리합니다.

9.1.3. 그러면 cam은?

카메라는 네트워크에서 노트북과 정확히 같은 역할을 합니다. 네트워크에 합류할 때 논리 주소를 받아오고, 나가는 메시지를 다른 장치들의 논리 주소로 지정하며, 인프라가 그것들을 라우팅하게 합니다.

하드웨어 제어 장들로부터 바뀌는 것은 인터페이스 입니다. UART 인스턴스를 열고 거기에 바이트를 쓰는 대신, 스크립트는 소켓 을 열고 거기에 바이트를 씁니다. 소켓은 네트워크로의 종단점으로, UART 인스턴스가 전선으로의 종단점인 것과 같습니다. 소켓과 전선 사이의 요소들 – 프레임, 패킷, 라우팅 테이블, 스위치, 무선 – 은 모두 그 아래에 자리하며 Python 코드에게는 대부분 보이지 않습니다.

앞으로의 페이지들은 “소켓을 열고 바이트를 보낸다”는 추상화가 마법이 아니라 필연적으로 느껴지도록 그 요소들을 계층별로 자세히 설명합니다.