#author("2023-04-03T09:31:03+09:00","default:irrp","irrp")
#author("2023-05-16T22:19:11+09:00","default:irrp","irrp")
→[[ネットワーク関連]]

→IP(Internet Protocol)関連

→IPアドレス

#contents

*Tipsなど [#g36d4f4f]
-[[できる!TCP/IPスタック改造! | スクエニ ITエンジニア ブログ>https://blog.jp.square-enix.com/iteng-blog/posts/00046-how-to-tweak-tcp-ip-stack/]] 2023.5

-[[アプリ開発者のための TCP/IP ネットワーク入門 / 新山 祐介>https://euske.github.io/slides/tcpip202301/index.html]] 2023.3

-[[メモ: 『Linuxで動かしながら学ぶTCP/IPネットワーク入門』>https://zenn.dev/bells17/scraps/be121ff8e873aa]] 2022.7

-どのポートで何が待っているか知るLinuxコマンド
 sudo lsof -i -n -P

-[[速度向上の裏技>http://www.bspeedtest.jp/speedup.html]]
--RWinの設定によって(地域によっては)回線速度が向上する

-[[TCP/IP Fundamentals for Microsoft Windows:http://www.microsoft.com/downloads/details.aspx?FamilyID=c76296fd-61c9-4079-a0bb-582bca4a846f&DisplayLang=en]]
--書籍丸ごとダウンロード。ただし英語


*TCPヘッダ形式 [#fad300ff]
-参考:http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/tcpheaders.html

#ref(tcp_header.png);

-確認応答番号(=ACK番号):ACKで返ったときに受信側が次に来ることを期待するシーケンス番号

-ヘッダ長=データオフセット:TCP ヘッダを 4byteのワード単位で数えた値(通常TCPヘッダは20byteなので5)となる。ヘッダは、どんなオプションが使われていようとも常に 32ビット境界で終わっていなければならない。端数は末端でパディングする

-コードビット=TCPフラグ:
--(上の図は古い仕様のものなのでCWR,ECEのフラグが記載されていない)
--CWR:(Congestion Window Reduced) 輻輳ウィンドウを縮めて送信したことを示す
--ECE:(ECN-Echo)IPヘッダのECNフィールドに'11'がセットされたパケットを受け取ったことを示す
--URG:緊急データを含んでいる
--ACK:確認応答。コネクション確立時の最初のセグメント以外は必ず1
--PSH:受け取ったデータをすぐにアプリ層に渡す
--RST:コネクションの強制切断
--SYN:コネクション確立要求
--FIN:コネクションの正常終了要求

-ウィンドウサイズ:TCPセグメント全体の長さ=IPパケット長−IPヘッダ長。確認応答なしに送信できるサイズの最大値でもある。バイト数単位。MSSの整数倍に設定することが多い。
--TCPコネクション確立時にエンド-エンド間で折衝する。従って送る側も送られる側もウィンドウサイズを知っている。
--送信側はウィンドウサイズ分を送信したら、受信側からACKが返ってくるのを待つ。ACKが(正しいシーケンス番号とともに)返ってきたら次のウィンドウサイズ分のデータを送り、再びACKを待つ。

-緊急ポインタ=アージェントポインタ:URGフラグが1の時のみ有効。緊急データの開始位置を示す


*用語 [#g80b94a5]
-セグメント
--TCPのメッセージのことをなぜかセグメントと呼ぶ

-MSS:Maximum Segment Size
--MSSとは、TCPが格納するユーザデータで受信可能なセグメントサイズの最大値
--MTU(Maximum Transmission Unit)と混同しないこと。MTUはIPで一回のデータ転送で送信可能なIPデータグラムの最大値。TCPのパケットはIPのパケットに載っているので、MSS=MTU-40バイト(IPのヘッダサイズ+TCPのヘッダサイズ)になる。
--参考資料:http://www.infraexpert.com/info/5adsl.htm

-RWIN:Receive Window Size
--RWINとは、相手側の確認応答 ( Ack ) を待たずに一度に送信出来るデータサイズ
--RWIN=上のTCPヘッダで言うウィンドウサイズです
--RWINはMSSの整数倍で設定することが多い

-エフェメラル・ポート ephemeral ports
--TCPで接続したときのクライアント側のポート。ランダムに決定される。サーバからクライアントにデータを送信するときに使われる。



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS