編集部イチオシ
2021年9月24日

TCP/IPを全くやったことがない人が勉強を開始するには?

128
小川晃通(あきみち)PhD。YouTubeでIPv6やTCP/IPの解説動画作ってます! @geekpage

TCP/IPを全くやったことがない人が勉強を開始するには何が良いだろう? 個人的には、何らかのプログラミング言語を使ってTCPのサーバとクライアントを作ってみたりとか、シンプルなネットワークを自分で構築してみることがお勧め。 本を読むだけよりも作ってみるの大事!

2021-09-23 22:24:46
小川晃通(あきみち)PhD。YouTubeでIPv6やTCP/IPの解説動画作ってます! @geekpage

昔は、まずはUTPを自作してみようみたいなノリが多かったけど、最近は環境が用意されてない限りはケーブル作りからはお勧めしないかも。 ただ、環境があるのであれば、物理的に繋がるものを作るというのは楽しいとは思う。

2021-09-23 22:26:05
小川晃通(あきみち)PhD。YouTubeでIPv6やTCP/IPの解説動画作ってます! @geekpage

TCP/IP関連の勉強って、本だけを読んでも実感しづらい気がしている。 そして、同じTCP/IPだとしても、結構いろいろな分野があるので全部カバーは無理ゲーなイメージ。

2021-09-23 22:28:12
みつひろ5656🐶⭐️ @GenkgGorosuke

作ったネットワークをWiresharkで見ることもアリですね🙂 twitter.com/geekpage/statu…

2021-09-23 22:33:25
YOSHITO @YOSHITO_PC

TCP/IPとの出会いはマイクラの自鯖だったなぁ。。それからネットワークに興味が出てきたと言っても過言ではない。 twitter.com/geekpage/statu…

2021-09-23 22:45:35
Shirouzu Hiroaki(白水啓章) @shirouzu

そういえば TCP/IP というより、socket I/F にイマイチ感を昔から感じてたり。 0byte の recv/read に大事な意味持たせるとか、recvfrom に dest addr 無いとか。 twitter.com/geekpage/statu…

2021-09-23 22:53:21
でんきや@いとうファミリーファーム準備中 @aacn14521

マスタリングTCP/IPは必読だと思います。その上で手を動かしてみることで理解が深まるというのには同意します。 twitter.com/geekpage/statu…

2021-09-23 22:57:02
t_furu ♨ @t_furu

TCPクライアント、サーバー作ってチャットアプリを作るのが良さそう。その後でスレッド化して多クライアントに対応させたり、UDP版作ったり。 twitter.com/geekpage/statu…

2021-09-23 23:04:08
Harumi@aWNvbmthd2FpaQ== @Harumi_611

大学生の時、UDPのソケットで初音ミクの画像を送ってみた そこでやっとTCPとUDPの違いがわかった twitter.com/geekpage/statu…

2021-09-23 23:34:21
tanabeaki77 @tanabeaki77

むかーしむかしだけど。ストレートでもクロスでもLANケーブル自作してping返ってきた時はテンションがあがった。繋がる感じを体感できるともっと知りたくなるのかな、と思いました。 twitter.com/geekpage/statu…

2021-09-23 23:55:13
そらみみ @soramimi_jp

自宅サーバーでApacheを動かしてみて、仕組みを理解したくなって、自前でウェブサーバを実装してみようと思って、ソケットを使い始めた流れかな twitter.com/geekpage/statu…

2021-09-24 00:01:50
いりじうむ192 @irid192

TeraTermでWebサイトやメールサーバーにアクセスしてみるといいんじゃないかな twitter.com/geekpage/statu…

2021-09-24 00:04:27
黒ブラ @Clorets8lack

僕はあきみちさんのブログを写経してキャプりながら勉強した。 観測と学習(試行錯誤)を同時にやると、おかしいときにどこ見なきゃいけないのかと実際の観測方法が身につく。 geekpage.jp/programming/ twitter.com/geekpage/statu…

2021-09-24 08:17:59
iruka3 @iruka3

マイコンとかCPUを理解するために昔はZ80で自作とかTK80とかシンプルな題材があったけど、今ではArduinoぐらいしかないように、TCP/IPも昔は10BASEで衝突ありまくり環境のSun WSとかだったけど、今ってどうなんだろうね。 Perlでソケット通信? それともTCP/IPスタックを自作する話? twitter.com/geekpage/statu…

2021-09-24 08:36:40
とも @tomo_mtblog

@geekpage 自分で構築してみる、に共感です。最近は以下のようなわかりやすい解説サイトがたくさんあるので一読して、その後、個人的には AWS の S3 を使って Web サーバーを構築するのがお勧めです。簡単なので。 itmanage.co.jp/column/tcp-ip-…

2021-09-24 08:47:31
arton @arton

四半世紀前ならスティーブンスで決まりだろうが(実際、おれはTFTPのクライアント/サーバーを中のコードの写経で作ってえらく勉強になった(ついでにCでの有限状態機械の実装手法についても))、今だとなんだろうな? twitter.com/geekpage/statu…

2021-09-24 09:03:55
インフラエンジニアの毒舌な妹@火南イ32b @infra_imouto

NEを養成するのかWeb系の人に最低限教えるのかにも依りますが TCP/IPの歴史的経緯をBSDでの実装の変遷も交えて twitter.com/geekpage/statu…

2021-09-24 09:04:23
がんチャン/Naoki(目指せ第二種電気工事士取得:冬に再チャレンジだ) @gandarla

どこまで理解させる必要がある人かによって変わるかなぁ。 ・簡易なサーバーを建てる(Pythonのflaskとか) ・ポストマンとかでGETとかPOSTとかを↑に対して投げる ・別のPCとかでTCP/IPパケットを観察する TLSしちゃうとパケットの中身見れなくなっちゃうから、↑は完全に勉強用として割り切る twitter.com/geekpage/statu…

2021-09-24 09:09:00
TojoQK @tojoqk

Racket のチュートリアルの一つに Web サーバーを実装する話があるので良い気がしたけど tcp の部分は tcp-listen っていう手続きで抽象化されちゃってるのでちょっと違うのかもしれない。 docs.racket-lang.org/more/index.html twitter.com/geekpage/statu…

2021-09-24 09:27:49
河童星人 @kappaseijin

何をさせたいかによるけど、とりあえずWebSocketでオレオレzoomを作るところから始めるのが手軽()でいいんじゃないっすかね twitter.com/geekpage/statu…

2021-09-24 09:28:02
Hotaka Katsuma🌒 @amuseumjp

>何らかのプログラミング言語を使って これだと「プログラミングをやったことがない人」が全員脱落するので、フリーウェアで臨時HTTP・FTPサーバを建てたりするのが良いかと思った 最近のおうちインターネット回線、グローバルなIPv4を占有させてくれない問題があるのよね。 twitter.com/geekpage/statu…

2021-09-24 10:49:31
あらしくん @arashi1977

「作る」が環境を指すかプログラムを指すかによるきがする。 環境であればルータとファイアウォールがアドレスとかポートを意識できるだろうし、プログラムならTCP/IPスタックを理解する意味でncみたいなの書くとかかなぁ。 twitter.com/geekpage/statu…

2021-09-24 11:00:44

コメント

笹かま @voyageur105 2021年9月24日
LINUXとかのPC-UNIXを勉強すると、自然とネットワークの話にもなるから、その流れでWindowsからログインしたり、ルーターやファイルサーバー、プリントサーバーを作ってみたり、ネットワークを安いPCで組むのが良いのでは・・・
6
結城真@社内秘 @shinokiwa 2021年9月24日
今なら仮想ネットワークツールでいろいろ遊んでみるのがハードル低いかなあ…目に見える機器があったほうがわかりやすいかもだから、安い機器で実物を組むのとどっちがいいんだろう。 まあいずれにせよ、どういう層向けかで若干変わるけど。
0
まきにょ @makinyopp1 2021年9月24日
そもそも「TCP/IPをやる」ってなんだ?w
38
aioi_au @aioi_au 2021年9月24日
どのレベルから始めてどのレベルまでやるかによるかなぁ。 サブネットマスクとかの概念は紙に書いた方がわかりやすかったし。
4
Laffy(ΦωΦ)🌸 @Lafiell 2021年9月24日
makinyopp1 192.168.0.1を使ったことがある人?
0
きゃっつ(Kats)⊿ @grayengineer 2021年9月24日
makinyopp1 とりあえずPCかスマホのブラウザでWeb閲覧すれば、TCP/IPは使いますよねw
3
むう @nyal1999 2021年9月24日
昔ならネコわか読めだったんだが、今どうなんじゃろ
0
301 @drei_null_eins 2021年9月24日
まず「動いている様子を見てみよう!」の段階ならWebブラウザの開発ツール(F12のやつ)でリクエストのやり取りを見せても良いかもな
1
ザマアミロペクチン @fantastic_days 2021年9月24日
わかり手の人と名前が似ててビビったわ
0
キケリキー @KIKERIKI17 2021年9月24日
DNSやICMP(PING)、FTPにSMTP、VPNやゲートウェイにルーター、ファイヤーウォールにパケットリレー(ルーティング)、ポート番号やセグメント処理なんかのネットワークを構成する諸々って奴を「TCP/IP」という言葉に閉じ込めた感じの話かなぁって。「SYN ACK」の話じゅなくて。
7
a7R2Lj @a7R2Ljtm 2021年9月24日
何か根本的なところ勘違いしているのか、ネタなのか、判断に困る。
4
まりゆどぅ @Mariyudu 2021年9月24日
オライリーの「TCP/IP」(カニ)で座学しつつ、技評の「UNIXネットワークベストプログラミング入門」で手を動かして覚えたっけかな。まだ「マスタリング〜」出版前の頃だった。
0
kartis56 @kartis56 2021年9月24日
makinyopp1 TCP/IPにも穴はあるんだよな…
0
キャンプ中毒のドライさん(Drydog(乾)) @drydog_jp 2021年9月24日
まぁプログラマー視点というよりは構築側の視点でやる方が身につきそうな気はする。 今自分が作れそうでかつ欲しいソフトって存在しないものがあまりないから、やる気が沸きにくいし
0
_ @readonly6582 2021年9月24日
makinyopp1 自分なら、パケットキャプチャしてwiresharkで解析するとかを想像しますね
3
tomtia_tw @tomtia_tw 2021年9月24日
ネットワーク構築したいのか、それともサーバーやクライアントアプリを作りたいのかで何を勉強するか全然変わってくるよね。前者ならTCPやるまえにまずはIPとIPv6をマスターしないと。そこからARPやRARP勉強してルーティングの基礎覚えてetc..だろうと思う。いきなりTCPはハードル高い。逆にソフトやりたいなら、そのへんはさわりだけで十分で、ソケットIFとかのライブラリ勉強すればいいんじゃないかと。
1
いぬだわん @InuWang 2021年9月24日
OSIのどの層辺りを指してTCP/IPをやるのはと言ってるのか? スマホでこうしてTogetter見てるのはTCP/IPやってるのか?
0
_ @wholescape 2021年9月24日
「パケットの気持ちになって考えよう」を念頭に置くことでしょうか。パケットが行って帰ってきて(ついでに通信完了報告も送って)初めて通信は成立するのだ、とか。
0
ヒロセジロウ ✏️ @denjiro13 2021年9月24日
「ipconfigって打てばいいの?あ、なんかでた」「Welcome to Underground.」
0
相模川のおじさん(さがおじ) @hyu954 2021年9月24日
FPGAに実装して高速株取引でもしてみては?
0
Mizuta Fumitaka @Humi_TW 2021年9月24日
「TCP/IPをやる」って多分、ネットワークの構築からサーバを立てたりして遊んで学ぼう…ってことだろうなあと。スイッチと端末を物理で揃えて仮想環境でサーバを構築するのが直感的で面白いけれど、無料で直ぐに始めたいのならばCiscoのPacket Tracerもお勧め。変な設定やOSのイメージファイルも必要ないし、最初の取っ掛かりには十二分😊
1
mimix @mimix09358339 2021年9月24日
「インターネットをやる」並にふわふわしてる
3
慌てず急いで正確に @osabori_jp 2021年9月24日
物理層とIP層とTCP層とプロトコル層は違うと言っても理解してないシステム屋多数。
0
近藤 和宏 @kondoujp 2021年9月24日
とりあえず「TCP/IP はプロトコル層 (L3 以上)」の話だから「ケーブル作るみたいな物理層 (L2 以下) の話を混じらせるな」だし、その層まで含めた話として最初からやりたいなら「TCP/IP とだけ言うのは止めろ」だなぁ。
5
かわいいは正義 @shimesaba_type0 2021年9月24日
ルータ、スイッチ集めてネットワーク作って、キャプチャしてとらしゅしたらok
0
PUNTE @PUNTEdog 2021年9月24日
makinyopp1 プロトコルスタックの一部になりきるんですかね。
0
毬🌰 @louk2151 2021年9月25日
mimix09358339 エンジニア視点ではほぼ同義かと
0
Knappertsbusch @Knappertsbusch 2021年9月25日
TCP/IPったらSYN ACKで、パケットがちゃんと届いてハンドシェイク出来てるかとかそんな話じゃないのか。FTPとかHTTPとかプロトコルとは違うだろうに。
1
Earwax @Earwax97409510 2021年9月25日
TCP/IP単品で、勉強し始めるネタなんて選ぶのに困るほどあったっけ?上に乗っかる物や下に敷いてある物を混ぜ込むとしたら何を入れてもTCP/IPよりそっちがメインになりそうな気が。
0
doseisan_ons @doseisan_ons 2021年9月26日
まずは「何をしたいか」じゃないかな…。目的決めて、それには何が必要か?な気がする。 ルータやスイッチ自作したい!ならばTCP/IP知識がフルスタックで必要だろうけど、webアプリ作りたい!ならTCPのポートとIPアドレスのITパスポートレベルでいいわけで。
0
しょーた @shota243 2021年9月26日
「何らかのプログラミング言語を使ってTCPのサーバとクライアントを作ってみたり」って、TCPを実装しろと言ってるな。それって「シェルを書く」って奴よりさらに難易度高くないか?
0
Off Black @OffBlack1 2021年9月26日
キッティングする仕事あるならケーブル自作はわからんでもないけど、TCP/IPとは違くないかい?
0
cocoon @cocoonP 2021年9月26日
「IP通信の仕組み」だけなら未来館にあるインターネット物理モデルの展示がとてもわかりやすいんですよね。https://www.miraikan.jst.go.jp/exhibitions/future/internet/ ただこれはL3(IP)だけでL4以上(TCPより上)については省略していますね……。
0
cocoon @cocoonP 2021年9月26日
TCPを「手を動かして」理解するのって難しいんですよね。Knappertsbusch さんのコメントでやってることを、WireSharkとかtcpdumpでキャプチャしながら通信を発生させて観測する ことはできるんですけど、それより上のアプリケーションレイヤとかみたいに実際に自分でキーボードから入力して通信するとかが難しい。IPの場合ルータの設定とかで手を動かせるけど、L4で3wayハンドシェイクを手を動かして実践とか難しいし……、
0
cocoon @cocoonP 2021年9月26日
ただ、「現在のインターネットで主に使われている通信手段の総称としてのTCP/IP」という用語は結構古くから実績のある単語でもあり、また受け入れられていた用語でもあると思いますよ。この分野で割と標準的教科書ともいえる書籍「マスタリングTCP/IP」とかでも、特に基礎編はほとんどアプリケーションレイヤの話ばかり書いてありますし。
0
Pon @Pon__CG 2021年10月4日
ゲームのコントローラー作って入力をTCPとUDPで飛ばしたりするの楽しい(多分まとめの方向性と違う)
0