|
351 | 351 | 为 min(listen_backlog, /proc/sys/net/core/somaxconn),
|
352 | 352 | 当命令输出中这两个参数相等时,表示当前accept队列满,考虑调大somaxconn数值;
|
353 | 353 | 如果是已经建立好的链接,Recv-Q表示内核已经收到但是应用还没有读取的数据量,
|
354 |
| - Send-Q表示还在SendBuf中,没有ack的数据量) |
| 354 | + Send-Q表示还在SendBuf中,没有ack的数据量,单位是字节) |
355 | 355 |
|
356 | 356 | 109、当半连接队列满时,新来的连接的处理方式为?
|
357 | 357 | (tips:丢弃新来的连接请求,客户端的connect会超时)
|
|
516 | 516 | 143、网络模块中的连接表是全局的,在recv中,计算四元组hash,然后在连接表中找到sock,
|
517 | 517 | 完成后续的通信过程
|
518 | 518 |
|
| 519 | +144、tcp用到的mem参数有如下几个: |
| 520 | + ( |
| 521 | + net.core.rmem_default 所有socket的读取buffer默认值 |
| 522 | + net.core.rmem_max 所有socket的读取buffer最大值,可以由setsockopt SO_RECVBUF 修改,单位字节 |
| 523 | + net.core.wmem_default 所有socket的发送buffer默认值 |
| 524 | + net.core.wmem_max 所有socket的发送buffer最大值,可以由setsockopt SO_SNDBUF 修改,单位字节 |
| 525 | + net.ipv4.tcp_mem tcp socket 能用到的mem量,分 min pressure max,以page为单位 |
| 526 | + net.ipv4.tcp_rmem 单tcp socket 能用到的接收buffer量,分 min pressure max,调用setsockopt修改rmem后,内核的自适应调节功能关闭 |
| 527 | + net.ipv4.tcp_wmem 单tcp socket 能用到的发送buffer量,分 min pressure max,调用setsockopt修改wmem后,内核的自适应调节功能关闭 |
| 528 | + ) |
| 529 | + |
| 530 | +145、tcp各个状态简述 |
| 531 | + ( |
| 532 | + FIN_WAIT_1,主动调用close的一方在发送了FIN包之后的状态,当收到对方的ack后,状态流转到FIN_WAIT_2;如果没有收到ack,那么重新发送FIN包 |
| 533 | + FIN_WAIT_2,处于FIN_WAIT_1状态的socket收到FIN的ack后,状态转为FIN_WAI_2,socket在这个状态的超时时间为tcp_fin_timeout,如果系统中有较多的 |
| 534 | + 此状态的socket,那么表示对端可能异常,没有正确的调用close |
| 535 | + time_wait,主动关闭的一方在收到对方发送的FIN后,回复ACK,状态转为time_wait,在2 msl 时间后,socket 关闭 |
| 536 | + close_wait,被动关闭的一方收到对端的FIN包后,状态转为close_wait,注意,这个状态没有超时时间,需要后端配合来释放socket链接 |
| 537 | + last_ack,被动关闭的一方发送FIN后,状态转为last_ack,如果没有收到对方的ack,需要重传,如果收到ack,那么socket状态为closed |
| 538 | + ) |
| 539 | + |
| 540 | +146、什么是orphan sockets |
| 541 | + (tips:orphan socket可以理解为没有和fd关联的socket,对应TCP中socket的状态为 FIN_WAIT_1,LAST_ACK,TCP_CLOSING, |
| 542 | + 其中TCP_CLOSING用于表示同时关闭的场景,即在FIN_WAIT_1状态下同时受到FIN包 |
| 543 | + CLOSE_WAIT 不计入 orphan socket |
| 544 | + TIME_WAIT 不计入 orphan socket |
| 545 | + FIN_WAIT_2 根据 fin_timeout 不同时长,有可能计入 |
| 546 | + 如果系统上orphan socket 过多,那么需要统计处于哪个状态的socket较多,再结合[145]来分析) |
| 547 | + |
519 | 548 | // http
|
520 | 549 | 1、什么是CNAME?
|
521 | 550 |
|
|
557 | 586 | 15、标准http header中的字段都是大小写不敏感的,浏览器已经对这个进行了处理,
|
558 | 587 | 在做服务端开发,或者客户端解析时需要注意
|
559 | 588 |
|
| 589 | +16、http协议中的Connection header定义了当前Trans完成后,服务端怎么处理当前这个连接。 |
| 590 | + 默认为 close,即常见的短链接 |
| 591 | + 如果为 Keep-Alive,那么链接将会维持 |
| 592 | + http Header中同样有Keep-Alive字段,可以定义timeout 和 max 字段来控制当前链接的超时时间 |
| 593 | + 和发送的request数量 |
| 594 | + |
560 | 595 | // 其他相关
|
561 | 596 | 1、iptables实现原理,使用了哪些算法?
|
562 | 597 |
|
|
0 commit comments