タグ

TCPとsocketに関するakaneharaのブックマーク (9)

  • 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 コマンド

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

    モバイル(ワイヤレス)ネットワークとLinuxのTCP再送アルゴリズムの相性の悪さをまとめた社内勉強会用資料Read less

    モバイルネットワークと広告配信
  • ssコマンドでLinuxのネットワーク/ソケット情報を確認する

    ss - socket statisticsコマンドについて調べました。 ssコマンドは、Linuxのネットワーク/ソケット情報を確認するコマンドのひとつです。 カーネルから直接情報を取得するようで、場合によってはnetstatコマンドより高速に結果を取得することが出来ます。 以下、使いかたの例をメモしました。 ソケットのサマリ # ss -s Total: 280 (kernel 317) TCP: 533 (estab 70, closed 438, orphaned 1, synrecv 0, timewait 437/0), ports 333 Transport Total IP IPv6 * 317 - - RAW 0 0 0 UDP 18 10 8 TCP 95 89 6 INET 113 99 14 FRAG 0 0 0 開いているポートの一覧 # ss -pl State

    ssコマンドでLinuxのネットワーク/ソケット情報を確認する
  • TCPメモ(Hishidama's TCP Memo)

    片方が他方に対して何らかの電文を送ると、相手は受け取ったという印にACKを返す。 ACKが来なければ相手が受け取っていないということなので、その場合はある程度待ってから再送する。 ACKは他の電文と一緒に送ってもよい。 コネクションは、【相手先IPアドレス・相手先ポート・自分のポート】の組で一意に表される。 コネクションは現在どういう状態にあるかを示すステータスを持っており、イベントに応じて遷移していく。netstatコマンドで表示されるのは、これ。 TCP/IPとソケットの関係 ソケット関数を呼び出すと、ソケットライブラリ(プロトコルスタック?OS?)がTCP/IPの規約に従って通信を行う。 listen(受付開始) サーバー側で接続の受付待ちを開始する。 コネクション(通信相手はいないので、相手先IPアドレス・ポートは無し、自分のポート番号だけ有り)はLISTEN状態になる。 conn

  • コンピューター:C言語講座:TCP/IPプログラム(その1:クライアント)

    コンピューター:C言語講座:TCP/IPプログラム(その1:クライアント) 概要 TCP/IPはイーサーネットなどで使用される標準的なプロトコルで、以前はワークステーション系でのみ使用されていた感じでしたが、最近ではインターネットやイントラネットさらにWindows95の普及によって、非常に広い分野で使われてきています。プロトコル自体は文献がたくさんでておりますし、それほど細かく知らなくても問題は無いのですが、いざ、自分でTCP/IPを使用したプログラムを作成しようとすると以外と文献が少ないものです。 ここでは、実際に通信することを目的として(プロトコルの研究ではなく)、まずはクライアントプログラムを作成してみます。詳細な内容まではとてもホームページに簡単にまとめられる量ではないので、それは文献を参照してください。 通信 通信といっても非常に幅が広いのですが、プログラミングで言うところの通

  • C 言語で echo サーバを作ってみよう (2)

    select によるマルチスレッドサーバ C 言語において select の使い方を説明します。 echo-server-select.c 117: int 118: main(){ 119: fd_set target_fds; 120: fd_set org_target_fds; 121: int sock_optval = 1; 122: int port = 5000; 123: /* リスニングソケットを作成 */ 124: listening_socket = socket(AF_INET, SOCK_STREAM, 0); 125: 126: /* ソケットオプション設定 */ 127: if ( setsockopt(listening_socket, SOL_SOCKET, SO_REUSEADDR, 128: &sock_optval, sizeof(sock_opt

  • Javaで作るTCPサーバ(1)

    このところ暖かい日が続いているなあと思っていたら、急に寒くなって喉の調子を悪くしました。 ところで最近、なぜかSocketからサーバを作る必要があってコードを書いたので、自分の中の整理も含め、JavaでTCPサーバを実装する方法についてまとめたいと思います。 Javaでサーバソケットを扱う Java SE 7において、サーバソケットを扱う方法は3つあります。 まずはいわゆる普通のソケットAPIです。JDK1.0の時代からあるAPIで、(つまりこの旧き良きAPIは1996年から存在します) java.net.ServerSocket を使います。 次に「ノンブロッキング」と呼ばれるモードで処理を行うAPIがあります。java.nio.channels パッケージにある、ServerSocketChannel と Selector を中心に使います。このAPIはJDK1.4で追加されました。

  • サーバプログラム

    (1)のソケット生成ではsocket()システムコールを使ってソケットを 生成します。socket()を呼び出すときは、その引数にはTCP通信に利 用するプロトコルの種類を与えます。ここでプロトコルの種類とはインターネッ ト用のものであることや、TCPやUDPの種別も含まれます。また、socket() の返値はソケット番号という整数値を返します。これは各ソケットの識別 子となります。 socket()を実行した段階ではソケットが作られただけであり、ポー ト番号などは未確定です。そこで、(2)ではbind()システムコールを 使い、(1)で生成したソケットにポート番号など割り当てます。 TCP通信のサーバ側はクライアントから通信接続を待つ側になります。このた め、通信接続を待つための準備作業が必要になります。これには(3)の listen()システムコールを利用します。 ここで準備が整いまし

  • TCP socketではwriteの後すぐにcloseしてはいけない

    TCP socketではwriteの後すぐにcloseしてはいけない。 相手側に全てのデータが届いてからcloseする必要がある。 shutdown で書き込み側だけハーフクローズするとよい。 相手側がcloseしてから、こちらをcloseする。相手側がcloseしたことは、readを呼んでブロックさせておくと、読み込みバイト数==0 つまりEOFになったことでわかる。

    TCP socketではwriteの後すぐにcloseしてはいけない
  • 1