1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【勉強用】通信方法やプロトコルを初心者視点から

Last updated at Posted at 2019-10-27

免責事項

この記事は初心者視点でザックリとした説明をしています。正確性に欠ける可能性がございますが、ご了承ください。「明らかに違うよ」ということがありましたら、ご指摘くださると幸いです。

環境

OS:最新版ではないMacOS
VirtualBox:5.2.26
Vagrant:2.2.6
Ubuntu:ubuntu/bionic64 v20181129.0.0

目次

  1. 通信とは
  2. 通信をするときのプロトコル(取り決め、約束、ルール)
  3. 通信をしてみる

1. 通信とは

通信とは、送り手(サーバー)が情報を送り、受け手(クライアント)がその情報を受け取ることです。
手紙、電話やインターネットなどが通信です。
その中でも、電話やインターネットは電気を使って通信するために電気通信と呼ばれます。

通信方法

通信をする方法は2つあります。

  1. 回線交換方式
    ...電話
  2. パケット通信方式
    ...インターネット

サービスの通信方法

サービスを提供する方法は2つあります。

  1. Peer to Peer(P2P)
    ...LINE、Skypeなど
  2. サーバー・クライアント
    ...メールサーバー、WEBサーバーなど

以上の概念は簡単なので、説明は省略します。

2. 通信をするときのプロトコル(取り決め、約束、ルール)

1. TCP/IP

TCP(Transmission Control Protocol)とIP(Internet Protocol)はインターネット通信をするときの取り決めのことです。
TCPは相手との通信が確立してからデータの転送を行う取り決めです。
IPはインターネットを使う上での取り決めです。
TCPとIPの両方を使って通信を行うことをTCP/IP通信と言います。

※IPアドレスについて

IPアドレスはパソコン、スマートフォンなどでインターネット通信を行う場合に利用されるインターネット上の住所のことです。
インターネットに接続されたコンピュータはすべてIPアドレスを持っています。

2. UDP/IP

UDP(User Datagram Protocol)は相手との通信を確立をせずにデータの通信を行う取り決めです。
オンラインゲームなど、高速でやりとりが行われる場合には、TCPのようにいちいち通信の確立を待っていたら、遅くなってしまうため、UDPが使われます。
UDPとIPの両方を使って通信を行うことをUDP/IP通信と言います。

3. HTTP

HTTP(Hypertext Transfer Protocol)はWebサーバとWebクライアントの間でデータの送受信を行うために使われる取り決めです。
主にWebブラウザを使う際に用いられ、Webページを構成するHTMLファイルやスタイルシート(CSS等)、スクリプト(JavaScript等)、画像、音声、動画などのファイルを、データ形式などのメタ情報を含めてやり取りします。

※HTTPSについて

HTTPS(Hypertext Transfer Protocol Secure)はHTTPをより安全に使えるような取り決めです。HTTPをSSL/TLSプロトコルによって安全にしたものと解釈できます。

4. VoIP

VOIP(Voice over Internet Protocol)はTCP/IP通信を使った音声データを送受信できる仕組みです。取り決めというより技術の仕組みに該当します。
LINEやSkypeなどがその代表使用例です。

5. FTP

FTP(File Transfer Protocol)はサーバーとクライアント間で、ファイルを送受信する際の取り決めです。
例えば、インターネット上にWEBサイトを公開したいときにWEBサーバーにファイルを置かなければなりません。その際に私たちはFTPクライアントソフトというソフトウェアを使用し、ファイルをWEBサーバーに転送します。WEBサーバー側ではFTPサーバーを使用し、そのファイルを受け取ります。

6. SMTP, POP3/IMAP

SMTP(Simple Mail Transfer Protocol)はメールを送信する際に使用する取り決めです。TCPが使用されています。
POP3/IMAP(Post Office Protocol / Internet Message Access Protocol)はメールを受信する際に使用する取り決めです。TCPが使用されています。

3. 通信をしてみる

TCP/IP通信をしてみる

TCP/IP通信のパケットの様子を見ることができるtcpdumpコマンドを使います。
tcpdumpを使うためには、サーバーとクライアントの両方が必要なので、コンソールウィンドウを2つ用意します。片方をサーバー、もう片方をクライアントとします。

サーバー側
sudo tcpdump src 好きなURL -X

今回は、「好きなURL名」から送られてくるパケットを見るという設定です。
・sudoはスーパーユーザ(別のユーザー)としてコマンドを実行することを意味します。なぜ使うのかはわかりません、、、。
・tcpdumpの後のsrcはソースで後にURLが来ることを意味します。
・srcの後には送信元のサイトにしたい、好きなURLを指定します。
※サーバー側のURLにはhttps://などのプロトコルは書かないでください。
・-Xは、詳細にパケットの中身を表示するというオプションです。

クライアント側ではcurlコマンドを使います。

クライアント側
curl 好きなURL

curl (カール) というコマンドは 「好きなURL名」のWEBサイトの内容をコンソールに表示する、というコマンドです。
オプションがない場合、HTML文字列をそのまま標準出力(コンソール)に表示します。
※クライアント側のURLにはプロトコルを含めて書いてください。

クライアント側では、指定したURLのHTML文字列が表示されると思います。
クライアント側でコンソールではなく、WEBブラウザを使うとWEBブラウザがHTMLを読み取り、綺麗な画面を表示してくれるというわけです。

サーバー側では以下のように、パケットの情報が表示されます。
スクリーンショット 2019-10-27 17.30.56.png
IP 182.22.25.124.httpsが送信元のIPアドレスで、>の後に隠している部分に送信先のIPアドレスが来ます。
0x0000: a4d1 8ce6 b764 8857 eee6 c2cd 0800 4500...の部分がパケットです。
以上でTCP/IP通信を行い、そのパケットの様子を見ることができました。

通信ができているか確認

pingコマンドを使うことで、通信ができているかの確認を行うことができます。
詳しく言うと、パケットを発行し、通信の確認をしたい相手に対して、パケットが届くかの確認をしたり、その応答時間を調査することができるコマンドです。

ping www.google.co.jp

すると、
スクリーンショット 2019-10-27 17.53.43.png
と表示され、172.217.26.35 というIPアドレスのコンピューターと通信できていることが確認でき、
64バイトの情報が4.395ミリ秒でこちらに届いたということが確認できます。

参考

「N予備校 プログラミングコース」
https://www.nnn.ed.nico/
「「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典」
https://wa3.i-3-i.info/index.html
「【入門】FTPとは?通信・ソフトについて分かりやすく解説します」
https://www.kagoya.jp/howto/network/ftp/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?