Help us understand the problem. What is going on with this article?

やっとこわかった通信方法(TCP/IP,UDP,SSL/TLS)

TCP/IPやUDPなどルーターの設定画面を開くと出てくる謎の単語について、どういう役目をしていてどういうときに気にすればいいかを調べたので残します。ネットやwikipediaを調べて自分なりに理解した結果なので間違っている可能性があります。もし間違いがあったら教えてくれると助かります。

TCP/IP参照モデルとOSI参照モデル

TCP/IP参照モデルはインターネット・プロトコル・スイートの規格に沿ったもので製品に使われている規格
OSI参照モデルは開放型システム間相互接続という標準の策定中に生まれ、概念だけが生き残ったネットワークの基本モデル。らしい。
基本的に家庭向けの機器はTCP/IPに準拠してるのでPCとルーターがどこのメーカーのものでも基本的につながる。金融システムとかの大規模なネットワークにはSNAとかいうOSIのパクリ元の仕様があって専用機器が必要。一般家庭の小さなネットワークではコスパは悪いが規模が大きければそれだけ有用で今でも使われてるらしい。

具体的には

規格戦争はどうでもよいので具体的にそれが何なのかというお話。

IP(とポート)

Internet Protocol. IPアドレスのこと。ネットワーク上の住所とよく解説されます。よくみる192.168.0.1とかの形式はIPv4で、IPのversion4という意味。アホみたいな長さのIPv6はversion6です。5はうろ覚えですがiPhone9,やWindows9専用のものだったと思います1
グローバルIPアドレスというプロバイダからもらうIPと、LAN内DHCPサーバーからもらえるプライベートIPアドレスがある。グローバルIPアドレスは番地でプライベートIPアドレスは部屋番号のようなもの。
どちらもつながっているネットワーク分のIPアドレスが割り当てられる。

IPの枯渇

グローバルIPアドレスは世界中で一意(自分の(家の)グローバルIPアドレスは自分(の家)だけを指す)で、ドメインと同じように各ISPに割り振るIPをレジストリが管理していたが、2019年11月25日にすべてのレジストリでIPアドレスの在庫が枯渇した。こまったね。

ゲートウェイ

ゲートウェイはルーターのことで、TCP/IPで決められたゲートウェイをルーターと呼んでいるらしい。
基本的にはこのルーターが外部との玄関口になっていて、外部からのパケットをローカル内のどこに割り振るかをよしなにしてくれている。これをポートをファーディングや静的IPマスカレードという。名前がカッコイイ。
宛先が特定できなくなるため、一つのグローバルIPアドレスで待ち受けるポートはLAN内で重複できない。

サブネットマスク

よくルーターの設定でサブネットマスクとかいうものがある。たいていは255.255.255.0とか、192.168.0.1/24とか書いてある。
これはネットワークを分割する的なやつ。同じLAN内にいるとIPアドレス指定で直接相手と通信できるが、たとえばオフィスなどでは部署ごとにネットワークを分割したい時がある。ネットワークが同じ場合は相手のプライベートIPアドレスを指定すれば直接やりとりできるが、別のネットワークの場合はまずルーターに問い合わせてから接続しなければならない。ルーターを追加して繋ぎなおすのは手間なので、このサブネットマスクを使って別ネットワークという扱いにする。これをサブネット化という。
用途はネットワークを小分けにすることでイーサネットでMACアドレスを調べる際にすべてのホスト(IPが割り当てられた機器)に問い合わせが発生する(ARP)のを少なくするなど。

IPアドレスの4個の値は0-255までの8bit(1byte)なので、合計で32ビットの情報になる。
たとえば255.255.255.0は上位24bitが1で下位8bitが0
11111111111111111111111100000000
そしてプライベートIPアドレスが192.168.1.1だった場合
11000000101010000000000100000001
となる。
サブネットマスク名前の通りマスクビットのことで、この場合では左から24桁がマスクされていることになる。ビット演算のマスクはいろいろ使い方があるけれども、今回の場合はこのマスクの範囲が同じなら同じネットワーク、ということを指定しています。
255は全ビットが1になるので、この場合は192.168.1.0-255が同じネットワークですよということになる。これは192.168.1.1/24とも書けて、/24というのは左から何ビット目までをマスクするかというCIDR記法とかいう書き方。0の個数で割り当てられる台数が変わる。このマスク部分をネットワークアドレス、マスクされてない自由な部分をホストアドレスと呼ぶ。

イーサネット

ALOHAシステムが元になった。MACアドレスを割り振る。有線LANの規格。

無線LANとWi-Fi

無線LANの規格は802.11で、aとかcとかacとかの規格がある。Wi-Fiは規格ではなく登録商標。802.11の各規格間の接続を保証できるという認定。これが表示されている機器同士は接続できる保証があるので安心して買ってねというアピールのために売りたい側は認証を受ける。認証があるかないかで機能が違うわけでもなく、実際にニンテンドーDSは認証されていない。

TCP/UDP

TCPはTransmission Control Protocol、伝送制御プロトコルという(wiki)
これは別に使うのがUDP(User Datagram Protocol)。
TCPはセッションを確立して1対1で通信を行い、エラーチェックやパケット欠損時の再送などデータを正確にやりとりするための機能があり、信頼性が必要な時によく使う。HTTPやSSHなんかはTCPの上でやりとりする。オーバーヘッドが大きいので低速。
UDPは途中で少しデータが抜けてもよいよっていう場合に使う。音声や動画ストリーミング、MMOなどのリアルタイム性が重要になるときによくつかう。

ポート

TCPもUDPもそれぞれポートを割り当ててそれをエンドポイントとして通信を行う。有名なのはhttpの80番やsshの22番など。
ポート番号は65535まであり、0-1023はウェルノウンポート番号と呼ばれて特定のサービスに割り当てられる。一般的に利用されるHTTP,SSH,FTP,telnet,SMTP,IMAP,POP3(とそれぞれのover SSLやらsecure **)が3桁以下なのはそのため。
1024-49151は登録ポート番号といい、ウェルノウンポート番号と合わせてIANAという団体が管理していたが、今は1024-65535まで自由に使ってよいよという感じらしい。
クライアント-サーバー間通信で特定のポートを指定しない場合はこの1024-65535の範囲のポートを動的に割り当てられる。といっても範囲はOSによって様々。

多くのLinuxカーネルは32768から61000を使う。割り当て範囲は/proc/sys/net/ipv4/ip_local_port_rangeに書かれている。2

らしい。

TLS/SSL

一体いつからSSLだと錯覚していた

TLSはSSLの後継で、普段SSLって言ってるのはもう全部TLSらしいです。

しかし、「SSL 3.0」も2014年9月に仕様上の脆弱性(POODLE)が発見され、根本的な対処法としては「SSL 3.0」を無効化するしか方法がありませんでした。そのため、2015年6月にはIETF(インターネット技術タスクフォース)※によって「SSL 3.0」の使用は禁止されました。3

おわりに

なんか半端に調べたせいで余計に知らない気がしてきました。ネットで調べた程度の知識なので指摘や参考になる書籍などあればぜひ教えて下さい。


  1. 世の中には飛ばしてしまいたい数字がどのシリーズにもあります。PHP6やみなみけ2期など 

  2. https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%95%E3%82%A7%E3%83%A1%E3%83%A9%E3%83%AB%E3%83%9D%E3%83%BC%E3%83%88 

  3. https://ssl.sakura.ad.jp/column/ssl_tls/ 

mkazuyuki2
結局駆け出さなかったエンジニア
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした