#author("2023-05-16T22:19:11+09:00","default:irrp","irrp") #author("2023-05-17T11:02:49+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で返ったときに受信側が次に来ることを期待するシーケンス番号 -確認応答番号(=ACK番号):ACKで返ったときに受信側が次に来ることを期待するシーケンス番号。つまりシーケンス番号+1が返ってくる。 -ヘッダ長=データオフセット: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で接続したときのクライアント側のポート。ランダムに決定される。サーバからクライアントにデータを送信するときに使われる。