このncコマンドはHTTPサーバーとしてどのように機能しますか?

このncコマンドはHTTPサーバーとしてどのように機能しますか?

持つ回答HTTP経由でファイルを提供nc

{ echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat some.file; } | nc -l -p 8080
{ echo -ne "HTTP/1.0 200 OK\r\nContent-Length: $(wc -c <some.file)\r\n\r\n"; cat some.file; } | nc -l -p 8080

コメント説明する:

2番目のncコマンドを使用しない限り、Chromeは凍結を停止しません。

また、応答後に nc コマンド show が終了するわけではありません。次のコマンドを使用して再起動できますwhile :; do { echo -ne "HTTP/1.0 200 OK\r\nContent-Length: $(wc -c <some.file)\r\n\r\n"; cat some.file; } | nc -l -p 8080; done。 Ctrl + Zを使ってスリープモードに切り替えます。

バウンスが発生すると、Webブラウザが自動的にURLを再ロードすることを意味しますか?

Chromeがジャンプするのを防ぐために、最初のncコマンドに追加された2番目のncコマンドの目的はありますかContent-Length: $(wc -c <some.file)

URLhttp://IP:8080/の後に何も追加しない場合、または何も追加しない場合は、Webブラウザからファイルをインポートできます。これらの柔軟性はncHTTPプロトコルで提供されますか、それともWebブラウザで提供されますか?

ありがとうございます。

ベストアンサー1

Chromeは転送されるファイルのサイズがわからないため、コマンドの最初のバージョンを引き続き使用するため、いつファイルがすべて受信されたのかわかりません。 。

2 番目のバージョンでは、ファイル コンテンツの前にペイロード サイズとともに HTTP ヘッダーが追加されるため、Chrome は必要なデータ量を認識し、ファイルの終わりに達するとトランザクションが完了したとマークします。

ncHTTP/1.0 200 OK\r\nHTTPプロトコルを介してコンテンツを転送するために必要な絶対最小値(そうではありませんが、許容できるコンテンツは非常に寛大です)を実装することと組み合わせて、仕様Content-Lengthに近い作業が追加されました。 HTTPプロトコルには詳細なドキュメントがありますので、お読みください。RFカード

編集する:

  1. バウンスは、ブラウザがページの読み込みが完了していないと思うことを意味します。したがって、Chromeはすべてのファイルがあると判断するまでホッピングし続けます。
  2. URLのコンポーネントを理解する必要がありますが、ポート番号の後ろの部分はサーバーが提供するリソースを指します。この場合、サーバーはユーザーが要求した内容を気にせず、常に返します。some.file
  3. この質問には本当に答えることはできません。タイプミスだと思いますnotenot

おすすめ記事