【初心者必見】NAT, TCP, UDPなどを徹底解説!わかりやすく説明します!

インフラ

こんにちは。KATUOです。

今回は「NAT, TCP, UDP等の仕組み」について書いていきます。

 

NATについて

NATとは

network address transkationの略です。

 

例えば2っのグローバルアドレスを持つとします。これを3つのPCからデータをサーバー側に送信したいとき、先着順で2つのグローバルアドレスを取り合い、最終的には3つのPCからサーバー側にデータを送れるようにする仕組みのことを指します。もう少し説明を付け加えるならば、プライベートアドレスを複数用意して、グローバルアドレス1つと結び付けるのを管理してくれるっていうわけです。

 

NAPTについて

NAPTとは

network address port translation の略です。

 

先ほどのNATの図では2本のグローバルアドレスを使用していましたね。しかも先着順で。私たちのような個人の使用でグローバルアドレスを複数用意するのはコスパ悪い&誰かが占有してしまうという課題がありました。ここで登場したのがNAPTです。ルーターとなる部分のIPアドレスは1つで、複数のPCからインターネットが利用できます。これはルーターのIPアドレス+PC毎のポート番号を割り当てることでこれを実現できます。ちなみにサーバー側からはポート番号を知ることはできません。

 

TCPについて

TCPとは

transmission control protocol の略です。TCPとは通信方法のことを指しており、相手と通信が取れたことを確認した上で行われる通信方法です。また自分が送ったデータが相手にきちんと届いたかどうか確認することができるため、確実な通信方法としても知られています。

 

通信を始めるときのフロー

上の図からSYNフラグとACKフラグというものが登場していることが見て取れます。これはそれぞれ

 

SYN:通信をしたいという趣旨

ACK:通信を許可するという趣旨

 

の内容が含まれています。

 

通信を終える時のフロー

今度は新しくFINフラグというのが登場していますね。これは

 

FIN:終了したいという趣旨

 

が含まれています。通信を開始から通信終了までの流れがきっちり決まっているのがTCPの特徴とも言えます。またパケット(送信されるデータ)のヘッダーにはシーケンス番号というものが組み込まれており、データが破損していないかどうか確認することができます。つまり信頼性が保たれた通信方法なんですね。

 

 

UDPについて

UDPとは

User datagram protocolの略です。TCPとは異なり、相手との通信の確認なしで一方的にデータを送信する通信方法です。ちょっと聞こえが悪かったかもしれませんが、送信側がデータを送信し、受信側はただデータを受信するだけでいいので通信の際のコストが抑えられるという通信方法です。

 

データの送信フロー

TCPと比べて、圧倒的にシンプルなのが確認できますね。

 

メモリインターリーブ

メモリを仮想的に分身させることによって、同時に処理を行い、CPUとメモリとのやりとりを高速化させる技術です。

 

CPUとメモリ

CPUは計算を行う部分

メモリはCPUが計算を行う上で必要な情報を置く部分

 

仮想的に分身ってどいうこと?

実際に1GBのメモリがあって、これを分身することで2GBにできる。なんてこと物理的に不可能ですよね。実際にどのようなことが起きてるかを解説していきます。まず、メモリを複数のメモリバンクに分割します。このメモリバンクというのはメモリ内での論理的な構成単位、すなわちメモリを分割したときの単位を表していると考えて問題なさそうです。もちろん分割したメモリを全て足し合わせると分割する前のメモリと同じサイズになるのはいうまでもないでしょう。分割することによってメモリとCPUとのデータ転送にかかる時間が軽減します。申し訳ないのですが、この技術的なところに関しては調べても理解できませんでした。ただ、イメージとしては分割することで、メモリの奥に保存していたデータの出し入れがにかかる時間が減るみたいな感じなんですかね。あくまでも推測です。

エンジニアにイチ押しアイテム

目の疲労回復グッズ

ディスプレイをずっと見続けた時の目の疲労感ってすごいですよね。血行が悪くなっているというかズーンて重い感じがして、ひどい時は気持ち悪くなったりした経験をもつ人も多いのではないのかと思います。目って今後生きて行く上で非常に大切なものですし、ちゃんとにケアしていきたいものです。そこで私が日常的に使っている目のマッサージアイテムを紹介します。

アイマッサージャー 二年間保証 最新グラフェン加熱技術 目元マッサージャー

私は寝る前必ず使用しています。15分間目を40°で保温&マッサージしてくれて、本当に極楽の時間です。その後は快眠で、翌日の朝の目の疲労度が全くなくなりました。Amazonのレビューがこの商品の良さを物語っています。

筆者
筆者
303件レビューがついてて、評価が4.7と購入した方の殆どが「非常に満足」しているコスパ最強!超オススメのアイテムです!

コスパ最強20㎏×2ダンベル

実は筋トレって記憶力を向上させる効果があるんです。米国のジョージア工科大学が筋トレを20分間行なうと、記憶力が10%ほど向上するこという研究結果を最近発表したほどです。私はここのところ、老化からか体型が崩れてきたのに危機感を覚え購入。実際に筋トレしてみると筋トレ後のすっきり感がやばい。勉強の集中力も確かに上がるような気がしました。また、腕立てとかじゃ鍛えにくい肩なんかもパンパンになるので、男らしい体型を手に入れたいなと少しでも思っている人は買うべきアイテムだと思います。中でも以下のダンベルはAmazon内での評価が非常に高いので迷ったらこれを買いましょう。

ダンベル 【最新進化版・3in1】Wolfyok 純鋼製アレー アレイ 20kgセット(10kgx2) 30kgセット(15kgx2)
筆者
筆者
マシンを使って筋トレすると自重の筋トレ系、腕立て・腹筋・背筋が だいぶ楽になるので習慣化しました!また積極的にランニングしたり食生活を気に掛けるようになるので購入することをお勧めします! (体験談)

座椅子DIYで疲労防止

長い間椅子に座って作業することはエンジニア、理系学生にとってはつきものだと思います。ですが、この椅子の性能によって作業後の疲労感が全く異なるということを意識したことがありますか?私は以下の2つのアイテムを使って座椅子をゲーミングチェア並みにアップデートしました。おかげで姿勢が安定し、作業後の疲労感も減りました。また何より集中して作業に打ち込めるようになりました。

IKSTAR クッション 低反発 座布団 第五世代 オフィス IKSTAR クッション 低反発【メーカー直営・1年保証付】 ランバーサポート
筆者
筆者
座椅子にホールド感が出て、座り心地が格段に向上します。長時間座っていても疲れにくくなるので引きこもりにならないように注意しましょう!作業に夢中で1日中座りっぱなしだった経験があるので...

コードの可読性を高める

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

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

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

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