タグ付けされた質問 「tcp」

トランスポート制御プロトコル(TCP)は、インターネットで使用されるプロトコルスタックの低レベルの部分です。IP層の真上に位置し、ドロップされたパケットが再送信されることを確認する責任があります。

3
特定のポートで実行されているサービスを強制終了します
特定のポートで実行されているサービスを強制終了するスクリプトを記述しようとしています。これは私のスクリプトです: a=$(ps ax | grep 4990 | grep java | awk '{print $1}') kill -9 $a これはJavaプログラムです。このスクリプトは時々機能しますが、ほとんどの場合、不思議なことに失敗します。 ポートで実行されているサービスを強制終了する他の方法はありますか?私のポートは4990です。
13 process  kill  tcp 

3
仮想インターフェイス上のトラフィックをどのようにキャプチャしますか?
デバッグのために、Linux仮想インターフェイスでトラフィックをキャプチャしたいと思います。veth、tunおよびdummyインターフェイスの種類を試しています。3つすべてで、tcpdump何かを表示するのに苦労しています。 ダミーインターフェイスの設定方法は次のとおりです。 ip link add dummy10 type dummy ip addr add 99.99.99.1 dev dummy10 ip link set dummy10 up 1つの端末で、次のように監視しtcpdumpます。 tcpdump -i dummy10 すぐに、次の方法で試聴しますnc。 nc -l 99.99.99.1 2048 3番目では、次を使用してHTTP要求を作成しますcurl。 curl http://99.99.99.1:2048/ ターミナル2ではcurlリクエストからのデータを見ることができますが、からは何も表示されませんtcpdump。 A TUN / TAPチュートリアル明確化カーネルは実際には1つのローカルインターフェイス上で動作しているすべてのパケットを送信しないことがあり、いくつかの状況: tsharkの出力を見ると、何もありません。インターフェイスを通過するトラフィックはありません。これは正しいです。インターフェイスのIPアドレスにpingを送信しているため、オペレーティングシステムはパケットを「有線」で送信する必要がないと正しく判断し、カーネル自体がこれらのpingに応答しています。考えてみると、別のインターフェイスのIPアドレス(たとえばeth0)にpingを実行した場合に発生することです。パケットは送信されません。これは明白に聞こえるかもしれませんが、最初は混乱の原因になる可能性があります(私にとっては)。 ただし、これがTCPデータパケットにどのように適用されるかを確認するのは困難です。 たぶん、tcpdump別の方法インタフェースにバインドする必要がありますか?
12 networking  kernel  ip  tcp  tcpdump 

1
tcpdumpはどのレベルのネットワークスタックから情報を取得しますか?
ここで障害のあるイーサネットコントローラーを修正するために無駄にしようとしていたので、マシンでtcpdumpを実行してみました。 tcpdumpは、pingアプリケーションが送信していると考えていたICMPパケットの一部が、同じマシン上で実行されていても、実際にはワイヤ上で送信されていなかったことを検出できることは興味深いことに気付きました。これらのtcpdumpの結果をここに再現しました。 14:25:01.162331 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 1, length 64 14:25:02.168630 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 2, length 64 14:25:02.228192 IP 74.125.224.80 > debian.local: ICMP echo reply, id 2334, seq 2, length 64 14:25:07.236359 IP debian.local > 74.125.224.80: ICMP …

1
LinuxでのTCP RTO値の変更
接続のTCP RTO (再送信タイムアウト)値を変更したいのですが、読んだところ、これが可能であることが示唆されていますが、どこでどのように変更するかはわかりません。 私が見てきた/proc/sys/net/ipv4変数が、変数のいずれもRTOに関連していません。誰かがこの値を変更する方法を教えてもらえれば幸いです。

2
Linuxでネットワークコマンドラインを使用せずに、開いているポートのリストとそれらを所有するプロセスを知る方法は?
embedded-linuxのどのプロセスがどのポートを使用しているかを知りたい。シンプルなembedded-linuxなので、netstat、lsofなどのネットワークコマンドラインはありません。(cat、cp、echoなどの基本的なコマンドラインのみが存在します)。 部分的な解決策は、「cat / proc / net / tcp」および「cat / proc / net / udp」コマンドラインを使用することです。ただし、これらのコマンドラインから出力されたリストに使用中のすべてのポートが表示されているかどうか、またどのリストが特定のポートにバインドされているかは表示されません。 コメントをいただければ幸いです。

3
Linuxでソケットが消費するメモリ量を決定する式は何ですか?
私はいくつかの容量計画を行っており、サーバーで処理できるTCP接続の数を(メモリの観点から)予測するために使用できる式があるかどうか疑問に思っていました。現時点では、必要なのはメモリ要件だけです。 式に現れると私が思ういくつかの変数は: sysctl net.ipv4.tcp_wmem(最小値またはデフォルト値) sysctl net.ipv4.tcp_rmem(最小値またはデフォルト値) sock、sock_common、protoおよびその他のソケットごとのデータ構造のサイズ。 tcp_wmemとtcp_rmemのどれが実際に割り当てられているか、いつそのメモリがいつ割り当てられているかわかりません。ソケット作成時?オンデマンド?
11 linux  memory  tcp 

1
ループバックインターフェイスを介してサーバーに接続されたTCPクライアントポートのランダムリセットを調査する方法
localhost上のサーバーを初期化し、同じマシン上のこのローカルサーバーに接続するクライアントの起動と停止を含む数千のストレステストを実行するテストスイートがあります。クライアントからサーバーにRSTが送信された理由を見つけようとしています。 これは一連のイベントです: クライアントがSYNを初期化する サーバーがSYN、ACKを送り返す クライアントがRSTを送信する(ACKおよび接続の確立の代わりに) 多くの場合、サーバーは99%のCPUを実行していますが、数秒/分で通常に戻ります。 クライアントがTIME_WAIT状態にある以前に閉じられた接続のポートを使用しているため、最初はこれが原因であると考えました。サーバーがSYN、ACKを送信すると、クライアントはRSTを発行します。なぜクライアントがTIME_WAIT状態のポートを使用する必要があるのか​​疑問に思っていましたが、古いfedoraコア4を使用していて、TCP / IPの適切な実装がないのではないかと思っていました:-)。 上記の問題を修正するために行われたすべての調整が問題の緩和に役立たなかったので、今、私はそれが理由であるとは思わない。参考までに、私が試した変更は次のとおりです/etc/sysctl.conf。 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_rfc1337 = 1 net.ipv4.tcp_tw_reuse = 1 もう1つ、この問題は一貫していません。実際、この問題を再現できるのは、サーバーを再起動してすべてのクライアントテストを実行する15〜35サイクルを経過した後でのみです。 私はこれがなぜ起こり得るのかについて考えることができるすべての理由を使い果たしたので、誰かが何が起こっているのかについて何か考えがあれば私に知らせてください。 パケット詳細 Date & Time No. Time Source Destination Protocol Length Source port Dest port Info 2014-06-25 14:49:45.378209 1032719 1858.494749 ::1 ::1 TCP 94 netview-aix-5 navisphere …
10 fedora  tcp  tcpdump  tcp-ip 

2
stdinとstdoutをポートにリダイレクトする
Pから読み取りstdinと書き込みを行うプログラムを使用したいのですが、特定のポートから読み取って別のポートに出力するようなプログラムにstdout接続しncます。 # The reading is easy, here P reads from port 50505 nc -l 50505 | P ポート60606と書き戻すにはどうすればよいですか?

1
/ dev / tcp特殊ファイルを実際に提供しているUnixライクなシステムはどれですか?
/dev/tcp/<host>/<port>リダイレクトの一部のシェルによって具体的に処理される魔法のパスは知っています。しかしによるとman bash: bashが実行されているオペレーティングシステムがこれらの特殊ファイルを提供する場合、bashはそれらを使用します。そうでなければ、それは内部でそれらをエミュレートします[...] 現在使用しているLinuxボックスでは、/dev/tcp特殊ファイルが存在しないため、Bashがそれをエミュレートします。しかし、実際には/dev/tcp、Bashでサポートされているものと同じセマンティックを持つ特殊ファイルを提供するUnixライクなシステムはありますか?

2
iptables内のすべてのソースに対してRELATED、ESTABLISHEDを受け入れると、「オープンすぎる」と見なされますか?
ルールが-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT適用されるのをよく見ました。私は専門家ではありませんが、その特定の行は私に関係しています。接続が確立されているか、確立された接続に関連している必要があることを除いて、ルールがすべてのトラフィックを許可していることは明らかです。 シナリオ 22サブネット内のサーバーLANなどから、デフォルトのSSHポートへの接続を許可します192.168.0.0/16。 SuperInsecureApp®ポート1337に何かを公開します。これをINPUTチェーンに追加します。 すべてのソースからconntrack受け入れESTABLISHED、受け入れるルールを追加しましたRELATED チェーンポリシーは DROP したがって、基本的にその構成では、LANからのSSH接続のみを許可し、世界からのポート1337での受信トラフィックを許可します。 これは私の混乱が咲くところです。でしょうconntrackどのような方法で1を取得できるようになり、セキュリティ上の欠陥公開確立された接続(それが世界のオープン以来)1337上に、その後、SSHポート(またはそのことについては、他のポート)へのアクセスを得るために、その接続を利用しますか?
9 security  iptables  ip  tcp 

5
TCPポートが開いているかどうかを確認するにはどうすればよいですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、 Unix&Linux Stack Exchangeのトピックとなるようにしてください。 6年前休業。 Cでソケットプログラミングを実装しようとしています。クライアントからサーバー(Ubuntu)に接続しようとすると、「接続に失敗しました」などのエラーが表示されます。 したがって、問題は移植にあると思います。ソケットプログラミングに5454 / tcpポートを使用しています。 5454ポートがリッスンしているかどうかはどうすればわかりますか?そうでない場合、UbuntuでCを使用してTCPソケットプログラミングに使用できるポートはどれですか?それはポートのみの問題ですか、それとも私のコードに何か問題があるのですか、またはLINUX Ubuntuで設定が必要ですか? 編集: コードのスニペット: int socket_send; struct sockaddr_in address; printf("\n Initialization Socket...."); socket_send = socket(AF_INET,SOCK_STREAM,0); if(socket_send == -1) { perror("\n Socket not created.Error:"); return 1; } printf("\n Socket created"); address.sin_family=AF_INET; address.sin_addr.s_addr=inet_addr(ip); address.sin_port=htons(5454); if(connect(socket_send,(struct sockaddr*)&address,sizeof(struct sockaddr))<0) { perror("\nConnetion failed.Error:"); return …
9 linux  tcp  socket 

1
/ dev / tcpがLinuxに存在しない
C / pro * cコードをUNIXからLinuxに移植しています。コードは次のとおりです。 #define __NFDBIT (8 * sizeof(unsigned long)) #define __FD_SETSIZ 1024 #define __FDSET_LONG (__FD_SETSIZ/__NFDBIT) typedef struct { unsigned long fds_bits [__FDSET_LONG]; } __ernel_fd_set; typedef __ernel_fd_set fd_set_1; int main() { fd_set_1 listen_set; int listen_sd; int socket_id; FD_ZERO(&listen_set); socket_id = t_open("/dev/tcp", O_RDWR|O_NONBLOCK, (struct t_info *) 0); if ( socket_id …
9 linux  c  tcp 

2
Linuxの最小TCP MSS
LinuxのTCP MSSは少なくとも88(include / net / tcp.h)でなければなりません: /* Minimal accepted MSS. It is (60+60+8) - (20+20). */ #define TCP_MIN_MSS 88U 私の質問は、「60 + 60 + 8」をどこで思いついたのか、そしてなぜですか?20 + 20は、IPヘッダー+ TCPヘッダーから取得されます。 編集:ヘッダーを詳しく見てみた後、式は次のように私を探します: (MAX_IP_HDR + MAX_TCP_HDR + MIN_IP_FRAG) - (MIN_IP_HDR + MIN_TCP_HDR) 問題はまだ残っています:なぜですか?なぜLinuxカーネルはこの公式を使用して、たとえば20バイトのTCPセグメント(の強制フロー)を禁止するのですか?ここでiperfを考えてください。 EDIT2:これが私のユースケースです。ソケット/接続のMSSを低く設定すると、スタックによって送信されるすべてのパケットのサイズが小さくなります。パケット/秒のテストでiperfを使用する場合、MSSを低く設定したいと思います。MSSのこの下限のため、128バイト(142バイトのイーサネットフレーム)より小さいIPパケットをワイヤで取得できません。RFC 2544に従って、64バイトのイーサネットフレームサイズにできるだけ近い値を取得したいと考えています。理論的には、18 + 20 + 20 <64が可能です。

1
Debian Stretchソースのtcpポートは*常に*です
Azureロードバランサーを使用していくつかの奇妙な動作をデバッグしているときに、ローカルのDebian Stretch TCPスタックが偶数番号のポートとのTCP接続しか確立していないことに気付きました。奇数のソースポートで単一のTCPハンドシェイクを開始しません。それは意図されていますか?

3
TCPトラフィックを生成するツール
ポート0からポート65535までのTCPトラフィックを生成したい ジェネレータは、TCP ACKがあるかどうかを気にする必要はありません。 そのようなトラフィックを生成できるツールはありますか? iperfとスクリプトでそれを行うことは可能ですか? つまり、Windowsでも実行できますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.