Help us understand the problem. What is going on with this article?

サーバサイドエンジニアなら知っておきたい基礎知識まとめ

こんにちは。現在Standard Cognition( https://standard.ai )というSFにある会社でSoftware Engineerをやっている原健太です(Twitterアカウント)

普段はReact&React Nativeエンジニアをやっている僕ですが、ここ数年は変わらないだろうなというサーバサイドの知識くらい知っておきたいなと思い、
小悪魔女子大生のサーバエンジニア日記という本を読んだので、まとめてみます。

TCP/IP

  • TCP/IPは通信プロトコル
  • 通信プロトコルとは、ネットワーク上でデータの通信をするための手順や約束ごとの集まりの事
  • TCP(Transmission Control Protocol)とIP(Internet Protocol)の組み合わせでできている

TCP

  • データは パケットという小さな小包に分けられて送られる
  • パケットは1つずつ番号がついていて、受け取ったら順番通りに元の状態に戻す必要がある。
  • TCPは送られてきた物が全部届いているか、壊れていないか、などを確認して、データの受信を完了しましたよと連絡してくれる。
  • TCPはデータのやりとりを保証するためのプロトコル

IP

IPアドレスを書くことを定めているのがIPというプロトコル

IPアドレス

  • コンピューター毎に割り振られる番号で、コンピュータの住所のようなもの
  • 32bitの列で、8bit毎に4つに区切った10進数の形で表記されている(125.6.176.42など)
  • 全てのIPアドレスはICANN(Internet Corporation for Assigned Names and Numbers)という非営利法人によって管理されている
  • IPv6は128bitで、IPアドレスの枯渇問題解決のために生まれた

MACアドレス

  • NICごとに割り当てられた固有の番号で、個々のNICに対して48bitの番号が付けられている
  • NIC(Network Interface Card)はネットワークに必要な拡張カードの事。
  • NICはパケットを電気信号に変えて送ったり、電気信号をパケットに戻したりします。
  • 最近のノートパソコンには複数のNIC(LABケーブル用のNICと無線LANのNICなど)があるため、NICの数だけ、MACアドレスが付けられている
  • 16進数で書かれた48bitの番号(00:a8:7b:01:5d:8fなど)
  • MACアドレスは決してかぶらない
  • ベンダーコード(IEEEによって決められている販売会社の番号)と各販売会社が独自につけた

IPアドレスとMACアドレスの関係

  • MACアドレスだけでも通信はできる
  • IPアドレスはグルーピングするために用いられる

ARP(Adress Resolution Protocol)

  • IPアドレスからMACアドレスを調べるためのプロトコル
  • IPアドレスとMACアドレスの対応はARPテーブルに書かれる
  • ARP要求が同じグループ内のアドレスに送られ、自分のIPだった場合に、自分のMACアドレスを書き込んでARPレスポンスを返す

ルーティング

  • 同一ネットワーク内での通信はARPを使ってIPアドレスとMACアドレスの対応を付ければ可能
  • しかし、別ネットワークに対してブロードキャストを使って問い合わせを行うことはできないし、地球全体のすべてのネットワークの構造をすべての通信主体であるコンピュータが知っているという仮定には無理がある
  • そこで、複数のネットワークに接続しているコンピュータ(ゲートウェイ(gateway)、ルータ(router))に中継を依頼する
  • ゲートウェイは自分が接続しているネットワークに目標とするコンピュータがあればARPを使ってMACアドレスを求めデータを送りつける
  • ゲートウェイは自分が接続しているネットワークに目標とするコンピュータがなければ、さらに別のゲートウェイに中継を依頼する
  • 送信元から最終的な宛先までの最良の経路(中継ゲートウェイ列)を探す作業をルーティング(routing)と呼ぶ

DNS(Dmain Name System)

  • ドメイン名をIPアドレスに直してあげるシステムのこと
  • そのシステムを行うサーバやコンピュータをDNSサーバという

サーバ

ネットワークでサービスを提供するコンピュータのこと

クライアント

サービスを提供される側のコンピュータのこと

SMTP(Simple Mail Transfer Protocol)

  • メールを送信・転送するためのプロトコル
  • メールサーバは、DNSサーバに送り先のドメイン名(MXレコード)を聞き
  • そこのIPアドレス(Aレコード)を聞く
  • そのIPアドレスにメールを届ける
  • ここまでがSMTPの役割

POP(Post Office Protocol)とIMAP(Internet Message Access Protocol)

  • メール受信のためのプロトコル
  • POPはメールサーバから、メールをパソコンにダウンロードする方式。
  • IMAPはメールサーバにメールを置いたまま、メールボックスの一覧だけをパソコンに表示する方式。

WWW(World Wide Web)

  • インターネットで公開されているページをみるための仕組み
  • ページは、HTML(Hyper Text Markup Laguage)という言語で書かれている
  • このHTMLで書かれたドキュメントを公開しているのがWebサーバという
  • Webサーバで有名なのがApacheとIISとNginxなど

HTTP(Hyper Text Transfer Protocol)

  • WebブラウザとWebサーバの間でデータ通信する時に使われるプロトコル
  • HTTPリクエストには
    • リクエスト行
    • メッセージヘッダー
    • メッセージボディ

がある。

  • HTTPレスポンスでは、リクエスト行の部分がステータス行になっている。

ステータスコード

  • WebサーバとWebブラウザがお互いの状態をやり取りするためのコード
  • 100番台:情報提供のため
  • 200番台:成功を表す
  • 300番台:転送に関する
  • 400番台:クライアント側のエラー
  • 500番台:サーバ側のエラー

例)
- 200 : リクエスト成功
- 301 : リクエストしたページが別のページに移動している
- 403 : リクエストしたページを表示する権限なし
- 404 : リクエストしたページが存在しない

などなど

ポート番号

  • TCP/IPを利用したネットワーク通信のIPアドレスの下に設けられた補助アドレスのこと
  • コンピュータが通信に使用するプログラム(アプリケーション)を識別するための番号

バーチャルホスト

  • 1つのサーバで複数のドメインを運用する技術

SSL(Secure Sockets Layer)

  • インターネット上で情報を暗号化し、送受信できるプロトコル
  • 「https://」
  • ポートは443番
  • Webページを運営している人が証明書の種(Keypair)をつくる
  • 運営会社の情報に証明書の片割れをそえて認証局に申請
  • 認証局で申請内容と申請者の存在を確認
  • 種の片割れに認証済みマークを付け申請者に返却
  • 証明書をサーバにインストールする

SSH(Secure Shell)

  • 自分のパソコンから、ネットワークを介して自分以外のパソコンにログインできる
  • リモートホストのコマンド実行ができる
  • 通信を暗号化することで安全にしている

公開鍵暗号方式

  • 公開鍵と秘密鍵の2つの鍵を使用した接続方式
  • サーバーに公開鍵、クライアントに秘密鍵を置いて使用する
  • 公開鍵で暗号化したものは、秘密鍵でのみ復号化できる
hellokenta
Software Engineer at Standard Cognition inc Ex-EastMeetEast iOS, React Native, Ruby on Rails, Python https://twitter.com/hellokenta_ja
https://twitter.com/hellokenta_ja
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした