タグ

TCPに関するoinumeのブックマーク (15)

  • ソースコードで体感するネットワークの仕組み ~手を動かしながら基礎からTCP/IPの実装までがわかる

    2018年5月15日紙版発売 2018年5月9日電子版発売 小俣光之 著 A5判/272ページ 定価2,728円(体2,480円+税10%) ISBN 978-4-7741-9744-9 Gihyo Direct Amazon 楽天ブックス honto ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo 書のサポートページサンプルファイルのダウンロードや正誤表など このの概要 普段あたりまえのようにネットワークを使っていますが,「IPアドレスを持っている」とはどういったことか,当に理解できているでしょうか。書では,IPやUDP,TCPを自作し,ネットワークの仕組みを体験。pingのやりとりを行うプログラムを,DHCPクライアント機能の実装,TCPの送受信と切断を行うものへと拡張していくことで,RFCを

    ソースコードで体感するネットワークの仕組み ~手を動かしながら基礎からTCP/IPの実装までがわかる
    oinume
    oinume 2021/02/08
    これ良さそう
  • Geekなぺーじ : Linuxネットワークプログラミング

    ここでは、Linuxを使ったネットワークプログラミングの説明を行いたいと思います。 ここで対象としている読者は、ネットワークプログラミング初心者(もしくは入門者)かつLinux環境でプログラミングを行いたい人です。 開発環境としては、C言語+gccを想定しています。 説明内容は主にソケットプログラミングになります。 なお、C言語そのものが初めての方は「C言語入門」も参考にどうぞ。Windows専用には書いてませんが主にC言語で共通の部分を解説しています。 コードを書く前の準備 まず、gccを使える状態にしないといけません。 ディストリビューションにもよりますが、Linuxを普通にインストールしただけでは開発環境は入りません。 開発環境を用意するためには、gccやglibcなどのrpmを必要に応じてインストールしてください。 次に、エディタが必要になります。 mule、emacs、xemac

    oinume
    oinume 2018/03/06
  • Pythonでネットワークプログラミング | saito's memo

    サーバ側 サーバ側のプログラムは基的に、 socketでソケットを作成 bindでアドレスとポート番号を指定 listenでクライアントの接続を待つ acceptでクライアントの接続を受け付ける sendやrecvを使ってクライアントのデータの送受信を行う closeでソケットを閉じる の流れで行う。 tcp_server1.py from __future__ import print_function import socket from contextlib import closing def main(): host = '127.0.0.1' port = 4000 backlog = 10 bufsize = 4096 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) with closing(sock): s

  • tcp_tw_なんとかの違い - Qiita

    自分用の覚書です。CentOS5とか6とかでの経験。 実際高負荷だとか負荷試験ツールで出ただとかのTIME_WAITを減らしたいというときに、 syctlで、tcp_なんとかを調整するというのは今ではよくあると思います。 (わたしはむかし運用していた某無料サイトで負荷に悩んだのが切欠で知りました。無料というだけで会員数激増的な風潮だったのと素行の悪い某国のクローラーとかrewriteのループとかの色々な芸の肥やし的な機会がというか夜中に起こされて眠りを妨げられたくなかったので色々調べたりしていました。) いっぱい接続したいの - (ひ)メモ Linux - ぜんぶTIME_WAITのせいだ! - Qiita ・TCPの終了待ちタイムアウト秒数を設定(default60sec) net.ipv4.tcp_fin_timeout = 10 ソケットを強制的にクローズする前に、最後のFINパケッ

    tcp_tw_なんとかの違い - Qiita
    oinume
    oinume 2016/06/21
    tcp_tw_reuseとか
  • ぜんぶTIME_WAITのせいだ! - Qiita

    課題 突然キャンペーンとかの高トラフィックが来る!とか言われると色々困ることはあるものの、今のご時世クラウドだからスペック上げときゃなんとかなるでしょ。ってとりあえずCPUとかメモリあげて見たものの、キャンペーンが始まったら意外と早くブラウザからつながらない!!とか言われたりする。 CPUもメモリもそんなに負荷は特に高くもない。調べてみたらTIME_WAITが大量にあった。 とりあえず何とかしたい TIME_WAIT数をコマンドで確認 $ netstat -anp|grep TIME_WAIT __(snip)__ tcp 0 0 192.168.1.1:80 192.97.67.192:56305 TIME_WAIT - tcp 0 0 192.168.1.1:80 192.63.64.145:65274 TIME_WAIT - tcp 0 0 192.168.1.1:80 192.39

    ぜんぶTIME_WAITのせいだ! - Qiita
  • そのっつ (Naotoshi Seo) on Twitter: "TIME_WAIT_LEN を短くする必要なんてないよ。tcp_tw_reuse=1 にするとか、tcp_max_tw_buckets を大きくするとかでいいよ。"

    TIME_WAIT_LEN を短くする必要なんてないよ。tcp_tw_reuse=1 にするとか、tcp_max_tw_buckets を大きくするとかでいいよ。

    そのっつ (Naotoshi Seo) on Twitter: "TIME_WAIT_LEN を短くする必要なんてないよ。tcp_tw_reuse=1 にするとか、tcp_max_tw_buckets を大きくするとかでいいよ。"
    oinume
    oinume 2015/12/11
  • Linuxカーネルの「TCP_TIMEWAIT_LEN」変更は無意味?

    小崎 資広 (KOSAKI Motohiro) @kosaki55tea . @sonots から日のWeb界隈ではTCP_TIMEWAIT_LEN を変更してカーネルリコンパイルがデファクトという話を聞いて軽くぐぐってみたところ、たしかに大量にそのようなページがヒットする。しかもどれ一つとして理由が書いてない。そして日特有の現象 2015-09-09 00:03:14 小崎 資広 (KOSAKI Motohiro) @kosaki55tea 軽くソースを見た感じだと、tcp_tw_reuse をセットすると1秒で TIME_WAITのsocketは再利用が始まるので、いまひとつリコンパイルの必要性が分からず。これ、ソース呼んで妥当性チェックした人がいるノウハウなのかなあ 2015-09-09 00:04:39

    Linuxカーネルの「TCP_TIMEWAIT_LEN」変更は無意味?
  • 2007-03-31

    相手のアプリケーションがcloseして、こちらのアプリケーションがcloseせずにいる場合(ハーフクローズの状態、上の図参照)、一定時間後に相手側のFIN_WAIT2と、こちらのCLOSE_WAITが消えた。この現象は、2つのタイマーが関係しているらしい。 http://www.linux.or.jp/JM/html/LDP_man-pages/man7/tcp.7.html FIN_WAIT2は、 tcp_fin_timeout でタイムアウトする。デフォルトは60秒。 CLOSE_WAITは tcp_keepalive_time 秒後に(デフォルトは2時間)、接続が有効かどうかを確認する(keep-aliveプローブを送信)。 相手側がFIN_WAIT2で待っている場合は、ACKが返ってきて接続が維持される。 相手側が tcp_fin_timeout によってクローズ済みの場合、リセッ

    2007-03-31
  • Kazuho@Cybozu Labs: TCP通信ではデータの送信をまとめて行うべき、もうひとつの理由(& サーバのベンチマーク手法の話)

    TCP通信をするプログラムを書く際に「データの送信はまとめて1回で」行うべき、というのは鉄則と言っていい、と思います。その理由としては、パケット数を最小限に抑えることでオーバーヘッドを少なくするためだと一般に説明されますが、自分はもうひとつポイントがあると考えています。次のグラフを見てください。 グラフは、一定量のデータを転送するのにかかる時間と使用するブロックサイズ(1回のwrite(2)で書き込むサイズ)の関係を表したものです注1。 ホスト間のTCP通信を行っている場合は、TCPのバッファが有効に機能するので、ブロックサイズ(=パケット数の逆数)による速度の変化は、ほぼありません。一方、同一ホスト上で通信を行うと、ブロックサイズと反比例して所要時間が反比例の関係にあることがわかります。 原因は、同一ホスト上の通信では、送信プロセスがwrite(2)を呼ぶたびにコンテクストスイッチが発生

  • SYN ACKが返ってこない太郎

    すげ、こまったお。 LBの配下に、WEBサーバ(apache)を複数台置いて画像を配信してたら MAC(OS X10.8.6)、ubuntu(11.04)で画像が見れたり、見れなかったり。 状況kwsk ・LBの振分ルールはラウンドロビン。 ・LBからWEBサーバに対しては、SNATしてる。 ・WEBサーバは常時2000コネクションくらい張っているんだけど 接続がまったくない状態でも同じ現象が発生する。 ・逆にWEBサーバが1台やら2台だと再現しない。 ・上記端末から、画像取得ができない(WindowsXP、Vista、7)はさくさくいける。 ・ブラウザ依存じゃなかった(Firefox、Opera、Safari、Choromeでもだめ) ・IPV6はONでもOFFでもでる。 ・Wiresharkでキャプチャしたら、SYN+ACKが返ってこない・SYNのリトライたくさん。 原因は・・・ ・サ

  • 「net.ipv4.tcp_tw_recycle」を有効にするのは(場合によっては)やめた方がいい - pullphone's blog

    そもそも「tcp_tw_recycle」ってなに? TIME_WAIT状態のソケット*1を高速に再利用するためのLinuxカーネル特有の仕組みらしい。 「/etc/sysctl.conf」でこいつ(net.ipv4.tcp_tw_recycle)を1にしてやって「sysctl -p」するだけで有効になります。 「TIME_WAITのソケットを少なくしてくれるんでしょ?いいじゃん!」という感じで設定してしまいそうになりますが・・・ なんでダメなの? 結論から言うと、こいつを有効にしたとき、同じグローバルIPのクライアントからの接続でかつTCPパケットにタイムスタンプ情報が入っている場合で、ほぼ同時にパケットを送ると、古いタイムスタンプの方のパケットを勝手にドロップしちゃいます。 どういうことなの・・・ 「tcp_tw_recycle」は、「同一IPからのパケットが到着したとき、使っていたソケ

    「net.ipv4.tcp_tw_recycle」を有効にするのは(場合によっては)やめた方がいい - pullphone's blog
  • mPulse — Real User Performance Monitoring and Real-Time Analytics | Akamai

    Compute Build, release, and scale faster with VMs for every workload

    mPulse — Real User Performance Monitoring and Real-Time Analytics | Akamai
  • kernel: TCP: time wait bucket table overflow の解消とTIME_WAITを減らすチューニング - 気ままにインフラエンジニア

    整理がてら。 httpdが動いているあるホスト上で、 /var/log/messages に以下のようなメッセージが出ていた。 kernel: TCP: time wait bucket table overflow kernel: printk: 50078 messages suppressed. "netstat -tna |grep TIME_WAIT"すると、10万以上の数でTIME_WAITが出ている。これを解消するまでの流れ。 そもそもこの値は、カーネルパラメータの net.ipv4.tcp_max_tw_buckets で設定されている。デフォルトは16384。 (↑の通り、エラーが出た環境では既にかなり大きな値が設定されていたのだが。) /proc/sys/net/ipv4/tcp_max_tw_buckets システムが同時に保持する time-wait ソケットの最大

    kernel: TCP: time wait bucket table overflow の解消とTIME_WAITを減らすチューニング - 気ままにインフラエンジニア
  • どさにっき

    2008年4月21日(月) ■ 無題 _ 今朝の電車でおっさんが読んでたスポーツ新聞からちょっと見えてた見出し。頭のおかしい人が新幹線で全裸になってタイーホ。春だなぁ。 _ 出社してからニュースサイトを巡回して、それが ファーストサーバの社長だったと知る。あぁ。 _ ち、ちがうよっ、春だから頭のおかしい人が湧いてきたんじゃないよっ。だってレンタルサーバ会社の社長だよ? 頭がおかしいなんてことはないよ。最近のデータセンターは電力問題とか熱問題とかいろいろ大変だからね、きっと陽気がよくなってあったかくなったから熱暴走を起こして、その冷却のために大事なところを放熱してただけなんだよっ。 _ てか、ファーストサーバっていつのまにか yahoo の系列になってたのか。昔はクボタ(もちろん農業機械のクボタのことだ)の子会社だったよね、たしか。 2008年4月28日(月) ■ 無題 _ メール屋を廃業し

  • Windowsネットワーク 第16...@IT:連載 基礎から学ぶ

    第16回 信頼性のある通信を実現するTCPプロトコル(3):基礎から学ぶWindowsネットワーク(3/4 ページ) TCP技術を習得するうえで非常に重要な項目として、「TCPの状態遷移図」というものがある。これはTCPプロトコルの規格書であるRFC793(STD0007)に掲載されている、TCPプロトコルの内部ステートを表現した図である。すでに解説したように、TCPでは接続ごとに、それぞれシーケンス番号やACK番号、オープン/クローズなどの処理状態といった「ステート(状態)」を持っている。このようなプロトコルを「ステートフルな(stateful、状態を持つ)」プロトコルという。TCP接続のオープンやクローズ、確立などに伴う、状態の変化を表現した図を「状態遷移図」という。 以下は、RFC793に記載されているTCPの状態遷移図を簡略化したものである(完全な状態遷移図についてはRFC793を

    Windowsネットワーク 第16...@IT:連載 基礎から学ぶ
  • 1