世紀末の墓

お気持ち.log

IT系寄りの雑記

NATとは

NAT(Network Address Translation) とは、一言でいうと

グローバルアドレスを節約するために、プライベートアドレスっての作って変換しようぜ

っていう話です。

これだと圧倒的説明不足感が拭いきれないのでちゃんと説明します。

NATのはじまり

ずばり、IPv4アドレスの枯渇対策です。

かつて、ネットワークに接続されている機器にはそれぞれに固有のアドレス(グローバルアドレス)が割り振られてました。
当時は、接続機器数も少なくて全然それで良かったのです。

今はどうでしょう。
当時とは比べ物にならないくらいインターネットが普及しました。
PCやネットワーク機器は勿論、スマホや家電だってインターネットに接続する時代です。

IPv4アドレスは32ビットで構成されているため、単純計算でも2の32乗で...約40億個しかありません。
到底足りません。


そこでグローバルIPの他にプライベートIPを作って、複数のプライベートIP→一つのグローバルIPっていう変換が出来ればいけんじゃね!?
っていうのがNATのはじまりです()

NATとは

NATは、プライベートIPとグローバルIPを相互変換する技術です。

画像で詳しく見ていきましょう。

例えば、このようなネットワークがあったとします。
f:id:silmin:20180114205915p:plain
インターネットにルーターを繋げて、そこにPC1~3を繋げている、ごくありふれた構成です。

ここで、各PCにはP1~3のプライベートIPが、サーバーにはXというグローバルIPが割り振られていることにします。

ルーターはこのP1~3をグローバルアドレスに変換するため、下のようなアドレス変換テーブルを持っています。
f:id:silmin:20180114205924p:plain

このテーブルを用いて、変換していきます。

では、PC2がサーバーに何かしらのデータを送りたいとします。

  1. PC2がIP: X宛にパケットを送ります。
  2. ルーターがパケットのヘッダの部分を見て、P2(送信元のプライベートIP)をG(グローバルIP)に変換します。
  3. ルーターは、サーバーに変換後のパケットを送ります。

f:id:silmin:20180114210807p:plain
※ヘッダ部分のIP表記がポート番号のようになってますが、スペースの問題上 送信元:送信先 と表記しています。

このように、複数のPCからでもプライベートIPを用いることで、グローバルIPを節約することができます。
ちなみに、アドレス変換テーブルに登録されていない宛先のパケットが来た場合は破棄されます。

NATの欠陥

このままでは欠陥があります。

プライベートなネットワークの中に、2つ以上のPC(端末)があると相手からの返答が受けられない。
です。

これは少し考えれば分かる話かと思います。

先程、PC2からサーバーまでは届きました。
それでは、サーバーからPC2まではどうでしょうか。

届かないのです。
サーバーは受け取ったパケットをヘッダを見て、IP: G から送られてきたということを知るため、Gに向けてパケットを送ります。
ですが、ルーターはどのIPに変換していいのやらさっぱりなので、2台以上のPC(端末)があった場合は通信不可となります。

よって、NATでは1対1の通信しか実現できません。

よく NATは1対1と言われてますしね。

この欠陥を克服するために、NAPT(Network Address and Port Translation)というものがあります。

察しの良い方はわかるかもしれませんが、名前にある通り「ポート番号」と言うものを使います。

これの記事も後々かきます。
書きました。
silmin.hatenablog.com

あけましておめでとうございます&2018年の抱負

あけましておめでとうございます。
2018年になりました。
年越しはコーディングしてました。

もう3ヶ月もしたら僕は北陸の民になります。(一人暮らし)

前年も色々あったけど、今年もたくさん頑張りたいということで抱負。

2018年の抱負

CTFをはじめ、いろんなことに挑戦してたくさん成果を生みたい

ということです。
やりたいことはたくさんあります。
野望もあります。
でも圧倒的に時間と金が足りなかった。

  • CTFで精進
  • ネットワーク・セキュリティ周りのおべんきょう
  • ゲームエンジンの習得
  • アプリケーション開発(ゲームでもなんでも)
  • 情報全般の知識・技能の底上げ

これらがさしあたってやりたいことです。

ゲームサークルを建てたいなぁってぼんやり考えてたりもする。
し、動画配信とかにも手を出していきたい感もある。


まあこんな感じで、2018年もよろしくお願いします!

pythonから書式制御文字でターミナルに色付けする

pythonから標準出力への色付けって、調べるとライブラリ使う系パリピ記事()がたくさんでてくるんですが、書式制御文字でもやれるで^^ということを紹介しようと思う。

まえがき

まあC/Ubuntuでやってる人いたから、python/Linux Mintでやろうっていうだけなんですがね。
www.mm2d.net
エスケープコードの細かい話はこの方の記事読んだら最強になれます。


本題

文字に色付け

print("\033[38;5;50mHello!\033[0m")

ってやると
f:id:silmin:20171204221826p:plain
って感じのがでてくるかな?

256色のリストを出してみる

for i in range(256): 
  print("\033[38;5;%dm%3d\033[0m " % (i,i), end="")
  if i % 16 == 15: print()

これで15ずつの表ちっくなのが出てくるかと思う。
↓こんなの
f:id:silmin:20171204220946p:plain

この値にそれぞれの色が対応してるって感じですね。
上の記事の人は16進でやってたので僕は10進でやりました。


まとめ

上の記事がぐう有能で正直あまり書くことなかったなら書くな
まあ今後その記事を発見できるかわからんので、メモってことで。
つかリンク貼ってるなら見失わないのでは

エスケープコード諸々は基本的に言語に関係なく使える(ターミナル側が解釈する)ので、ライブラリとかなくても全然色付け可能やで^^

ネットワークアーキテクチャはなぜ階層構造なのか

OSIプロトコルもといOSI参照モデルは7階層、TCP/IPは4階層です。

ではなぜ、階層構造になっているのでしょうか。
それぞれやくめが違うからといってしまえばそれまでですが、ちょっと説明させてください。

事前に

これらの記事を読んでおくと幸せになれるかも(露骨)
OSI参照モデルとは - 世紀末の墓
プロトコルとはなんだろう - 世紀末の墓

本題

いきなりネットワークアーキテクチャはなぜ階層構造?と考えるまえに・・・
これは通信においての、必要なプロトコルを階層に分類したものですよね。

もっと簡単にいうと、これは通信についてのことです。
通信というと硬そうだけど、「会話」や「手紙」だって通信です。

ここで、「会話をする」という通信を考えてみます。

会話をする

ここでは電話を使ってビーチの話をする男女を挙げようかと思います。

f:id:silmin:20171125233547p:plain

画像からもわかるように、共通部分がいくつかあると思います。

これらはどれも両者で共通していないと、会話という通信は成立しません。
男性の方はビーチの話をしているのに、女性の方はレストランの話をしていたとしたら
会話は成立しませんよね。

共通していればいいから・・・

共通していれば通信は成立するのだから、ということで一つ入れ替えてみましょう。

f:id:silmin:20171125234103p:plain

両者共に日本語を使っていたところを、英語を使うようにしてみました。

これも問題なく通信できますよね?
電話→メールにしても
ビーチ→レストランにしても
両方が共通していれば、通信は何ら問題なくできるはずです。

なにが言いたいの

勘の良い方は気がついたかもしれません。

これがコンピュータ同士の通信だとしたら、どうでしょうか。

コンピュータ同士でも同じなはずですね。
7層のうちの1層に変更があっても、他の層にはその変更は影響しません。

これが階層化されている理由です。


は?
そんなんで説明した気になるな、いまいちわからんぞ。

そうでしょうそうでし(殴
ちゃんと説明します。

各層はそれぞれ独立している

アプリケーション層~物理層は、それぞれ独立しています。
そのため、どれか一つが入れ替わっても他の層には影響しません。

1つの層が新しくなるたびに、毎回全部作り直していたら非効率すぎますし。


物理層を例にあげます。
通信につかわれるケーブルはたくさんありますよね。
LANケーブル(より対線)、同軸ケーブル光ファイバー...

これから新しい技術がでてきて、それに置き換わる可能性だってあります。

でも、それらにはアプリケーションの形式やアドレス体系などは影響されません(そのまま使い続けられます)よね。


これが階層構造となっている理由です。

まとめ

ネットワークアーキテクチャのそれぞれの層は独立していて、
特定の層の変更が他に影響を及ぼさないため、効率的!

OSI参照モデルとは

この記事では、OSI参照モデルについて僕が学習したことをつらつら書きます。
どうでもいいと思った項目は好きに飛ばしてください。

どうでもいい話

基本情報技術者試験とかにはバリバリ出てくるけど、中身よくわからんとか、
情報を勉強し始めたときに出てきたけど、正直なんのためにあるか知らんとか、
これって結構最初に出てきて大事なのに、よく知ってる人って少ない感じがしてます。

まあ知らなくても使えちゃいますしね(現に僕も使えてる)

そんな人達のためになったらいいなぁということで書いてます。
一応筆者は基本情報技術者は持ってる(応用は受けたけど受かってるか知らん応用も取る気ではいる)

歴史とか成り立ちとか

OSI参照モデルとは、元々OSIプロトコルという、ISO(国際標準化機構)によって標準化されたネットワークアーキテクチャから来ています。

ネットワークアーキテクチャ
プロトコルを階層構造で体系化したもの
プロトコルスタックプロトコルスイートとも呼ばれる


コンピュータ通信が始まった頃、メーカによって独自のネットワークアーキテクチャが乱立しました。
アーキテクチャの異なるネットワークとの通信は困難なため、

「ネットワークアーキテクチャ標準化しようぜ」

という動きに。

そこで登場したのが(大きく分けて)

の2つです。

まあ色々なんやかんやあって、TCP/IPが標準のネットワークアーキテクチャとなりました。
今でもTCP/IPが標準となっており、本もたくさんありますね。
※なんやかんやのところはまた追々。

それでも、OSIの論理モデルが色々を理解するのに優秀だったので、ネットワークの基本モデルとして普及します。

それが「OSI参照モデル」というわけですね。


OSI参照モデルの概要

OSI参照モデルは、7階層に分かれていて、通信機能を理解するのに有用です。

  1. アプリケーション層
  2. アプリケーション間通信に必要な固有の部分を決めてる(アプリケーション固有の形式等)
  3. プレゼンテーション層
  4. ネットワーク上で扱うデータの形式を決めてる(文字コードはマシンやOSによって違うけど読めるよね)
  5. セッション層
  6. 通信形式の決定やデータ転送のタイミングを決めてる(トランスポート層にコネクションに関する指示)
  7. トランスポート層
  8. アプリケーションの識別とデータ品質の保証をしてる(複数ソフト使っててもそれぞれに届くよね)
  9. ネットワーク層
  10. 終端ノード間(End-to-End)の通信を実現してる(IPアドレスとか経路制御とかしてる 一番働き者かも?)
  11. データリンク層
  12. 隣接ノード間(Link-by-Link)の通信を実現してる(具体的な通信手段やフレームの生成、MACアドレス周り)
  13. 物理層
  14. ビット列と信号との変換、ケーブルとかの規定をしてる
となっています。
上から「アプセトネデブ」とか言って覚えた記憶があります。

正直、()の中身がほぼその詳細です。
それぞれを規定してるのがプロトコルってことですね。
silmin.hatenablog.com
ちなみに、↑の記事で書いてるHTTPはセッション層、IPはネットワーク層プロトコルです。

それぞれの層やプロトコルについては、ちゃんと説明する記事を書こうと思ってるので、しばらくお待ちをば。
ググったほうが早そう

プロトコルとはなんだろう

プロトコルとは、一言で言うと「通信においての共通のルール」のことです。


よく見たり聞いたりするであろう「HTTP」とか「IP」とかもこのプロトコルの一つです。

もうちょい詳しく

プロトコルとは、「通信においての共通のルール」と言いました。

このプロトコルには、色々な種類があってそれぞれが決まりごとを示しています。
例えば、色々な通信方式があるなかで、パケット交換方式を例に挙げてみましょう。
パケット交換方式とは:通信方式の分類について - 世紀末の墓

元データをパケットに分割して送るときに、ヘッダーを付けますよね。
そのヘッダーの形式だったり番号の指定の仕方だったりが規定されてます。

ヘッダーの一番最初の◯bitはこの情報....みたいに。

それ以外にも、インターネット上には自分が送りたいデータ以外のデータも勿論たくさん流れています。
そんな中でパケットの順番の番号だけあっても、受け取った側がAのデータの1番とBのデータの2番を繋げてしまうかもしれませんよね。

ココらへんもどうするかが規定されています。

そんなこんなでプロトコルとなっています。

ちなみに、プロトコルは階層になっていてそれぞれ独立しています。
例えば、接続端子の規定とかアプリケーション側の規定は全く別のもので、どちらか一方が変更されても、もう一方には関係ないですよね。

これが実はOSI参照モデルと関係してきます。
ここらへんも記事にしたいと思ってます。
(記事にしたらここにも貼る)

通信方式の分類について

ネットワークの分野で通信通信と一口にいいますが、通信にも幾つかの方式があります。
ここでは、その紹介と説明をしていきます。
この記事は通信とか回線がゲシュタルト崩壊する可能性を孕んでいます。

通信回線の使い方による分類

これには「回線交換方法」と「パケット交換方式」があり、
それぞれ特徴をもっており、場面によって使い分けられています。

  • 回線:信号の通り道のこと。「物理的な回線」と「論理的な回線」が存在する。

回線交換方法(回線占有方式)

その名の通り、回線を交換(占有)して通信を行う通信方式です。
これが一番イメージしやすい(ごく普通に思いつく方法)だと思います。

画像のAさんとEさんが通信したいとします。
f:id:silmin:20171118211857p:plain


すると、回線交換機は空いている回線を使ってAさんとEさんを物理的に接続します。
f:id:silmin:20171118211852p:plain

こうして、Aさん→Dさんの物理的な回線が確立したため、通信が可能となります。

利点
  • 通信の品質や速度を一定に保つことが容易
    • 回線を占有しているため、安定しやすい
欠点
  • 物理的な通信回線数によって、確立可能な通信の数が制限される
  • 途中で回線が切れた場合、最初から通信確立手順のやり直しが必要となる

図のオレンジの部分の回線は占有されているため、他の人は使うことができません。
よって、この図の場合だと1対1の通信を2つしか確立できません。

この方式は、(IP電話等を除いて)電話が一番わかりやすい実用例だと思います。

パケット交換方式

こちらは聞き慣れないかもしれません。
送りたいデータを「パケット(小包)」に分割して送る、という方式になります。


f:id:silmin:20171118222552p:plain
↑のように、パケットにヘッダーが付いているため宛先側で再構築することが可能です。

これを先程と同じメンバーの所に落とし込むと...
f:id:silmin:20171118224821p:plain
のような形になります。
Aさん→Eさん、Cさん→Fさん、Bさん→Dさん
それぞれの通信が一つの回線で実現できることがわかるかと思います。
一般にパケット交換機は「ルータ」と呼ばれます。

利点
  • 同時通信の数に、回線数による制限がない
  • 1対多の通信ができる
  • パケットのエラーや喪失は、そのパケットだけ再送することで解決できる
    • 他のパケットは届いているため、損失したパケットのみ送り直せばいい
欠点(?)
  • 通信の品質や速度が、回線の混雑状況によって変化する
    • 空いている:高速、高品質
    • 混んでいる:低速、品質の劣化(エラーの増加)

相手の存在を確認するかどうかによる分類

コネクション型通信

  • コネクション:物理的な回線とは関係なく、通信相手との間に存在する論理的な通信路

この通信は、相手が存在するかどうかを確認し、コネクションを確立して通信を行います。

特徴

基本は1対1の通信で、信頼性が高い。
1ビットの誤りも許されないようなデータを送るようなときに使用されます。

コネクションレス型通信

この通信は、名前の通りコネクションを確立せずに通信を行います。
つまり、相手がいてもいなくてもお構いなしに一方的に通信を開始します。

特徴

信頼性は高くないですが、コネクション周りの処理が無い分、高速な通信が可能です。
1対多や放送のような一斉送信が可能です。
ストリーミングデータ(例:youtubeの動画)などは品質よりも速度を重視するため、コレが用いられます。


コネクション型通信とコネクションレス型通信は、
用途によって使い分けます。

通信対象をどう選ぶかによる分類

ユニキャスト

1対の通信

ブロードキャスト

1対全体の通信

マルチキャスト

1対特定の多数の通信

エニーキャスト

1対特定のグループ内のある条件を満たす1つの相手の通信

まとめ

ざっとこんなもんでしょうか。
一口に通信といってもたくさん方式があるんですね。

色々とゲシュタルト崩壊してきたので、この辺にしておきたいと思います。
またそれぞれ詳しく掘り下げたり、主要プロトコルの話とかもしていきたいです。

劣等感や焦燥感がやばいって話

最近、あまりにも劣等感や焦燥感がやばくてやばいって話。

劣等感がやばい

他人に自分が劣ってるってめちゃ思う。
識高い系の人とかプロの人たちを見てるとホントこうなる。

でも、その人達より自分の方が優れている要素だってあるわけで。

というか優れているとか劣っているとかどうでもいいわけで。

って思っているけど、やばいわけで。

焦燥感がやばい

劣等感から来るものなのか知らんが、「やりたいこと」が多い割に「タスク」が多すぎて。
かつ、時間も全然なくて。

卒業するまでにしたいことがたくさんあって。

でもタスクに阻まれてできなくて。

そんなこんなで焦燥感が止まらないわけで。

つまり

劣等感と焦燥感は割りと相互に作用しあってる部分があると思ってる。

劣等感があるから、普段よりも「やりたい」より「やらなきゃ」が増える。
これは焦燥感に繋がる。


全然やりたいことがやれて無くて、自分が今やれてない間にやれてるやつ、いいなぁって。
そっから焦燥感が膨れていって。

自分が何もできなかった間に、めちゃ成長してる人をみて「すごいなぁ」より「なんで僕は...」って方が強くなって。

結局、劣等感が生まれて。


みたーいなのがあると思う。


まあ両方共、単品で持ってる人や原因が別な人とかもたくさんいるけど。

僕はこのパターンが多いなぁって。


結論

人には、脳の処理速度の速い遅いがあるし、得意不得意があるし。
時間のあるないだってあるし、環境のあるないだってある。

でも、自分と他人を比べたってしょうがないし、それで自分のやりたいことが大きく変化するわけでもない。

だったら自分は自分でいいじゃない。って話。


まあそれが定期的にできなくなるからこうなってるんですけどね。



文字に起こすことで割りとスッキリすることが多いから、記事にしました。

コマンドとは?の話

コマンドコマンドってよく耳にするけど、一体何?という方や
コマンド操作習得したいけど、さわりからどんなふうにしたらいいかわからないという方
向けの記事です。

コマンドって?

コマンドとは簡単に言うと、「命令」です。
中身は実行ファイルになっています。

コマンドを叩くことによって、対応したファイルが実行され、そのコマンドに対応した動作をする。
という感じです。

ちなみに、PATHを通すと自作のコマンドも普通に使うことができます。

PATHって?

PATHとは、コマンドの実行ファイルの場所を示すパスが格納されている変数です。
コマンドが実行されるときに、その中を検索して、対応した実行ファイルを見つけて実行します。

ここに、自作した実行ファイルのパスを追加しておくと、普通のコマンドのように使うことができます。

どう使うの?

基本的には、コマンドライン上で使います。

コマンドラインって?

コマンドラインとは、よく見るデスクトップではなく文字だけの画面(インタフェース)を言います。
文字のみのインタフェースを、CUI(Character User Interface)と呼んだりします。

「シェル」や「ターミナル」って呼んだりもします。

なんで呼び方がたくさんあるのって言うのは、結構複雑で分りづらい説明になってしまうので使っていって学ぼう的なスタンスで.....^^;
でも、結構混同されていて、何がなんだかって感じになってる人もたくさんいます。

使い分けについてこちら参考になりますぞ。
qiita.com


こんな感じのやつです↓
f:id:silmin:20170928233534p:plain

起動方法

windowsコマンドプロンプトPowerShell
コマンドプロンプト:Win + R で出てきたダイアログに「cmd」と入力し、Enter
PowerShell:Win + R で出てきたダイアログに「PowerShell」と入力し、Enter

Linux:端末、エミュレータ(ディストリビューションによって呼び方が違う)
Linuxコマンドラインは、色々設定することで好みのものに変更できます(bash(標準),zsh...)
方法は、
デスクトップを右クリックで「端末」を選択するとか。
メニューから「端末」を選ぶとか。
ショートカットを使うとか。
なければ「ターミナル」とか「◯◯term」みたいな名前のヤツを探してみたり。

実際にやってみる

......と言っても、ディレクトリ階層についての理解が必要です。
不安な方や分からない方はこちらを参照ください
silmin.hatenablog.com


....理解できましたか?

ちなみに、特に設定しない限り、コマンドラインを開いたときのカレントディレクトリは、ホームディレクトリです。

ディレクトリの中身を見る

ディレクトリの中身を見るコマンドは「ls」です。
Linux:

$ ls

Windows:

$ dir

と入力してEnterしてみてください。

なにやら色々出てきましたか?
それが、今いるディレクトリ(カレントディレクトリ)の中身です。

このコマンドが一番使うかと思います。

このコマンドはカレントディレクトリだけでなく、パスをしていすることで任意の場所のディレクトリの中身を見ることができます。

Linux:

$ ls ./downloads/

Windows:

$ dir .¥downloads¥

これはカレントディレクトリの中のdownloads/の中身を表示する、という操作です。

ちなみに、お分かりの通り、場所を指定しないとカレントディレクトリの中身の表示になります。

カレントディレクトリを移動する

移動できないと、ひとつのディレクトリから、長ーいパスを毎回書かなきゃならんのです。
いやだねぇ。

カレントディレクトリを移動するコマンドは「cd」です。

共通:

$ cd ./downloads/

こちらは ls と違い、パスを指定しないということはできません。

ファイルをコピーする

ファイルをコピーするコマンドは「cp」です。
copyの略でしょうか。

共通:

$ cp test.txt ./downloads/

このように、場所のみ指定すると、その場所に同じ名前で複製されます。

$ cp test.txt ./downloads/hello.txt

このように、ファイル名まで指定すると、そのファイル名のファイルとして複製されます。

ファイルを移動させる/リネームする

ファイルの移動やリネームするコマンドは「mv」です。

共通:

$ mv test.txt ./downloads/

これは、カレントディレクトリにある test.txt を ./downloads/ に移動させます。
移動なので当然、元の場所からはなくなります。

$ mv test.txt hello.txt

これは、カレントディレクトリにある test.txt を hello.txt にリネームします。
test.txt を hello.txt に移動した、というイメージでどうでしょうか。

ファイルを削除する

ファイルを削除するコマンドは「rm」です。

Linux:

$ rm test.txt

Windows:

$ del test.txt

これは、カレントディレクトリのtest.txtを削除します。

まとめ

ざっとこんな感じで理解いただけたでしょうか。
理解できない部分があれば、お気軽に質問ください。
僕の勉強にもなります。

ちなみに、コマンドにはオプションがあって、それをつけることでいろんな使い方ができます。
ちなみにちなみに、コマンドの使い方を教えてくれる「man」コマンドというものもあります。


相対パス絶対パスの話もしたいなぁ。

ディレクトリ・階層 の話

よく

./download/hoge.exe

みたいなやつ(linux)とか

C:¥Users¥hoge

みたいやつ(windows)とか
見たことありませんか?

それのお話です。

これなに?

これらは、ディレクトリ階層(構造)と呼ばれるもので、ファイルやディレクトリの場所を表しています。

ファイルって?

コンピュータを人間が使う時の基本的な単位、となります。

音楽(.mp3 .wav ...)もファイル
画像(.png .jpg ...)もファイル
テキスト(.txt)もファイル
エクセルやワードのデータ(.xls .docs...)もファイル
.exeもファイルです。

それ以外にも、ファイルにはたくさんの種類があります。

※ちなみにファイル名のうしろの.◯◯は「拡張子」といいます。
 一般に拡張子はファイルの種類を区別するためのものです。

ディレクトリって?

ディレクトリ」は、windowsで言う「フォルダ」のことです。
windowsでは「フォルダ」という言葉を使っていますが、一般的には「ディレクトリ」といいます。

なかにいろんなファイルがたくさん入ってるやつのことですね。
f:id:silmin:20170927193434j:plain
これですね。

本題

ファイルとディレクトリについてはなんとなくわかったから、本題に入れよ。

........入ります。


ディレクトリ階層というのは、簡単にいうと「ディレクトリの中のディレクトリの中のディレクトリの中の.....」ってことです。



は?


^^;

ディレクトリの中には、ディレクトリが入っても何も問題はありません。

そのため、「ディレクトリの中のディレクトリの中のファイル」みたいなこともたくさんあります。


このような「木」みたいな感じで考えるとイメージし易いでしょうか...?
f:id:silmin:20170927200205p:plain


各ファイルやディレクトリはこのような形で管理されています。


では

./download/hoge.exe

みたいなやつについて

これは、ファイルの場所を示しています。

ディレクトリ◯◯の中の~って示すときには、/(スラッシュ)を使います。(windowsだと¥(円マークorバックスラッシュ)
というか、ディレクトリを示すときは名前のうしろに / を付けます。

また、自分が今いるディレクトリのことは「カレントディレクトリ」、自分のユーザーのディレクトリのことを「ホームディレクトリ」、と言ったりします。

windowsを表面だけ使っている分には意識しませんが、通常、このディレクトリを移動しながら色々な操作をします。
※移動等のめちゃよく使うコマンドについては後日記事にします。

カレントディレクトリの中にディレクトリを作って~その中に移動して~みたいな。

「.」はカレントディレクトリを示していて、「..」はカレントディレクトリを含んでいる一つ上の階層のディレクトリを示しています。

今いる場所が

/home/silmin/download/

だった場合(カレントディレクトリはdownload/)
../ は silmin/ を示します。


こういう、ファイルやディレクトリの場所を示したモノを「PATH(パス)」と呼んだりします。

まとめ

今回は、PATHについての説明をしました。
理解いただけたでしょうか?
イマイチよくわからなかったら質問してくれるとありがたいです。
プロの方々からの指摘もお待ちしています。(知見を吸収したい)

以上、動画視聴やwebページ閲覧等をしているだけだと全く触れない部分だけど、知っていると嬉しいことでした。

ボソッ(ちなみに、URLにも似た部分があるよね)