テクノロジー

ソケット通信、本当に理解していますか?? - Qiita

1: kenzy_n 2025/06/09 14:55

通信の仕様の基礎。

2: Gim 2025/06/09 15:05

ネットワーク処理は7層で構成されており、ipが3層、tcpが4層、ソケット通信は5層に位置づけられる。違った。

3: suka6411144 2025/06/09 15:28

ICMPのことは考えないのだろか

4: nakag0711 2025/06/09 15:39

ソケット通信の自前実装は想像以上に難しくてバグだらけになるからなるべく避けた方がいい

5: keidge 2025/06/09 15:48

昔はTCPやUDPのネットワークプログラムを書くなら避けては通れない知識だったけど、今は各言語で通信用ライブラリが充実しているし、そこまで意識する必要がなくなってしまったね。

6: ardarim 2025/06/09 16:47

この辺は昔穴が空くほど読み込んだ記憶。もう今はソケット通信で実装とかやりたくないけどね… http://www.kt.rim.or.jp/~ksk/wskfaq-ja/index.html

7: shoh8 2025/06/09 17:46

“Unixドメインソケットについて”この話出てきてよかった。先人の舗装により独自実装しないけど基礎知識としては必修

9: akinyon1121 2025/06/09 18:00

raw socketってのもありましたね

10: kshtn 2025/06/09 18:00

記事の内容はともかく、タイトルの意図が解んない

11: perl-o-pal 2025/06/09 18:43

下手な解説読むよりますマスタリングTCP/IP

12: devrabi 2025/06/09 19:17

「本当に理解していますか??」っという言い方で想像するのは、送受信バッファやブロッキング/非ブロッキングの動作を理解していないケースかな

13: sgo2 2025/06/09 19:19

PCでは既に成熟してるので触る事はほぼ無いけど、組込分野だと触る機会が有る。

14: bfoj 2025/06/09 19:42

自己満お勉強。下手な解説読むよりリチャードストールマン。rawソケットで、tcpdump書こう!

15: electrolite 2025/06/09 20:35

うーん古老からすると薄い。腐すわけじゃなくて、socketの暗号化がTLSとかレイヤ違いすぎ、クライアントのbind()は不要な場合が多いだけでやる時はやる、read()はリトライ必須だしselect()使え、本当に書いたことはなさそう。

16: manimoto 2025/06/09 20:40

ソケット通信を試しに実装して学習したい人には書籍「ふつうのLinuxプログラミング」おすすめ。自分はソケットというかファイルディスクリプタの概念に大変感動した。

17: katsusuke 2025/06/09 21:33

このreadの図とwriteの図の間違いが初心者に多い。 TCPにおいてreadとwriteは一対一にならない

19: pochi-taro00 2025/06/09 21:53

socket通信マジで地雷になるから、触らずに済むなら触らない方がいい、javaで独自tftpクライアント実装した時はしぬかと思ったわ

20: atsushieno 2025/06/09 21:59

このタイトルの意図は「お前たちのソケット通信に関する理解はたいがい間違っているが自分は正しく理解したので教えてやる」

21: razokulover 2025/06/09 22:00

誰も言及してないけどこれ大枠をLLM生成した記事に図とリンクを調整して生成されたものなのでは。章立てや強調やitalicの使い方がそれっぽすぎる。だからガチモンの老兵には違和感がある。

22: d0i 2025/06/09 22:18

学生時代わけもわからずTCP/IP Illustratedを輪読させられてraw socketとかもがんばって使ってたけど、今やio_uringとかlibfabricとか知らない概念が山盛りで昔の知識はたいして役に立たない。

23: puyop 2025/06/09 22:22

ただの報告ですが、ChatGPTに「PC間でSocket通信のデモやりたいんだけど、PowerShellでデモ用のスクリプト書いてちょ」って頼んだら5分でできました。

24: Shinwiki 2025/06/09 22:23

いいえ。雰囲気でなんとかなってます。

25: FreeCatWork 2025/06/09 23:18

ソケット…?難しいこと言ってるにゃ!ボクはゴロゴロ通信で十分満足にゃ~!

26: momonga1123 2025/06/10 00:08

ポートを内線番号に例えるのはあまり正しい表現ではない気がする 外線からかける時、内線番号指定できないし

27: aox 2025/06/10 00:41

よく分かりませんが大相撲中継みたいなものでしょう

28: myr 2025/06/10 01:44

自分用メモ、なのか?単純にデータストリームでエラー修正とかのプロトコルのレイヤーがあったりとか程度な。。/他の人も言及しているけど俺もLLMぽくは感じたが、だとしてQiitaに書く動機がわからない..

29: n_vermillion 2025/06/10 02:02

ソケット通信は簡単なプログラムでも自前実装しようとすると結構な面倒くささなので可能ならライブラリを使う方が良い。えらい目に遭ったことある。

31: th_6295 2025/06/10 05:39

いろいろとおかしいからAIなのか、いろいろとおかしいから人間なのか……

32: iouri 2025/06/10 05:45

ネスペの試験対策かな?

33: mkzsdisk 2025/06/10 06:53

コメントが参考になる。人間が書いてるかも怪しい今、記事を鵜呑みにしてはいけないんだなあ

34: kazyee 2025/06/10 08:09

2000年ぐらいにwebブラウザを端末にしたチャットサーバーを作ったのは良い思い出。ソケット通信だけでなく、スレッド生成とか脇だけど有用な知識も学べるのは良い。/製品には自作のは使わないほうがいいは同意。

35: revert 2025/06/10 08:32

通信プログラムをフルスクラッチで書くことを業務でやるのは基本的に避けたほうがいいが、一方でこれを正しく実装できないようなAI未満レベルの人間はもう要らないのよね

36: kkobayashi 2025/06/10 08:55

このタイトルでunix domain socketについて触れてるだけで上出来じゃないか。突っ込みたい気持ちは分かるけど基本的な理解としては悪くないと思う

37: KazuoLv1 2025/06/10 09:00

serverとclient,マルチスレッドプログラミングの理解のためにも簡単なチャットアプリ作成は有益。って昔の話なのかな…

38: kazkun 2025/06/10 09:33

つ鏡 本当に理解してるならその図にはならないような。

39: borerere 2025/06/10 09:37

再接続とか、ゾンビ化しててよくわからなくなってるソケットとかそうゆう話がないね。

40: JULY 2025/06/10 09:51

「ソケット通信」という言い方に違和感を感じるんだよなぁ。「ソケット」は、ネットワーク越しを含めたプロセス間通信のために、多くの OS で用意されているプログラミングインターフェイスで、通信方式ではない。

41: strawberryhunter 2025/06/10 09:56

以前、Socket.ioを使った通信が生のソケット通信だと思っている人がいたなあ。/これ読んだだけでまともに書けるとは全然思えない。ファイル入出力と同じだと思っている人多すぎ。

42: necoconeco1976 2025/06/10 10:11

ハハッ古参がいっぱい湧いててくさw. 今時そこまで知識なくても使えるからなぁ。昔はせっせとライブラリ作ったものだがw

43: taguch1 2025/06/10 10:46

20世紀の終わり頃は割とそういう仕事してたよ。ソケット通信やらスレッドやらは先輩がいない新人には難しくて泣きながら実装してた記憶がある。

44: beejaga 2025/06/10 10:52

確かにsocket周りの難しさは多重I/Oでのselect/pollによる取り回しやbufferの使い方の方が大きいのでこんな話だけではAI作文と言われてもしょうがない

45: akanehara 2025/06/10 11:29

Qiitaいつのまにか絶望の谷到達前の若者が興奮気味に隙だらけの解説を披露するプラットフォームになっていて、クックパッドが辿った道をそのまんま歩んでる。