naokiの自分辞書・なぜなぜ手帳

分からない単語を調べて、自分のために解説するブログです。プログラミング用語から日常で気になった単語まで雑多に投稿します。

リソースタイミングAPIを見ていて分からなかった単語を調べた

次の例は、リソース タイミング プロパティを使用して、リダイレクション (redirectStartおよびredirectEnd)、DNS ルックアップ (domainLookupStartおよびdomainLookupEnd)、TCP ハンドシェイク (connectStartおよびconnectEnd)、および応答 (responseStartおよびresponseEnd) にかかる時間を計算する方法を示しています。この例では、フェッチおよび要求開始フェーズの開始 (それぞれfetchStartおよびrequestStart) から応答が終了するまでの時間 ( responseEnd) も計算します。このタイミング データは、リソースのロード フェーズの詳細なプロファイルを提供し、このデータを使用してパフォーマンスのボトルネックを特定することができます。

Using the Resource Timing API - Web APIs | MDN

 

リダイレクション(リダイレクト)

HTTPで、サーバにリクエストがあった時に、ステータスコードが 3から始まり(例: 301 Moved Permanently)、Location ヘッダーがリダイレクト先の URL をもつ、レスポンスを返す事で、リダイレクトさせる事ができる。

 

HTTP のリダイレクト - HTTP | MDN

 

DNSドメインネームシステム) ルックアップ

ネームサーバーに、ブラウザが URL を投げて、IPアドレスを返してもらうこと。

ブラウザーDNS ルックアップをリクエストし、そのリクエストは最終的にネームサーバーによって処理され、ネームサーバーが IP アドレスを返します。この最初のリクエストの後、多くの場合その IP アドレスはしばらくの間キャッシュされ、ネームサーバーへ再接続する代わりにキャッシュから IP アドレスを取得することによって、後続するリクエストの速度を向上します。

ページの生成: ブラウザーの動作の仕組み - ウェブパフォーマンス | MDN より引用

 

Mac のシステム環境設定 > ネットワーク > DNS で、Google の 8.8.8.8 を指定すると早くなって良いよとか言って、指定していた IPアドレスは、ネームサーバーの IP アドレスだったのか。

 

でもなんで、8.8.8.8 というIP アドレスを使えるのか??

 

TCP ハンドシェイク

2台のコンピューター、クラインとサーバーが通信するために、接続を確認する方法。

 

  1. クライアントが、サーバーに まず 送信元ポートと宛先ポートと SYN( 同期を意味する Synchro) というフラグのデータを送って、届いてる確認する。
  2. サーバーはそのデータを受け取ったら、送信元ポートに SYNとACK(了承を意味する Acknowlegement)というフラグ持ったデータを送り返して、自分からもデータがちゃんと送れるか確認する。
  3. クライアントはデータを受け取ったら、ACK(了承)のフラグを送り返す。

 

このデータを送る前の、接続確認のやりとりのことを TCPハンドシェイクと呼ぶ。

 

【図解】TCPコネクションのシーケンスと状態確認〜3way handshake, FIN/RST, netstat〜 | SEの道標

 

TCPとは?ネットワーク初心者向けにわかりやすく3分で解説 | ビズドットオンライン

 

フェッチ

fetchStart    HTTPリダイレクトが発生しない場合、リソースのダウンロードを開始する直前の時間

DNSルックアップと、TCPハンドシェイクが終わって、リクエスト送った時間?

 

要求開始フェーズ(requestStart)

requestStart    ブラウザがURLにリクエストを送信する直前の時間

DNSルックアップにリクエスト送る時の時間?

 

なので、フェッチと要求開始フェーズについては、ブラウザの世界のワードで、TCPコネクションなどのTCPの世界とは違う様に思う。

パフォーマンスまわりのAPIについて - Qiita