《ネットワーク》コネクション型通信(TCP)の基本と周辺知識

インフラ

抑えて置きたいネットワーク用語

TCP/IPソフト

OSにはデータの送受信を行うソフトウエアがあり、それが「TCP/IPソフト」と呼ばれるものです。このTCP/IPソフトはアプリケーションと常に連携をとって、データの送受信を請け負います。またTCP/IPソフトは「ディスプリクタ」と呼ばれる識別値をアプリケーション側に渡して、アプリケーション側はTCP/IPソフトに通信をお願いする際にこの「ディスプリクタ」をTCP/IPソフトに渡すことでTCP/IPソフト側はどのアプリケーションが依頼してきたのかを判別することができます。

ソケット

ソケットというのはTCP/IPソフトが取得したアプリケーションの情報を格納しておくメモリ領域のことを指します。

TCPヘッダー

送信動作を行う際に使用する制御情報のことを「TCPヘッダー」と言います。ちなみにこのTCPですが「Transmission Control Protocol」の略で、日本語ではコネクション型通信と呼ばれます。TCPヘッダーは以下の4つの情報で構成されています。

通信フェーズ、実行している動作の情報

通信動作を行うプログラムを識別するための情報

データが正しく送信できたか確認するための情報

データの転送スピードをコントロールするための情報

さらに詳しい詳細が以下のサイトに記載されているので一目通して置くことをオススメします。

TCP/IP - TCPとは - TCPヘッダ
TCP( TCPヘッダ )ついてはじめから解説。

IPヘッダー

TCPヘッダーをIP渡すと、IPは「IPヘッダー」と呼ばれる制御情報を生成します。IPヘッダーにセットする主要な情報は以下の表の通りです。

宛先のIPアドレス

送信元のIPアドレス

ちなみに、添付する送信元のIPアドレスは送信を行うインターフェイスに割り当てたIPアドレスを使用するルールが存在します。

 

以下のコマンドを実行すると空いているポートを確認することができます。

$ netstat -nlt

コネクション

クライアント側のプログラムとサーバーサイド側のプログラムを繋ぐ論理的に接続されており、この2つの通り道を「コネクション」といいます。Socketライブラリに含まれるconnectというプログラムに宛先IPアドレスと宛先ポート番号を渡すことによってクライアント側のプログラムとサーバーサイド側のプログラムを論理的に接続してくれます。

TCPにおけるクライアントプログラムの生成方法

4つのフェーズで構成される

「ソケット生成」→「ソケット接続要求」→「送信/受信」→「切断」といった4つのフェーズで構成されます。先程でてきたconnectプログラムは接続要求の際に呼び出されるプログラムです。フェーズ名と使用するプログラム名を表にまとめて置きます。

フェーズ

使用プログラム

ソケット生成

socket()

ソケット接続要求

connect()

受信/送信

read()/write()

ソケット切断

close()

エンジニアのスキルを底上げする本を紹介

コードの可読性を高める

自分が大型ベンチャーの内定インターンに初めて参加した時、周りの超優秀なエンジニアの方々のコードをみて自分のコードの汚さに絶望しました。その時自分のマネージャーに勧められた本がリーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニックという超有名な一冊です。美しいコードを書くためのエッセンスが凝縮されています。エンジニアを職種として選ぶ方は読まない理由がない一冊です。自分もこの本を読んで、かなりコーディングスキルが向上したと感じています。

ネットワークの基礎を押さえる本

ITの基礎がおぼつかなくて、ネットワークの話についていけなかった時、早稲田大学のエンジニアの友人が勧めてくれたのがネットワークはなぜつながるのか 第2版 という本です。ハードウエアから、理論までネットワークの基礎が非常にわかりやすく解説されています。「TCP」「IP」「リゾルバ」という用語を説明できないエンジニアは間違いなく買ったほうがいいです。自分は知らなくてバカにされたので。笑

基本情報技術者試験の参考書

これからエンジニアを目指す方は受けておきたい国家試験です。IPA、独立行政法人情報処理推進機構が出題している為、大学入試のような試験ですが、それ故に資格合格の為に勉強することでITの基本をしっかり抑えることができます。

(全文PDF・単語帳アプリ付)かんたん合格 基本情報技術者教科書 2019年度

自分が合格した時の勉強方法も記事にまとめているので興味があったら読んでください。

【おすすめ参考書】当時大学2年生だった僕が、3ヵ月で基本情報受かった時の勉強方法
こんにちは。KATUOです。 今回の記事では「基本情報に合格するための勉強法」について書いていこうと思います。 基本情報技術者試験について どんな資格なの 「情...

 [番外編] 低反発座布団

会社エンジニアは座って作業することがほとんどです。1日12時間くらい座席に座っている方も多いのではないでしょう。椅子の座り心地が良けばよりプログラミングに集中できると思った僕は以下のアイテムを購入して、オフィスに設置。

IKSTAR クッション 低反発 座布団 椅子 腰楽クッション オフィス 車用 自宅用 体圧分散 座り心地抜群 プレゼント 持ち運ぶ便利 ブラック

会社の座椅子なのにまるで自分が選んで買った椅子みたいに大変身。「座り心地最高」+「姿勢が安定」腰痛にも成ることもほとんどなくなりました。なのでエンジニアのみなさんにはおすすめしています。お金に余裕のある方は買って、座ってみてください。

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