StudyCS.log

ただの日記

OSI参照モデルとTCP/IPの関係を整理する

概要

 OSI参照モデルTCP/IPの各階層の役割と、TCP/IPで実際に利用されている代表的なプロトコルについて整理した。

動機

 プロトコル関連で用語が多すぎてわけがわからなくなったので、一度知識を整理したかった。

内容

OSI参照モデル

f:id:HoriK:20201121194341j:plain

 OSI参照モデルはISOが作成したネットワーク・プロトコルの理論モデルである。ネットワークの通信を7つの階層に分け、送信側は上位レイヤから順にヘッダ情報を付加して送信し、受信側は下位レイヤから順にヘッダ情報をデコードしていき最終的にデータが見れる形にする。ヘッダ情報を付加していくことをカプセル化と呼び、反対に情報をデコードしてヘッダを外すことを逆カプセル化(=非カプセル化)と呼ぶ。7つの階層には次のような名前がついている。

物理層

データリンク層

ネットワーク層

トランスポート層

・セッション層

・プレゼンテーション層

・アプリケーション層

物理層

 実際に物理的な媒体を通して情報を伝達する層。光や電気信号、電波などを利用してコンピュータ内の「0」「1」を伝達する。コネクタやケーブルなどの規格も規定されている。

データリンク層

 同一ネットワーク内のデータ転送を行う階層。誤り制御、回復制御、送受信のタイミングなどが規定されている。

ネットワーク層

 異なるネットワーク間のデータ転送を行う階層で、送信元と送信先のエンド2エンド通信を確立する。ルーティングやコネクションの確立・開放などが規定されている。

トランスポート層

 エンド2エンド通信の信頼性を確保する層。受信確認によってデータが確実に受信されるようにする。その他にも、順序制御、フロー制御、回復制御、データ多重化などデータ転送に必要な多くの機能が規定されている。

セッション層 

 受信したデータをアプリケーションごとに振り分ける。例外報告などの動作も規定されている。

プレゼンテーション層

 データの表現形式を一致させる。表現形式の制御、変換、圧縮、暗号化などの方式が規定されている。

アプリケーション層

 各アプリケーションで利用するデータの形式やルールを提供する。ファイル操作、メールなどのユーザに近い機能が規定されている。

TCP/IP

 理論モデルとしてOSI参照モデルが存在しているが、実際に広く使われているのはTCP/IPというプロトコルである。OSI参照モデルではネットワーク通信を7つの層に分割しているのに対し、TCP/IPでは4つの層に分割している。4つの階層には次のような名前がついている。

・アプリケーション層

トランスポート層

・インターネット層

・ネットワークインターフェイス

ネットワークインターフェイス

 OSI参照モデル物理層データリンク層に該当する。TCP/IPはネットワークインターフェイスに依存していないので、この層のプロトコルには自由度がある。

インターネット層

 OSI参照モデルネットワーク層に該当し、エンド2エンド通信を確立する。

トランスポート層 

 OSI参照モデルトランスポート層に該当し、エンド2エンドの通信の信頼性を確保する。また、アプリケーションへのデータの振り分けも行っているので、セッション層の機能を果たしていると考えることもできる。

アプリケーション層

 OSI参照モデルのセッション層、プレゼンテーション層、アプリケーション層に該当する。データをアプリケーションに合わせて変換し、機能を実現する。

TCP/IPで使われているプロトコル

 TCP/IPの各層で利用されているプロトコルにはどのようなものがあるだろうか。上述の通りTCP/IPはネットワークインターフェイスに依存しないため、上位層3層においての代表的なプロトコルの紹介に留める。

IP(Internet Protocol)

 インターネット層のプロトコルで、エンド2エンドの通信を実現する。カプセル化の際にデータの送信元と宛先を示すIPアドレスを示し、それに従ってルーティングを行うことで通信ができるようになる。

 IPアドレスはネットワークを区別する識別情報で、ネットワークの位置を示すネットワーク部とホストを特定するホスト部が、インターフェイスに関連付けて決定される。アドレスは32bitの2進数であり、ネットワーク部とホスト部の区別がないので、その区別をするために区切りを示すサブネットマスクも同時に付与される。

 また、IPアドレス自体は、グローバルIPアドレスとプライベートIPアドレスの2つに分類される。グローバルIPアドレスは世界で重複のないIPアドレスNIC(Network Information Center)によって発行される。プライベートIPアドレスイントラネット、LAN内でのIPアドレスであり、そのネットワーク内で一意に定まればよい。

ICMP(Internet Control Message Protocol)

 インターネット層のプロトコルで、IPによるエンド2エンド通信ができているかどうかを確認する。データ送信の際にエコー要求を同時に送信し、それが返ってくれば正常に通信できているとみなす。

ARP(Address Resolution Protocol)

 インターネット層のプロトコル。宛先にデータを送信する際には宛先のIPアドレスMACアドレスが必要であるが、MACアドレスが不明なときがある。この際にはARPリクエストを送信して、該当のIPアドレスを持つホストのMACアドレスを問い合わせる。この動作をアドレス解決とよび、ARPはアドレス解決のためのプロトコルである。

TCP(Transmission Control Protocol)

 トランスポート層プロトコルで、データ送信の信頼性を確保する。通信の際にはTCPコネクションを確立して、データを送信。ACKフラッグでデータが送信されたことを確認し、きちんと送信されていたらシーケンス番号に従ってデータを再構成する。FTPPOP3TELNETなどで利用される。

UDP(User Datagram Protocol)

 トランスポート層プロトコルTCPとは違い確認無しでデータを送信する。通信の信頼性が低い半面、転送効率は良い。DNSDHCP、NTPなどで利用される。

DNS(Domain Name System)

 アプリケーション層のプロトコルで、Webサイトなどにアクセスする際にホスト名からIPアドレスを求めるのに使われる。この動作を名前解決と呼ぶ。

DHCP(Dynamic Host Configuration Protocol)

 アプリケーション層のプロトコルで、TCP/IP設定の自動化に使われる。配布する設定情報(=DHCPプール)を登録したDHCPサーバを同じネットワーク上に準備しておく。クライアントはブロードキャストでDHCPサーバと通信を行い、対話的に設定を行う。なお、ルータのDHCPリレーエージェント機能などを利用することで、1つのDHCPサーバを複数ネットワークで使うこともできる。

HTTP(Hyper Text Transfer Protocol)

 アプリケーション層のプロトコルで、ファイル転送に使う。ブラウザからリクエストをサーバに送り、そのレスポンスとしてファイルを取得する。FTPに比べると手間が少ない。

SMTP(Simple Mail Transfer Protocol)

 アプリケーション層のプロトコルで、電子メールの送信に使う。メールサーバにSMTPコマンドを送り、その応答を見ながらデータを送信する。

POP3(Post Office Protocol version3)

 アプリケーション層のプロトコルで、電子メールの受信に使う。電子メールサーバに問い合わせて、メール内容をダウンロードして読めるようにする。

IMAP4(Internet Message Access Protocol 4)

 アプリケーション層のプロトコルで、電子メールの受信に使う。メールサーバ上でメールを読める。サーバ上でメール管理をすることで、複数デバイスでのメール管理が容易になる。ただしサーバ負荷は大きくなるのでその点は注意。

 

まとめ

 ネットワークを考えるモデルとして、OSI参照モデルがある。TCP/IPは現在主流のプロトコルで、4つの階層の中でいくつかのプロトコルを組み合わせて通信を実現する。

参考書籍

 「Gene:著 『ネットワークの基本と仕組み』ナツメ社 2018年」

  「栢木厚 『栢木先生の基本情報技術者教室 第15版』技術評論社 2019年」

「ブレイン・マネジメント」を読んだ。(良い)

f:id:HoriK:20201118190849j:plain

ブレイン・マネジメント



概要

 「ブレイン・マネジメント」を読んだので簡単なブックレビューを書く。

 

動機

 コロナ時代に入り、一人で過ごす時間が圧倒的に増えたこともあってか以前からひどかった反芻思考がますます悪化し、その解決策を探していた。反芻思考とは、過去のネガティブな出来事を、現在の自分に何の影響を及ぼさないにも関わらず何度も繰り返し思考することで、自分の場合はこれが睡眠にも悪影響を及ぼしていた。そんなときに著者の吉濱氏の動画をYoutubeで見つけた。

参考

www.youtube.com

www.youtube.com

 内容が非常に実践的で興味を持ったので、吉濱氏の本を一冊読んでみることにした。

特に良いと思った部分

 1,ワーキングメモリを鍛える必要性

  この本は全体を通してワーキングメモリを鍛える必要性を訴えている。反芻思考もワーキングメモリに関連する要因が大きいようだ。ワーキングメモリの機能が弱いと、マインドワンダリング(課題無関連思考)が多くなり、また注意制御機能自体もきちんと機能しないので増えた分のマインドワンダリングを止められなくなる。人間は防衛本能により脅威、不快感には過敏に反応するので、増えすぎたマインドワンダリングは容易に反芻思考に変わってしまう。解決策としては、注意制御機能を鍛えること、メタ認知を身につけることが紹介されている。なるほど、解決策はあるわけだ。

 2,7日間ワーク

  この本には7日間のワークがついている。ワーキングメモリや抑制機能、注意制御機能、メタ認知等、能力ごとにワークがあるので自分に必要なものを選択して取り組む。いづれも簡単に取り組むことができるが、1,2週間続ければ結構効果を実感できると思う。自分はメタ認知と注意制御機能のワークに取り組んで反芻思考がぐっと減ったという実感がある。

全体としての感想

 この本は集中力がない、やる気が出ない、嫌なことばかり思い出す等、現代人の多くが抱えているであろう、ある種典型的な悩みに、その理由と解決策をあたえている。読みやすいが論理的で、ワークもあるので自分の能力になにか問題を感じている人は一読してみることをおすすめする。

参考資料

  「吉濱ツトム :著『ブレイン・マネジメント』株式会社シナノパブリッシングプレス 2020」

初学者がネットワーク像をなんとなくつかもうとしてみる。(LANが中心)

f:id:HoriK:20201029042531p:plain

概要

 LANを中心にネットワークのなんとなくのイメージをつかもうとしてみる。オープンネットワーク、クローズドネットワーク、LAN、WAN、イーサネットなど基本的な用語も触れてみる。

続きを読む

170 daily actions -英単語メモ(上)

f:id:HoriK:20201013172953p:plain

概要・動機

 170 daily actionsを読んでたらいろいろ知らなかったり忘れてた単語があったのでまとめる。ここではpart1-17のうちの前半部分(part1-8)までの単語を集めている。

続きを読む

シェル操作メモ2

概要

 Linux,Bashにおける基本的なコマンドをまとめている。前回の続き。よって注意事項も前回と同様で、コマンド、オプションもろもろ網羅的ではないので注意を。やはり細かい説明はマニュアルを参照すればいい話だから。

続きを読む

整数の補数表現について

f:id:HoriK:20201006214839p:plain


概要

 コンピュータにおける符号あり整数の表現方法をまとめている。

動機

 補数表現の意義がようやく理解できたので覚え書き。

内容

 コンピュータで符号あり整数を表現する方法として考えられるのは、

 1、先頭ビットを符号ビットにする

 2、1の補数を利用する(減基数の補数)

 3、2の補数を利用する(基数の補数)

 の3つであるが、一般的に利用するのは2の補数である。

 ここでは8bitのビット列で整数を表現することを例にして考える。

1、先頭ビットを符号ビットにする

符号ビット(1bit) 絶対値(7bit)

 この場合-127 \sim 127を表現できるが、+0-0が同じものであるにもかかわらず、1000000000000000の2通りが存在してしまうという問題がある。

 

2、1の補数を利用する

  これは元の正の数をビット反転することによって負の数を表す表現方法。

 10進数の5を、2進数で表現すれば00000101となる。これをビット反転して-5 = 11111010と割り当てることにする。

 これで符号ビットを使わずに負数を表現できるようになったわけだが、問題もあって、例えば次のような計算を考える。

5-5 = 0 

5+(-5) = 0

これはどちらも答えが0になるわけであるが、1の補数を用いた計算では

00000101 - 00000101 = 00000000 ←5-5=0

00000101 + 11111010 = 11111111   ←5+(-5)=0

と2つのビットが存在してしまう。

3、2の補数を利用する

 作業工程は1の補数と似ているが、とてもすごい効力がある。

 負数を表すときは、ビット反転ののち値を+1することにする。

 これに従えば、10進数の500000101、これをビット反転したのち+1して、

-5 = 11111011と表される。

 これで先ほどの 5-5 5+(-5) を計算する

00000101 - 00000101 = 00000000    ←5-5=0 

00000101 + 11111011 = 100000000   ←5+(-5)=0

ここで桁あふれしたビットを無視しすれば、

 100000000 = 00000000となり、2の補数で0の重複を解決できたことがわかる。

またここで注目すべき点は、加算で減算を扱うことができたということで、加算回路のみで加減算を行えたという点である。

つまり、2の補数を使って負数を表現することによって回路規模の縮小が図れる。これは2の補数表現が広く使われる理由の一つである。

まとめ

 2の補数表現を利用することで整数の加減算を加算回路のみで行うことができる。

参考文献

 「小柳滋、内田啓一郎『IT Text コンピュータアーキテクチャ改訂2版』情報処理学会 2019年」 第1章

   「栢木厚 『栢木先生の基本情報技術者教室 第15版』技術評論社 2019年」第3章