(php) 求教网络多次connect的问题?

在查看有时候文件上传到cdn比较慢的情况。
使用strace查看到以下系统调用。

我有一些疑问:

  1. 查询dns的时候,connect了一次之后,为何会有两次sendto。看样子两次都发送了同个域名过去。

  2. 连接cdn的时候出现了多次connect,我很不理解这个过程,可否帮我讲解下,发生了什么,为什么这样。

futex0x7fbfc9b9ff04, FUTEX_WAKE_PRIVATE, 2147483647 = 0
socketPF_INET, SOCK_DGRAM, IPPROTO_IP = 6
connect6, {sa_family=AF_INET, sin_port=htons80, sin_addr=inet_addr"221.181.196.155"}, 16 = 0
getsockname6, {sa_family=AF_INET, sin_port=htons44696, sin_addr=inet_addr"10.250.1.110"}, [16] = 0
connect6, {sa_family=AF_UNSPEC, sa_data=""}, 16 = 0
connect6, {sa_family=AF_INET, sin_port=htons80, sin_addr=inet_addr"211.142.193.60"}, 16 = 0
getsockname6, {sa_family=AF_INET, sin_port=htons45965, sin_addr=inet_addr"10.250.1.110"}, [16] = 0
connect6, {sa_family=AF_UNSPEC, sa_data=""}, 16 = 0
connect6, {sa_family=AF_INET, sin_port=htons80, sin_addr=inet_addr"183.203.25.158"}, 16 = 0
getsockname6, {sa_family=AF_INET, sin_port=htons59516, sin_addr=inet_addr"10.250.1.110"}, [16] = 0
close6 = 0
gettimeofday{1464771775, 191396}, NULL = 0
alarm0 = 30
rt_sigactionSIGALRM, {SIG_DFL, [], SA_RESTORER, 0x7fbfc98419a0}, NULL, 8 = 0
clock_gettimeCLOCK_MONOTONIC, {11494888, 559945294} = 0
clock_gettimeCLOCK_MONOTONIC, {11494888, 560020269} = 0
socketPF_INET, SOCK_STREAM, IPPROTO_TCP = 6
fcntl6, F_GETFL = 0x2 flags O_RDWR
fcntl6, F_SETFL, O_RDWR|O_NONBLOCK = 0
connect6, {sa_family=AF_INET, sin_port=htons80, sin_addr=inet_addr"221.181.196.155"}, 16 = -1 EINPROGRESS Operation now in progress

tcp 三次握手

cdn 会连接到多个节点

第一个问题我不知道。

第二个,解析DNS之后会有多个A记录,看样子先进行了测速之类的任务,然后选择最优服务器上传数据。

发表评论

电子邮件地址不会被公开。 必填项已用*标注