Http常用状态码:
1xx:信息性状态码;2xx:成功状态码;3xx:重定向状态码;4xx:客户端错误状态码;5xx:服务端错误状态码;
计算机网络体系结构:
OSI体系结构:物理层->数据链路层->网络层->运输层->会话层->表示层->应用层
TCP/IP体系结构:网络接口层->网际层IP->运输层->应用层
五层协议体系结构:物理层->数据链路层->网络层->运输层->应用层
Http2.0完全多路复用、报头压缩
数字签名与数字证书
公钥、个人信息、其他信息通过hash算法处理之后会生成消息摘要,再对消息摘要进行私钥加密形成数字签名
DNS解析过程:先看浏览器缓存有无IP,没有的话去本地DNS查,在没有的话 根域名服务器->权威域名服务器->权限域名服务器
forword与redirect的区别:
forword:A 找 B 借钱,B 说没有,B 去找 C 借,借到借不到都会把 消息传递给 A; redirect:A 找 B 借钱,B 说没有,让 A 去找 C 借"。
SQL注入:
主要是前端传参' 'or '1'=1(SQL是直接拼接的) SQL就会把表中所有的数据都会查出来
解决方案:1.使用#{}(参数占位符对于字符串类型,会自动加上"",其他类型不加。 )而不是${}(简单的字符串替换)
TCP 四次挥手过程中,为什么需要等待 2MSL,才进入 CLOSED 关闭状态 :
为了保证客户端发送的最后一个ACK报文段能够到达服务端
防止已失效的连接请求报文段出现在本连接中
TCP重传机制:
快速重传:接收到连续三个重复的ACK 带选择确认的重传SACK:在TCP头部加个标记,看哪些包没被接到
重复SACK 告诉发送方 哪些包重复接受
TCP拥塞控制:
拥塞窗口 cwnd RTT往返时间
慢启动:
收到一个ACK,cwnd就加一(单位MSS) 过一个RTT cwnd翻倍 丢包或cwnd >ssthresh (65535字节)进入拥塞避免
拥塞避免:每收到一个 ACK 时,cwnd = cwnd + 1/cwnd 当每过一个 RTT 时,cwnd = cwnd + 1
拥塞发生:当网络拥塞发生丢包时,会有两种情况: RTO 超时重传 (慢启动阀值 sshthresh = cwnd /2 cwnd 重置为 1 进入新的慢启动过程 ) 快速重传 推荐(拥塞窗口大小 cwnd = cwnd/2 慢启动阀值 ssthresh = cwnd 进入快速恢复算法 快速恢复:cwnd = sshthresh + 3 重传重复的那几个 ACK(即丢失的那几个数据包) 如果再收到重复的 ACK,那么 cwnd = cwnd +1 如果收到新数据的 ACK 后, cwnd = sshthresh。因为收到新数据的 ACK,表明 恢复过程已经结束,可以再次进入了拥塞避免的算法了。 TCP粘包与拆包:
要发送的数据小于 TCP 发送缓冲区的大小,TCP 将多次写入缓冲区的数据一次 发送出去,将会发生粘包; 接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包; 要发送的数据大于 TCP 发送缓冲区剩余空间大小,将会发生拆包; 待发送数据大于 MSS(最大报文长度),TCP 在传输前将进行拆包。即 TCP 报文长度-TCP 头部长度>MSS。 解决:发送端将每个数据包封装为固定长度 在数据尾部增加特殊字符进行分割 将数据分为两部分,一部分是头部,一部分是内容体;其中头部结构大小固定,且 有一个字段声明内容体的大小。