The url_response probe calculates QOS_URL_FIRSTBYTE_TIME in milliseconds based on the output of CURL API. It is the difference between CURLINFO_STARTTRANSFER_TIME and CURLINFO_CONNECT_TIME. These are curl standard API flags.
• CURLINFO_STARTTRANSFER_TIME gives the time in seconds from the start, (beginning), until the first byte is received.
• CURLINFO_CONNECT_TIME give the total time in seconds from the start until the connection to the remote host, (or proxy), was completed.
So QOS_URL_FIRSTBYTE_TIME starts after connecting to the remote host and stops after reaching the first byte.
This metric returns the difference between the curl API flags CURLINFO_TOTAL_TIME and CURLINFO_STARTTRANFER_TIME.
• CURLINFO_TOTAL_TIME gives the total time in seconds for the previous transfer means until the last byte is received. It includes the DNS resolution time and TCP connection time also.
• CURLINFO_STARTTRANSFER_TIME gives the time in second from the start(beginning) until the first byte is received. It also includes the DNS resolution time and TCP connection time.
QOS_URL_DOWNLOAD_TIME starts after the QOS_URL_FIRSTBYTE_TIME and runs till the last byte is received.
This metric is the total amount of time in milliseconds from beginning to the last transfer. QOS_URL_RESPONSE = (CURLINFO_TOTAL_TIME*1000).
CURLINFO_TOTAL_TIME is part of the curl API and is the total time in seconds for the previous transfer, including name resolving, TCP connect etc. It can be smaller than QOS_URL_FIRSTBYTE_TIME