MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/25 おすすめ情報に 『 【案件】Azure AD関連の認証設計/azureの基本設計 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


HTTP通信とソケット通信
profile-img
投稿者: thoriさん
投稿日:2021/09/01 13:58
更新日:2021/09/01 14:25
like-img
分類
技術
テクノロジー
ネットワーク
キャリア
運用・保守
投稿内容

通信の仕組みをもう一度理解するために備忘録として記します。


最近ソケット通信という言葉が気になったので、TCP/IPからまず理解します。


 

TCP/IPとは

日本人同士が日本語でコミュニケーションが取れるように、機械同士がコミュニケーションを取るには「プロトコル」というものを使用します。

その中でもインターネット上でコンピュータ同士が通信するためのプロトコルがTCP/IPです。

通信はクライアントサイドとサーバーとのリクエスト・レスポンスで成り立っています。

正確に言うと、インターネット通信はいろいろなプロトコルで成り立っていてTCPIPもそれらの一つにすぎませんが、TCPIPが中心的な役割を担っているため、総称してTCP/IPと総称するようになったそうです。

 

TCP/IPのアーキテクチャ

TCP/IP群は4つの層に分かれます。

 

・アプリケーション層:人間が認識できるようなデータを扱う

HTTPHTTPSSMTPPOPDNSDHCPSSHTelnetetc…

・トランスポート層:アプリーケーションごとにデータを振り分ける

TCPUDPetc…

・インターネット層:ネットワーク間のデータ転送を行う

IPIPsecARPetc…

・ネットワークインターフェース層:同一ネットワーク内でテータ転送を行う

EthernetWi-Fi

 

HTTP通信

HTTPはアプリケーション層に分類されます。

Webブラウザを使って、Webサーバーに情報を「GET」や「POST」などのメソッドでリクエストし、ポート番号80(HTTPS443)に接続し、ステータスコード200でかえってくるように通信されます。

 

主なHTTPメソッド

GET:データの取得

POST:データの送信

PUT:データの更新

DELETE:データの削除

Webアプリ開発でルーティングの設定においてだいたいこれらのHTTPメソッドを使用するかと思います。

 

#ソケット通信

TCP/IP群のトランスポート層にあたるのが、ソケット通信で

主にプログラムの世界とTCP/IP世界を結ぶ、特別な通信ともいえます。

TCPUDPでは通信の方法が違います。

TCPはコネクション型

UDPはコネクションレス型

通信がされるかどうかを事前に確認されるのがTCPで信頼性が高いプロトコルです。

一方でUDPは通信相手を確認することなく送信するため、素早い処理が可能になります。

簡単に言うとデータの到着確認を行うか否かの問題です。

郵便で例えると、

TCP:簡易書留

UDP:普通郵便

 

#それぞれの違い

HTTPはクライアントがリクエストすることによってサーバーがレスポンスします。

クライアントが発信することから始まるので、逆にサーバーがリクエストするということはありません。

ソケット通信の場合はサーバーとクライアントが特定のポートを通じて、双方向にリアルタイムで通信をすることが可能です。

クライアントとサーバーが関係を持ち続けるような感じで、リアルタイムチャットや動画通話などに使用されます。

 

IPアドレスとポート番号とソケットとパケット

ソケットってそもそも何?って思ったので、以下のように考えるとわかりやすかったです。

誰かに手紙を送るという行為を考えます。

その行為を成立させるには宛先の住所、部屋番号、ポスト、郵便物が必要になります。

通信の世界でも同じで、

IPアドレス:住所

ポート番号:部屋番号

ソケット:郵便ポスト

パケット:郵便物

というような理解でよいかと思います。




■参考

https://www.itmanage.co.jp/column/tcp-ip-protocol/

https://bny64.github.io/2020/12/13/http-socket-jp/

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3