Edited at

知っておきたいTCP/IP入門編

More than 1 year has passed since last update.

こんにちは!Life is Tech!でWebサービスプログラミングコースでメンターをやっておりますがはくです!

この記事はLife is Tech ! メンター Advent Calendar2017の18日目の記事です。

昨日はにーざが書いてくれました。ノンデザイナーズ・デザインブック読んだことないのでぜひ概要をまとめてほしかったです!これからも頑張って!

さて、18日目ですが、みなさん普段インターネットよく使ってますよね。でもインターネットが繋がっている仕組みについてはよく知らないと思います!ということで今回は知識ベースでネットワークアーキテクチャTCP/IPについて書いていこうと思います。


アジェンダ

今回はまず序章で全体の概要をざっと説明し、後半詳しい話をしていきたいと考えています。

1.プロトコル&TCP/IPとは

2.OSI7階層モデル&TCP/IPモデルについて

3.インターネット層について

4.トランスポート層について

5.アプリケーション層について

6.まとめ


1. プロトコル&TCP/IPとは

まず、プロトコルとはコンピュータとコンピュータを繋ぐ時に決められたルールです。

分かりやすく人間に例えると、言語みたいなものです。日本語を話す人と英語を話す人ではコミューニケーションが成り立ちませんよね。それと同じでコンピュータもプロトコルが違うと通信できません。

昔は、それぞれのコンピュータが独自にプロトコルを作成し、通信を実現させておりました。しかし、プロトコルが各メーカーごとに違うので、メーカーの違う機器の間で通信することができなかったことも多かったらしいです。

そして、コンピュータが発達しネットワーク同士をつなげる必要性が高まり、自由に通信出来る環境を望んだ結果、コンピュータ間の通信を標準化1するネットワークアーキテクチャ2TCP/IPが生まれました。TCP/IPを用いて繋げられたネットワークのことを主にインターネット(正確にはThe Internet)と言います。


2. OSI7階層モデル&TCP/IPモデルについて

OSI7階層モデルはISO(国際標準化機構)が提唱した通信に必要な機能を7つの階層に分けることによって、プロトコルを分かりやすくしたものです。ネットワークのプロトコルについて話す時はこのOSI7階層モデルに基づいて話されることが多いです。

TCP/IPモデルもOSIと同じく通信を階層に分け、プロトコルを分かりやすくしたものであるであるが、TCP/IPモデルはプロトコルを実装する際に必要なプログラムは何かという観点で階層化されています。

それぞれどのような階層分けがされていて、どのように対応しているのかを下図にて示します!

スクリーンショット 2017-12-13 0.36.12.png

[1]

インターネットでは送信側が上の層から下の層にデータを伝えていき、逆に受信側では下の層から上の層へとデータを伝えていきます。

それではTCP/IPを語る上では重要な層(レイヤー)についてそれぞれ何をやっているかを話していきたいと思います!


3. ネットワーク層について

主なプロトコル:IP

ネットワーク層は異なるネットワークにいるコンピュータをつなげる役割をします。


IP(Internet Protocol)について

IPは主に3つの役割があります。主な2つを説明します。


  • IPアドレス

IPアドレスはネットワークに繋がっているすべてのコンピュータに割り振られ、識別するために使います。

IPアドレスはネットワーク部とホスト部に別れ、語弊を恐れず分かりやすく言うとルータを特定するのがネットワーク部、ルータに接続されているコンピュータを特定するのがホスト部です。

そして、どこまでがネットワーク部でどこまでがホスト部なのかを表すのはサブネットマスク3です。

例: 慶應義塾大学湘南藤沢キャンパスのネットワーク「CNS」に接続されたコンピュータの場合

IPアドレス 133.27.45.111

サブネットマスク 255.255.255.0

この場合ネットワーク部は133.27.45までで、ホスト部は残りの111です。

IPアドレスを自動的に割り振る仕組みのことをDHCPと言います。(詳しくは調べてね)


  • 経路制御(ルーティング)

経路制御とは、どこにデータを送ればいいかを制御することです。どこに送り出せば宛先のIPアドレスに届くかという情報をそれぞれが経路制御表(ルーティングテーブル)にまとめてネットワークの道案内をしています。

例:

スクリーンショット 2017-12-13 1.50.10.png

[2]

ホストA(10.1.1.30)からホストB(10.1.2.10)にデータを送る場合

1. まずホストAが持つ経路制御表には10.1.1.0/24しか書かれていないため、この場合は0.0.0.0/0(デフォルトルート)で定められている宛先(10.1.1.1)に送られます。

2. 次にルーターAだが10.1.2.0/24への経路情報を持っているため、そこで定められた宛先(10.1.0.2)に送られます。

3. 次に送られたルーターBも10.1.2.0/24への経路情報を持っており、かつその宛先が10.1.2.1とネットワークアドレスが一致する宛先なのでこれにてIPにて行う経路制御が完了します。


4. トランスポート層について

主なプロトコル:TCP,UDP

トランスポート層はどのアプリケーションにデータを渡すかを制御します。郵便物に例えるとネットワーク層が住所で、トランスポート層が宛名です。

トランスポート層ではどのアプリケーションにデータを渡すか識別するためにポート番号を割り振っています。2の16乗個割り振る事ができ、0~65535の範囲で割り振られます。

標準で決められているものもありTCPでは以下のものが有名だと思います!

ポート番号
サービス名

22
ssh

80
http

143
imap

443
https

トランスポート層のプロトコルでは主にTCP(Transmission Control Protocol)とUDP(User Datagram Protocol)の2つがあり、TCPでは信頼性を重視しており、UDPでは高速性やリアルタイム性を重視してものです。また、TCPにはポート制御以外にもスリーウェイハンドシェイク4や再送制御5等の仕組みがあり、ネットワークをしっかり繋げたり、通信している間に失ったデータを修復するという機能もあります。


5. アプリケーション層について

主なプロトコル:DNS,HTTP,HTML,SSH,IMAP

アプリケーション層はみなさんが主に使っているWebブラウザやメーラー等のアプリケーションが使用するプロトコルです。ここではWebブラウザでWebサイトを閲覧する際に用いる3つのプロトコルについて説明します!


DNS(Domain Name System)

私達が普段インターネットを使う時にはURLを打ち込んで使いますよね。DNSはURL(ドメイン)とIPアドレスの対応表を持って変換を行っています。

DNSはその対応表を階層ごとに分散して持っており、例としてwww.example.jpの情報はどのように取得出来るかを示します!

080-03.jpg

[3]

1.まず自宅のルーターやプロバイダなどのDNSがルートDNS6に問い合わせます。ルートDNSは.jpのDNSサーバーのIPアドレスを返します。

2.次に自宅のルーターやプロバイダなどのDNSが.jpのDNSに問い合わせを行います。.jpのDNSはexample.jpのDNSサーバーのIPアドレスを返します。

4.最終的にexample.jpのDNSがIPアドレスを持っているので問い合わせは完了します。

このようにしてDNSはURLをIPアドレスへと変換しているのです!


HTTP(Hypertext Transfer Protocol)

HTTPはWebサーバー間で主にHTMLなどの転送に用いられるプロトコルで、WebブラウザでURLにアクセスしたらHTTPでリクエスト(要求コマンド)をサーバーに送り、その回答となるレスポンスをサーバーから受け取ります。

リクエストには主に以下の種類があります!

コマンド
説明

GET
指定したURLのデータを取得

POST
指定したURLにデータを送信

PUT
指定したURLのデータを保存

DELETE
指定したURLのデータを削除

レスポンスには内容の他にレスポンスコードが帰ってきます。有名なレスポンスコードは以下の様なものです!

コード
説明

200
成功

301
リダイレクト

400
リクエストの不正

403
リクエストの拒否

404
リソースが見つからない

408
リクエストのタイムアウト

500
サーバ内部エラー


HTML(HyperText Markup Language)

みなさんご存知HTMLはWebサイトを記述するためのマークアップ言語で、W3Cという団体が標準化しています。W3Cの東アジアをホストする事務所は慶應SFCの⊿館にあります(これが書きたかっただけ)


6. まとめ

インターネットの仕組みについて自分なりに重要なところをざっくりさらってみましたがいかがでしたか?

インターネットを使うにはここには書き切れないくらいたくさんの技術に支えられています。

もしもっと詳しく知りたければぜひぜひ聞いてください!

明日は最近よくご飯に行くいのっちがめちゃくちゃ面白いことを書いてくれます!たのしみ!!!


参考文献

竹下隆史, 村山公保, & 荒井透. (2012). マスタリング TCP/IP 入門編. 株式会社 オーム社.


引用

[1]竹下隆史, 村山公保, & 荒井透. (2012). マスタリング TCP/IP 入門編. 株式会社 オーム社. P73 図2.8より引用

[2]竹下隆史, 村山公保, & 荒井透. (2012). マスタリング TCP/IP 入門編. 株式会社 オーム社. P160 図4.22より加筆して引用

[3]JPNIC「インターネット10分講座:DNS」https://www.nic.ad.jp/ja/newsletter/No22/080.html





  1. 標準化とは異なるメーカーのものでも互換性をもって利用できる規格を作ることです。例えばCDやDVDとかってメーカーが違っても問題なく再生できるじゃないですか。これらはISOという団体がCDやDVDという規格を標準化した結果、生まれたものです。 



  2. さまざまなプロトコルを体系的にまとめたもの。TCP/IPはIP,TCP,HTTPなどのプロトコルをまとめたものである。 



  3. IPアドレス(IPv4の場合)は本来32ビットの正整数値で表されており、10進数で表す際には8ビットごとに区切られている。サブネットマスクはネットワーク部を1で記述することによって、どこまでがネットワーク部なのかを表している。2進数で11111111は10進数で255なので255.255....のような表記となる。また、/24などのビット数をIPアドレスの後に記載することでどこまでがネットワーク部なのかを記載することもある。 



  4. スリーウェイハンドシェイクとは接続をする際に、3回のやりとりで確認しあうことである。 



  5. 受信できてないことを送信側に伝え、もう一度送ってもらう機能のこと 



  6. 全世界に13個あり、DNSの階層に最上位に位置し、下位のDNSの情報をもつDNSサーバー。日本ではWIDEプロジェクトが運用を行っている。