タグ

TCPに関するakaneharaのブックマーク (39)

  • tcpdumpの使い方 - Qiita

    SYNフラグのたったパケット(★1,★2)採取をおこなう。 [root@node1 ~]# tcpdump -i eth0 '(tcp[tcpflags] & tcp-syn)' != 0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 11:53:15.864640 IP master.48604 > node1.http: Flags ★1[S], seq 1922717478, win 29200, options [mss 1460,sackOK,TS val 10235908 ecr 0,nop,wscale 7], length 0

    tcpdumpの使い方 - Qiita
  • tcpdumpやwiresharkでTCP制御フラグを指定してパケットを収集する方法 - Eiji James Yoshidaの記録

    tcpdumpやwiresharkでTCP制御フラグを指定してパケットを収集する方法を忘れることが多いのでメモ。 SYNフラグが設定されたパケットの収集 "tcp[13] & 2 != 0" SYNフラグが設定されていないパケットの収集 "tcp[13] & 2 == 0" SYNフラグのみ設定されたパケットの収集 "tcp[13] & 255 == 2" ACKフラグが設定されたパケットの収集 "tcp[13] & 16 != 0" ACKフラグが設定されていないパケットの収集 "tcp[13] & 16 == 0" ACKフラグのみ設定されたパケットの収集 "tcp[13] & 255 == 16" ACKフラグとSYNフラグが設定されたパケットの収集 "tcp[13] & 18 == 18" ACKフラグとSYNフラグのみ設定されたパケットの収集 "tcp[13] & 255 ==

    tcpdumpやwiresharkでTCP制御フラグを指定してパケットを収集する方法 - Eiji James Yoshidaの記録
  • net.ipv4.tcp_tw_recycle は廃止されました ― その危険性を理解する - Qiita

    Disclaimer 私はネットワークの勉強もちゃんとしたことないし、Linux のソース読むのもはじめてな素人です。 何かおかしなところなどあれば、遠慮なくコメント欄でまさかりをお願いいたします。 ソースコードの引用に関して 文中で Linux のコード/ドキュメントを引用している箇所がありますが、すべてタグ v4.11 のものです。また、日語のコメント・翻訳文は筆者が入れたものです。 TL; DR Linux のカーネルパラメータ net.ipv4.tcp_tw_recycle は、バージョン4.12から廃止されました。 今後はこの設定は行わないようにしましょう(というかできません)。 一方、net.ipv4.tcp_tw_reuse は安全であり、引き続き利用できます。 …というだけの話なのですが、自分用にメモがてら経緯・背景などを記録しておきます。 なんで気がついたか このパラ

    net.ipv4.tcp_tw_recycle は廃止されました ― その危険性を理解する - Qiita
  • How can I tune the TCP Socket Buffers? - Red Hat Customer Portal

    Red Hat Insights Increase visibility into IT operations to detect and resolve technical issues before they impact your business. Learn More Go to Insights Red Hat Product Security Center Engage with our Red Hat Product Security team, access security updates, and ensure your environments are not exposed to any known security vulnerabilities. Product Security Center

    How can I tune the TCP Socket Buffers? - Red Hat Customer Portal
  • Kazuho@Cybozu Labs: TCP通信ではデータの送信をまとめて行うべき、もうひとつの理由(& サーバのベンチマーク手法の話)

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

  • 平文のTCP/IPにおいて転送されたデータの信頼性を期待してはいけない - 最速配信研究会(@yamaz)

    TL;DR 平文のTCP/IPの通信では送信したデータの完全性は期待できないので、経路にはSSL/TLSを使いましょう TCP/IPはUDPと違い、信頼性のある通信を実現するためのプロトコルという説明がよくされる。なのでTCP/IPでやり取りしたデータは1bitの狂いもなく転送先に届くと思われがちだ。TCP/IPが信頼性のある通信を確保してると言われているのは下記の理由による。 1. データが届かなかった場合の再送処理がプロトコルに入っている 2. TCPパケットにペイロードのチェックサムがあり、不具合が検知されると修正もしくは再送される(ただし16bit) 3. IP層の更に下の層にチェックサムがあり、不具合が検知されると修正もしくは再送される(イーサの場合32bit) しかしチェックサムはそれぞれ16/32bitのため、昨今の超大量データを取り扱うにはかなり心もとない。 1. ざっくり

    平文のTCP/IPにおいて転送されたデータの信頼性を期待してはいけない - 最速配信研究会(@yamaz)
  • Geekなぺーじ : 人生の全てはTCP/IPに学んだ

    1. ゆずり合うこと TCPはネットワーク帯域を他のTCPセッションと譲り合います。 TCPには、ネットワークが混雑(輻輳:ふくそう)してくると、送信されるパケット量を減らす仕組みがあります。 この譲り合いがあるからこそ、現在のインターネットは多数の人間が同時に使えています。 同様に、現実世界においても無理な競い合いを行うよりも譲り合いを行った方がスケーラビリティが上昇します。 2. 信頼はきめ細やかな確認応答で実現されること TCPでは、信頼性を確保するためにAck(Acknowledgement、確認応答)を送信してデータの到着を伝えます。 TCPのセッションが確立している間は、Ackが細かく送受信され続けます。 このきめ細かな確認応答が信頼の根幹であると言っても過言ではありません。 現実世界においても、きめ細かく応答を行う事が重要です。 メールなどを受け取っても、全く返事をしない相手

  • Tcpreplay - pcap ファイルの書き換えと再送信ユーティリティ

    Tcpreplay は、あらかじめキャプチャしたネットワークトラフィックを 書き換えたり再送信したりするためのフリーのオープンソースユーティリティ群です。 もともとは IPS/IDS に対して悪意あるトラフィックパターンを再送信するために 設計されたものですが、Web サーバに再送信する機能など多くの進化を遂げました。 Version 4.0.0 では、スイッチ、ルータ、IP Flow/NetFlow アプライアンスを サポートするための機能やパフォーマンス向上がなされました。 実行例 - 10GigE to IP Flow Appliance: root@pw29:~# tcpreplay -i eth7 -tK --loop 5000 --unique-ip smallFlows.pcap File Cache is enabled Actual: 71305000 packets (

  • BashでTCP/UDP通信を行う | 俺的備忘録 〜なんかいろいろ〜

    時折、ポートなどの疎通確認のため、相手先のポートがちゃんと開いているかを確認したい時がある。 そんな時は、基的にポートの疎通確認用のコマンドを利用するのだが、地味にBashからでも疎通確認を行うことができる。 exec 3<> /dev/tcp/相手先ホスト名/ポート番号 # TCP通信の場合 exec 3<> /dev/udp/相手先ホスト名/ポート番号 # UDP通信の場合 準備ができたら、以下のコマンドで対象のポートに通信を行える。 echo -e "メッセージ" >&3 cat <&3 root@BS-PHY-PROX-01:~# exec 3<> /dev/tcp/orebibou.com/80 root@BS-PHY-PROX-01:~# echo -e "GET $2 HTTP/1.0\n\n" >&3 root@BS-PHY-PROX-01:~# cat <&3 <!DO

  • anopara

    終了のおしらせ ブログ anopara は 2022年12月29日 ごろに閉鎖しました。 先生の次回作にご期待ください。 次のブログは多分同じURLで再開します。 詳しいことが決まったらこちらに書きます → https://twitter.com/anoparanominal 創作関連の活動はこちら → https://y9ks.jp 絵とか → https://twitter.com/yuri9000series

    anopara
  • 奥一穂さんインタビュー - Tokyo RubyKaigi 11

    13:25 Invited Speaker 最速ウェブサーバの作り方 近年、ウェブの体感速度は、ネットワークのバンド幅ではなくレイテンシによって律速される傾向が強まってきています。また、それに伴い、TCP Fast Open、HTTP/2、TLS 1.3といった、レイテンシの影響を削減/隠蔽する技術の標準化が進んでいます。セッションでは、HTTP/2サーバ「H2O」の主開発者が、レイテンシの影響削減を主目的とするサーバのプログラミング技法や、HTTP/2の更なる高速化を実現する手法として標準化提案中の「Cache Digest」等を紹介し、それらをrubyから制御する手法を検討します。 必要となる知識 TCP/IPとUnixのソケットプログラミングに関する基礎的な知識があると、分かりやすいかと思います。 奥一穂 株式会社ディー・エヌ・エー MIT TR100、日OSS貢献者賞受賞、未踏

    奥一穂さんインタビュー - Tokyo RubyKaigi 11
  • NGINX 1.9が汎用TCPサーバとして使えるようになっていた件 - Qiita

    はじめに 一年程前にリリースされた Nginx v1.9.0で、Streamモジュールが追加されました。 Streamモジュールを使うと、任意のポートでNginxがTCPの接続を待ち受けるよう設定できます。 この機能は、例えばNginxをTCPロードバランサとして構成する時に威力を発揮するようです。 nginx Blog - TCP Load Balancing with NGINX 1.9.0 and NGINX Plus R6 強力そうな機能ですが、個人的にNginxをTCPロードバランサとして使っていなかったため、特に機能を活用する場もなくスルーしていました。 ところで、つい先日公開されたNginxのモジュール、stream-lua-nginx-module、及び、stream-echo-nginx-moduleを組み合わせれば、任意のポートで待ち受けるTCPサーバをLuaで記述でき

    NGINX 1.9が汎用TCPサーバとして使えるようになっていた件 - Qiita
  • listen()のbacklogが不足した際のTCP_DEFER_ACCEPTの動作について - blog.nomadscafe.jp

    TCP_DEFER_ACCEPTは、LinuxでサポートされているTCPのオプションで、サーバ側で使用した場合にはaccept(2)からのブロック解除をTCP接続が完了したタイミングではなく最初のデータが到着したタイミングで行ってくれるオプションです。 Webサーバ・アプリケーションサーバではリクエストが到着してからaccept(2)のブロックを解除するので、リクエストの到着をWebサーバ・アプリケーションサーバで待つ必要がなくなり、特にprefork型のサーバでは効率的にプロセスを使えるようになるという利点があります。PerlではStarletがこの機能を有効にしています ところが、某サービスでTCP_DEFER_ACCEPTが有効にも関わらず、accept後のreadでデータが読めず、最悪の場合、デフォルトのtimeoutである5分間プロセスがストールすることがありました。strace

  • linux の TCP_DEFER_ACCEPT (サーバサイド) の挙動について - kazuhoのメモ置き場

    以前 (2.6.31 まで?) は以下の挙動*1。 最初のペイロードを受信するまで SYN_RECV ステート クライアントの ACK (TCP ハンドシェイクの最後のパケット) を受信していたとしても、SYN-ACK を送り続ける 190 秒たったら、サーバ側は TCP 接続確立失敗と認識 クライアントは SYN-ACK を送ってるから接続できてるつもり TCP の仕様的にどうなの、って話はわかる。ただ、IP 層はパケットロスの可能性があるわけで、インターネットを使っていて、この挙動で問題があるとしたら、それはアプリケーションのバグだと思うけど。一方で、 LAN 上でパケットロスが (ほぼ) 起こらない前提で作ってたら困ることがあるのかなー。Ubuntu の BTS で話が出てるのは、そういうケース (特定のハードウェアロードバランサと TCP_DEFER_ACCEPT を使う Apac

    linux の TCP_DEFER_ACCEPT (サーバサイド) の挙動について - kazuhoのメモ置き場
  • Linux socket accepシステムコールとTCP_DEFER_ACCEPT

    このドキュメントの内容は、以下の通りです。 Accept Filterとは 3-way handshake TCP_DEFER_ACCEPTとは リスニングソケットの場合 必ずしもデータが到達するわけではない TCP_DEFER_ACCEPT を使用する コーディングレベルでの利用例 Accept Filterとは Accept Filterとは、カーネル内でネットワークのリクエストをバッファリングすることにより、OSとアプリケーションのスイッチングを減らしたり、アプリケーションがデータ待ちで止まってしまうことを避けたりすることができます。 http://kaworu.jpn.org/freebsd/Accept_Filter Linuxには、Accept FilterでいうAccept httpがありませんが、accept data という意味で TCP_DEFER_ACCEPT が利用

  • TCP 3-way handshakeのレイテンシ軽減のためのTCP_DEFER_ACCEPTソケットオプション - ゆううきブログ

    2013/10/22 追記した. Starletのコード読んでてlistening socketにTCP_DEFER_ACCEPTとかいうオプション渡してたので、これ何だって思って調べた. TCPに特に詳しいわけではないので理解に誤りがあるかもしれない. package Starlet::Server; ... # set defer accept if ($^O eq 'linux') { setsockopt($self->{listen_sock}, IPPROTO_TCP, 9, 1) # 9がTCP_DEFER_ACCEPTを表す and $self->{_using_defer_accept} = 1; } ... TCP_DEFER_ACCEPTはLinux 2.4から導入されている. Linux 2.6.32から挙動が若干変わっているらしい. (linux の TCP_DE

    TCP 3-way handshakeのレイテンシ軽減のためのTCP_DEFER_ACCEPTソケットオプション - ゆううきブログ
  • Backlogってなんぞや - ukinau's diary

    はじめに サーバソフトウェアの設定ファイル等でよく見かける項目であるBacklogってどういう意味なんだろうと、少し調べたのでメモを残します。 Backlog apacheやnginx、memchachedなどのサーバ系ソフトウェアの設定ファイルの中で設定することが多い、このBacklogとは何なのかをここでは言及する。 サーバアプリケーションがlistenしているソケットがacceptしていない、確立済TCPセッションを何個までOS側で保持するかを定義したもの。 例えば、下記のようなサーバーアプリケーションがあるとする。 server.py import evenlet server_sock = eventlet.listen(('0.0.0.0', 6001),backlog = 1) new_sock, address = server_sock.accept() new_sock

    Backlogってなんぞや - ukinau's diary
  • 恭喜,站点创建成功!

    恭喜, 站点创建成功! 这是默认index.html页面由系统自动生成 页面在FTP根目录下的index.html 您可以修改、删除或覆盖页面 FTP相关信息,请到“面板系统后台 > FTP” 查看

  • ssコマンドの使えそうなもののメモ · さよならインターネット

    September 6, 2014 $ss -ltと$ss -ltpは使える。 -iは面白いけど当に確認するならngrepかtcpdumpだろうな セッションを開いているホスト名を名前解決しない(デフォルト) $ss -n セッションを開いているホスト名を名前解決する $ss -r TCPのセッションのみ表示 $ss -t $ss -A tcp UDPのセッションのみ表示 $ss -u $ss -A udp TCPとUDPのセッションのみ表示 $ss -tu $ss -A tcp,udp UNIX Domainのセッションのみ表示 $ss -x $ss -A unix 特定のセッションの状態のものを抽出 $ss -t state fin-wait-2 TCPでLISTENしているポートを表示 $ss -lt TCPでLISTENしているポートのプロセス名を表示 $ss -ltp コマンド

  • モバイルネットワークと広告配信

    Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray

    モバイルネットワークと広告配信