【超簡単】TCP、UDPとは?わかりやすく解説

ネットワーク

TCPをわかりやすく解説

TCPとは

transmission control protocol の略で直訳すると「送信制御プロトコル」です。TCPは名前の通り通信のプロトコルです。特徴はデータのやりとりを行う場合、相手と通信が取れたことを確認した上で通信を行う点です。この後紹介するUDPにはこの仕組みはありません。相手に自分の送ったデータが届いたかどうかを確認することができるので、確実な通信方法として一般的には認識されています。

TCPの仕組み

パケット(データ)の流れの向きを調べるためにSYN、ACKというTCPのコントロールビットにあるフラグを使います。

SYN:通信依頼

ACK:通信許可

の意味がビットに含まれており、最初のパケットはSYNが1、ACKが0になります。なのでこの場合は最初のパケットでそれ以外は2回目以降に送信されてくるパケットと判断することができます。通信が許可されるとACKが1になります。では次は通信を終了する時の仕組みを見てみましょう。

今度は新しくFINというフラグが登場します。FINは

FIN:切断を表す

クライアント側のパソコンがTCP通信を終了したい場合を考えます。まずFINフラグを含んだデータをサーバー側に送信します。サーバー側は通信を許可するかどうかを判断し、通信を終了する許可を出します。許可を出した場合クライアントのパソコン側に向けてACKフラグを含んだ情報を送信します。これでクライアント側のパソコン→サーバー側の通信終了の合意は取れました。次は同じようにサーバー側→クライアント側のパソコンの通信終了の合意をとって双方の合意がとれたらTCPの通信が終了するのです。ここまでくればわかると思いますが、通信の開始から通信終了まで確実にこなすのがTCPの特徴です。またパケット(送信されるデータ)のヘッダーにはシーケンス番号というものが組み込まれており、データが破損していないかどうか確認することができます。なので、信頼性も保たれた通信方法です。

UDPをわかりやすく解説

UDPとは

User datagram protocolの略で直訳すると「ユーザーデータグラムプロトコル」です。データグラムというのは

データグラム(英語: datagram)は、配送成功・到達時間・到達順序がネットワークサービスによって保証されることがないパケット交換網における基本転送単位である。

https://ja.wikipedia.org/wiki/データグラム

大雑把に捉えるならばただの送受信データの単位のことですが、ポイントとなるのがネットワークの状態によっては送受信のデータの順番が変わってしまうことがあるという点です。例えば「あいうえお」と送信したのに受信側は「あいえおう」と受け取ってしまうと行った感じです。先程さらっと説明しましたが、UDPはTCPとは異なり相手との通信の確認はしません。つまり確認なしで一方的にデータを送信する通信方法です。なんか確認を省くというのは聞こえが悪いかもしれませんが実際確認が必要なデータと不必要なデータが実際の送受信するデータの中に含まれているので、後者の場合の確認コストを省き、通信のコストが抑えられるという通信方法です。

UDPの仕組み

TCPと比べて、圧倒的にシンプル。ただデータを送るだけです。ただ送るだけなので処理が軽く、動画や音声の送信に使われることが多いです。

UDPを使う場面

DNSサーバーに問い合わせて、ドメインとIPアドレスを交換する為に送るメッセージはUDPの仕様に沿って作られたメッセージです。DNSサーバーに問い合わせるといった短い制御用のデータの送受信を行うときはUDPを使います。

番外編:働くエンジニアにおすすめアイテム3撰

記事の内容とは別に、日々エンジニアの業務を行う上で役に立っているアイテムを紹介します。どれも実際に使って良いと思ったものだけ紹介していますのでその点はご安心ください。

目の保温マッサージ

毎日使っている目の保温マッサージ機です。使うと翌日の疲労感が全く違います。1日中PCと睨めっこの人は今すぐ購入することを強くお勧めします。

座っている時の負担を減らす

このサポート座布団を購入してからデスクワークの疲労が激減しました。価格も安く購入しやすいのでコスパ最強です。現在職場でも愛用しています。

自宅での作業効率をあげる椅子

ゲーミングチェアを購入して、自宅での作業効率が最大化しました。座った途端集中モードに入ります。家で作業する人は絶対に買っておきたいアイテムです。

エンジニアの基礎知識・教養

別の記事でエンジニアとして知っておくべき技術本についてまとめました。スキルの高いエンジニアは極々当たり前にしっている知識だとおもいますが、そうでない方はエンジニアとして最低限知らないとまずい知識ですのでどこかで購入し、読むことをお勧めします。

タイトルとURLをコピーしました