KaQiita

新米社会人が適当なことを書いてます。温かく見守ってやってください。

プロトコル・TCP / IP について勉強してみる

はじめに

ネットワークのついて最近少しずつ勉強を始めたので、少しまとめてみようと思います。

まだ質の高い記事を書けるほど理解できていませんが、少しずつ書き足していって、より詳細にしていこうと思います。

プロトコルとは?

プロトコルとは、「ネットワークに接続された機器同士が相互に通信する際に用いられる通信規約」のことです。

つまり、機器同士が通信する際の決まりです。

最も有名なプロトコルは HTTP というプロトコルで、これは Hyper Text Transfer Protocol の略で、Hyper Text、つまり Web コンテンツを Transfer、つまり送受信するためのプロトコルです。

他にも、例えばメールの送受信を行う際には、SMTP というプロトコルが用いられます。

このようなプロトコルのまとまりを「プロトコル群」と呼び、通信を行うときはこのプロトコル群を用います。

TCP / IP 参照モデル

プロトコル群の代表的なものに「TCP / IP 参照モデル」というモデルがあります。

この TCP / IP とは、「インターネット上で標準的に用いられるプロトコル群の総称」のことです。

先程挙げた HTTP も SMTPTCP / IP の中に含まれています。

先述したように最も有名なプロトコルは HTTP で、インターネット通信において、HTTP だけでは足りない部分を SMTP などの TCP / IP のほかのプロトコルが補うことで、インターネット接続が可能となります。

TCP / IP 参照モデルの4つのレイヤー

プロトコル群である TCP / IP のプロトコルは、役割毎に「アプリケーション層」「トランスポート層」「インターネット層」「ネットワークインターフェース層」の4つのレイヤーに分かれています。

各層の役割については、ここでは「アプリケーション層」と「トランスポート層」について述べるに留めたいと思います。

アプリケーション層

アプリケーション層とは、扱うデータをネットワークで転送するのに適したデータ形式に変換したり、ネットワーク経由で受け取ったデータを理解できるように変換したりする役割も持つプロトコルの集まりです。

またアプリケーション層のプロトコルは、Web ブラウザやメールソフトなどのアプリケーションごとのやりとりを規定していることも特徴です。

先程挙げた HTTP も SMTP もどちらもアプリケーション層のプロトコルになります。

一方で、データの転送処理などはアプリケーション層より下位の層が担当しています。

トランスポート層

アプリケーション層のやりとりに応じて、実際にデータの転送処理をしているのがトランスポート層TCPUDP です。

TCPUDP はどちらもデータの転送処理を行う際に用いるプロトコルですが、それぞれに特徴があります。

TCP は Transmission Control Protocol の略で、分割されたデータの順序や欠落をチェックしながら通信を行います。

一方で、UDP は User Datagram Protocol の略で、通信の際に分割されたデータの順序や欠落を保証しません。

つまり TCP の方が信頼性が高く、Web やメールなどのクライアントとサーバー間で双方向通信を行うサービスでよく用いられています。

UDPTCP に比べ信頼性が無いですが、その分早く効率良くデータの転送を行えるため、動画ストリーミングなどでは UDP が用いられます。

プロトコルの設計思想

今まで述べてきたプロトコルには、有名な設計思想があります。

それは「ポステルの法則」と呼ばれるものです。

ポステルの法則とは、「送信するものに関しては厳密に、受信するものに関しては寛容に。」という設計思想です。

プロトコルの決まりを定めた RFC という規約があります。

例えば、先程挙げた SMTPRFCこちらです。

プロトコルを送信する側は、この規約に従うようにしますが、プロトコルを受け取る側は、RFC の規約を明確に違反してさえいなければ、基本的にはエラーにせず受け入れるようにします。

参考文献