システム設計の世界では、ネットワークはさまざまなコンポーネントを結合する接着剤です。 Web アプリケーション、分散システム、または単純なバックエンド サービスを構築する場合でも、ネットワークの仕組みを理解することが、スムーズな通信、セキュリティ、パフォーマンスを確保するための鍵となります。この章では、スケーラブルで信頼性の高いシステムを構築するために重要なネットワーキングのいくつかの核となる側面について説明します。
基礎から始めましょう。 コンピュータ ネットワークは、相互に通信する相互接続されたデバイス (コンピュータ、サーバー、ルーターなど) の集合です。これはデータの郵便システムのようなもので、さまざまなデバイスがパケットの形式で情報を送受信できるようになります。ユーザーがオンライン サービス (フード デリバリー アプリなど) を操作するとき、これらのパケットはユーザーのデバイスとアプリを動作させるサーバーの間で常に送受信されます。
例: 一般的なオフィスでは、従業員のコンピュータが LAN 経由でプリンタ、ファイル サーバー、場合によっては電話にさえ接続されています。この設定により、リソースを高速に共有できます。
例: ニューヨーク、ロンドン、東京にオフィスを持つ大企業を想像してください。オフィス内には LAN がありますが、相互に通信するには WAN を使用し、おそらくインターネットまたはプライベート接続を利用します。
ネットワークがどのように動作するかを理解するために、ネットワークを 7 つの層に分割する OSI モデル を使用します。
システム設計のほとんどの場合、特に通信プロトコル、セキュリティ、データ フローを扱う場合は、レイヤー 3 から 7 に焦点を当てます。
HTTP (ハイパーテキスト転送プロトコル) と HTTPS (HTTP Secure) は、Web 上の通信に使用される主要なプロトコルです。これらは、メッセージがどのようにフォーマットされ、クライアント (ブラウザーなど) とサーバー間で送信されるかを定義します。
例: ブラウザに「www.fooddelivery.com」と入力すると、ホームページを取得するための HTTP リクエストが送信されます。
例: ユーザーがフードデリバリー アプリで注文すると、デバイスからサーバーに送信される際の支払い詳細が HTTPS によって暗号化され、安全に保たれます。
TCP (伝送制御プロトコル) と IP (インターネット プロトコル) は、インターネットに電力を供給する 2 つの基本プロトコルです。
예: 음식 배달 앱이 고객 세부정보를 서버로 보내는 경우 TCP는 전체 메시지가 누락된 부분 없이 전달되도록 합니다.
예: 휴대전화에서 요청하면 휴대전화는 IP 주소를 사용하여 데이터를 서버로 라우팅합니다. 서버에는 자체 IP 주소가 있어 패킷이 사용자에게 올바르게 반환될 수 있습니다.
TCP/IP는 함께 인터넷 통신의 백본을 형성합니다. 이는 신뢰할 수 있는 우편 서비스와 같습니다. TCP는 패키지 내용물이 손상되지 않도록 보장하고 IP는 패키지가 올바른 위치에 도착하도록 보장합니다.
DNS는 인터넷의 전화번호부와 같습니다. 서버의 전화번호와 같은 IP 주소를 기억하는 대신 "www.example.com"과 같은 도메인 이름을 사용합니다. DNS는 이러한 이름을 IP 주소로 확인하므로 장치가 요청을 보낼 위치를 알 수 있습니다.
로드 밸런서는 수평 확장 시 매우 중요합니다. 들어오는 트래픽을 여러 서버에 분산하여 단일 서버가 과부하되지 않도록 하는 도구입니다. 이를 통해 시스템의 확장성과 내결함성이 향상됩니다.
CDN은 다양한 위치에 분산된 사용자의 지연 시간을 줄이고 성능을 향상시킬 수 있는 훌륭한 방법입니다. CDN은 콘텐츠의 캐시된 버전을 저장하는 전 세계에 분산된 서버 네트워크입니다. 사용자가 웹사이트에서 무언가를 요청하면 CDN은 기본 서버가 아닌 사용자에게 가장 가까운 서버에서 해당 콘텐츠를 제공하므로 로드하는 데 걸리는 시간이 줄어듭니다.
예: 음식 배달 앱의 고객이 인도와 미국에 있지만 주요 서버가 유럽에 있다고 가정해 보겠습니다. CDN이 없으면 인도 사용자의 요청이 유럽까지 이동해야 하기 때문에 로드 시간이 느려질 수 있습니다. 하지만 CDN을 사용하면 인도의 서버에서 캐시된 이미지, 레스토랑 세부정보, 정적 콘텐츠를 제공할 수 있으므로 앱이 더 빠르게 느껴질 수 있습니다.
보안은 모든 시스템의 주요 관심사이며, 네트워크를 통한 안전한 통신을 보장하는 주요 기술은 SSL(Secure Sockets Layer) 및 TLS(Transport Layer Security)입니다. 이러한 프로토콜은 클라이언트와 서버 간에 전송되는 데이터를 암호화하여 비밀번호, 결제 세부정보 등 민감한 정보를 도청으로부터 보호합니다.
예: 음식 배달 앱에서 사용자가 결제를 위해 신용카드 정보를 제출하면 데이터가 서버로 전송되기 전에 TLS를 사용하여 암호화됩니다. 이렇게 하면 누군가 데이터를 가로채더라도 데이터가 암호화되어 있으므로 읽을 수 없습니다.
Example: When a user opens your app, their device and your servers go through this handshake to agree on how to encrypt the data before any sensitive information, like login details or payment info, is transmitted.
In any system where data travels across networks, security is paramount. Here are some key security practices for ensuring a secure system:
Example: Let’s say a malicious actor tries to overwhelm your food delivery app by sending millions of fake requests. API rate limiting can throttle these requests and prevent the system from crashing.
IDS)** can help alert you when there’s an attempt to breach your network.
To enable SSL/TLS, you need an SSL certificate, which verifies the identity of your website or server. Certificates are issued by trusted entities called Certificate Authorities (CAs), which guarantee that your website is legitimate.
Example: When you purchase an SSL certificate for your food delivery app’s domain, it’s issued by a CA like Let’s Encrypt or DigiCert. This tells users that their data is safe and that they’re actually interacting with your app, not an imposter.
Implementing 2FA is an additional layer of security, requiring users to provide two forms of identification (typically something they know, like a password, and something they have, like a mobile device). This makes it much harder for attackers to compromise accounts.
Example: In your food delivery app, enabling 2FA for users can help prevent unauthorized access even if their password is stolen.
위 내용은 네트워크 기본 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!