文章目录
- HTTP状态码
- get / post 区别
- 怎么跨域
- CSRF预防,HTTP/DNS 劫持
- 对称加密和非对称加密,RSA 具体说说
- DES 和 AES 区别【都属于对称加密】
- 对称密钥为什么速度快
- HTTPS 证书是啥?加密内容?
- 可以伪造证书吗?中间人攻击能预防吗?
- TCP怎么计算时间,RTT和RTO ?
- UDP 伪首部多大,有啥,有啥用?
- 常见的拥塞控制算法 (BBR,RENO,BIC-tcp)
- TCP异常处理,什么时候有RST
- Http各个版本
- QUIC 特点,缺点
- 对头阻塞 tcp http的角度,分别讲一下
- BBR 怎么快,怎么实现,和之前的有什么区别
- TCP 选项有什么
- tcp 首部多大
- 分片和分段区别
- Tcp半打开和半关闭的区别
- udp 存在的意义
- dns欺骗怎么办? arp欺骗?CSRF攻击?xss攻击?syn flood攻击?应对方法
- 一个TCP连接可以为多少个HTTP连接服务
- 如果网络比较差,TCP会出现什么问题
- UDP如何设计可靠传输
- 三次握手是为什么?两次为什么不行?会造成什么问题?
- `TIME_WAIT`过多问题
- 网关层还了解什么技术
- 用户通过浏览器访问你的博客网站,用到了哪些协议?
- HTTP 有哪些常见的请求方法?创建一篇文章用什么请求方法?
- TCP 是怎么判断一个包丢了
- 粘包 不知道
- TCP连接他有一个四元组知道吧
- seq序号使用随机值
HTTP状态码
考到的,都记录一下:
get / post 区别
Http报文层面:
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据
- GET请求放在
URL
中,长度受限,请求信息和URL
以"?"
隔开,格式为:键值对。 - POST请求信息放在报文中,一般是在提交账号密码时,明文。
- 二者安全性差不多。
特殊情况:
数据库层面:
- GET查询操作符合幂等性、安全性,即对数据库进行一次/多次查询操作,结果一致,多次操作不改变数据库的数据。
- 而POST不符合,它会多次往数据库中提交数据,改变数据库。
其他层面:
- GET可以被缓存,存储。缓存在浏览器中。多数GET被CDN缓存,减少web服务器的负担。
- POST不行,交由web服务器处理。
怎么跨域
跨域:(不懂)
跨域-讲解
首先,什么是跨域?
浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域
跨域是浏览器行为,不是服务器行为。
为什么会出现跨域问题?
浏览器的同源策略限制导致了跨域问题,这是一个安全机制。
什么是同源策略?没有同源策略会出现什么危险场景?
- 没有同源策略限制的接口请求—CSRF攻击
- 没有同源策略限制的Dom查询—钓鱼网站
什么是Dom-了解一下
如何解决跨域问题?
这个需要了解到什么程度?
跨域处理的方法
跨域资源共享 CORS 详解
其中的nginx反向代理可以详细了解一下
nginx反向代理
CSRF预防,HTTP/DNS 劫持
CSRF:跨站请求伪造攻击。【原理和预防】
CSRF攻击原理、防御、token-讲解的更清楚
token不太理解和cokkie区别是什么?token是每次随机生成的?
对称加密和非对称加密,RSA 具体说说
对称加密算法
- 加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。
- 对称密钥加密是双方使用相同的密钥,必须以绝对安全的形式传送密钥才能保证安全。若果密钥泄露,加密数据将受到威胁,这点不如非对称密钥。
对称加密要求
需要强大的加密算法
保证密钥的安全
非对称加密算法
加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为RSA
、ECC
和EIGamal
。
非对称加密-百科
RSA:非对称加密
- 为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。
- 为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。
- RSA-百科
DES 和 AES 区别【都属于对称加密】
DES:Data Encryption Standard
,即数据加密标准。DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
AES:密码学中的高级加密标准(Advanced Encryption Standard,AES)
,又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。
对称密钥为什么速度快
HTTPS 证书是啥?加密内容?
Https证书-讲解
全网最透彻HTTPS(面试常问)
【讲了HTTP对称&非对称加密。通过私钥的签名信息来验证证书可靠性。这里把逻辑理清楚】
把这个图讲清楚
可以伪造证书吗?中间人攻击能预防吗?
中间人攻击(Man-in-the-Middle Attack, MITM) 是一种由来已久的网络入侵手段,并且当今仍然有着广泛的发展空间,如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击。简而言之,所谓的MITM攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。
中间人攻击-百科-认真阅读
防御: 对于DNS欺骗,要记得检查本机的HOSTS文件,以免被攻击者加了恶意站点进去;其次要确认自己使用的DNS服务器是ISP提供的,因为当前ISP服务器的安全工作还是做得比较好的,一般水平的攻击者无法成功进入;
TCP怎么计算时间,RTT和RTO ?
RTT(Round-Trip Time) 往返时间在计算机网络中它是一个重要的性能指标。表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认,不包含数据传输时间)总共经历的时间。
RTT由三个部分决定:链路的传播时间、末端系统的处理时间、路由器的缓存中的排队和处理时间。其中前两个部分的值作为一个TCP连接相对固定,路由器的缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化。所以RTT的变化在一定程度上反映了网络拥塞程度的变化。简单来说就是发送方从发送数据开始,到收到来自接受方的确认信息所经历的时间。
RTO,TCP超时重传机制 (RTO:Retransmission Timeout) ,是TCP操作计时器的一种。
为了防止数据报丢失,当TCP发送一个报文时,就启动重传计时器,有2种情况:
1.若在计时器超时之前收到了特定报文的确认,则撤消这个计时器;
2.特定数据报在计时器超时前没有收到确认,则重传该数据报,并把计时器复位
RTO的数值基于平滑的往返时间及其偏差,大多数使用下面的公式:
最初 -->初始值
在任意次测试后 -->RTO=SRTT+4*DRTT
UDP 伪首部多大,有啥,有啥用?
检验和目的
- 目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到检验和有差错,则TCP段会被直接丢弃。
- TCP在计算检验和时,要加上一个12字节的伪首部。伪首部顾名思义就是假的首部,既 不往上传也不往下传 ???,只是用于校验TCP/UDP报文段。
伪首部
- 伪首部共有12字节,包含IP首部的一些字段,有如下信息:32位源IP地址、32位目的IP地址 、8位保留字节(置0)、8位传输层协议号(TCP是6,UDP是17)、16位报文长度(首部+数据)。
- 伪首部是为了增加校验和的检错能力:通过伪首部的目的IP地址来检查TCP报文是否收错了、通过伪首部的传输层协议号来检查传输层协议是否选对了。
常见的拥塞控制算法 (BBR,RENO,BIC-tcp)
拥塞控制的四个过程:
慢开始( slow-start )、拥塞避免( congestion avoidance )、快重传( fast retransmit )和快恢复( fast recovery )
浅谈 TCP 拥塞控制算法
拥塞控制算法-讲解
BBR拥塞控制算法讲解1
来自Google的TCP BBR拥塞控制算法解析
TCP异常处理,什么时候有RST
RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。就像上面说的一样,发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。
tcp异常-讲解
Http各个版本
Http1.1 特点,缺点
Http2.0 特点,缺点
http3.0 特点,缺点
QUIC 特点,缺点
QUIC(Quick UDP Internet Connection) 是谷歌制定的一种基于UDP的低时延的互联网传输层协议。
QUIC很好地解决了当今传输层和应用层面临的各种需求,包括处理更多的连接,安全性,和低延迟。QUIC融合了包括TCP,TLS,HTTP/2等协议的特性,但基于UDP传输。
- QUIC的一个主要目标就是减少连接延迟,当客户端第一次连接服务器时,QUIC只需要1RTT(Round-Trip Time)的延迟就可以建立可靠安全的连接,相对于TCP+TLS的1-3次RTT要更加快捷。
- 客户端可以在本地缓存加密的认证信息,在再次与服务器建立连接时可以实现0-RTT的连接建立延迟。
- QUIC同时复用了HTTP/2协议的多路复用功能(Multiplexing),但由于QUIC基于UDP所以避免了HTTP/2的线头阻塞(Head-of-Line Blocking)问题。
- 因为QUIC基于UDP,运行在用户域而不是系统内核,使得QUIC协议可以快速的更新和部署,从而很好地解决了TCP协议部署及更新的困难。
对头阻塞 tcp http的角度,分别讲一下
http1.1规定,服务器端的响应的发送要根据请求被接收的顺序排队,也就是说,先接收到的请求的响应也要先发送。这样造成的问题是,如果最先收到的请求的处理时间长的话,响应生成也慢,就会阻塞已经生成了的响应的发送。也会造成队首阻塞。
http协议的队首阻塞
BBR 怎么快,怎么实现,和之前的有什么区别
TCP 选项有什么
- MSS选项
- 窗口规模选项
结合下边的首部格式图去理解
常用的TCP选项
tcp 首部多大
分片和分段区别
Tcp半打开和半关闭的区别
udp 存在的意义
UDP 在传送数据之前不需要先建⽴连接,远地主机在收到 UDP 报⽂后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是⼀种最有效的⼯作⽅式(⼀般⽤于即时通信),⽐ 如: QQ 语⾳、 QQ 视频 、直播等等
TCP 提供⾯向连接的服务。在传送数据之前必须先建⽴连接,数据传送结束后要释放连接。 TCP 不提 供⼴播或多播服务。由于 TCP 要提供可靠的,⾯向连接的传输服务(TCP的可靠体现在TCP在传递数据 之前,会有三次握⼿来建⽴连接,⽽且在数据传递时,有确认、窗⼝、重传、拥塞控制机制,在数据传 完后,还会断开连接⽤来节约系统资源),这⼀难以避免增加了许多开销,如确认,流量控制,计时器 以及连接管理等。这不仅使协议数据单元的⾸部增⼤很多,还要占⽤许多处理机资源。TCP ⼀般⽤于⽂ 件传输、发送和接收邮件、远程登录等场景。
dns欺骗怎么办? arp欺骗?CSRF攻击?xss攻击?syn flood攻击?应对方法
DNS欺骗-百科就是攻击者冒充域名服务器的一种欺骗行为。 原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
使用最新版本的DNS服务器软件,并及时安装补丁
关闭DNS服务器的递归功能。DNS服务器利用缓存中的记录信息回答查询请求或是DNS服务器通过查询其他服务获得查询信息并将它发送给客户机,这两种查询成为递归查询,这种查询方式容易导致DNS欺骗。
保护内部设备
不要依赖DNS:在高度敏感和安全的系统,你通常不会在这些系统上浏览网页,最后不要使用DNS。如果你有软件依赖于主机名来运行,那么可以在设备主机文件里手动指定。
ARP欺骗,又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。
ARP欺骗的运作原理是由攻击者发送假的ARP数据包到网上,尤其是送到网关上。其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。
最理想的防制方法是网上内的每台计算机的ARP一律改用静态的方式,不过这在大型的网上是不可行的,因为需要经常更新每台计算机的ARP表。
另外一种方法,例如DHCP snooping,网上设备可借由DHCP保留网络上各计算机的MAC地址,在伪造的ARP数据包发出时即可侦测到。此方式已在一些厂牌的网上设备产品所支持。
XSS(Cross Site Scripting)攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
TCP-SYN Flood攻击又称半开式连接攻击,每当我们进行一次标准的TCP连接,都会有一个三次握手的过程,而TCP-SYN Flood在它的实现过程中只有前两个步骤。这样,服务方会在一定时间处于等待接收请求方ACK消息的状态。由于一台服务器可用的TCP连接是有限的,如果恶意攻击方快速连续地发送此类连接请求,则服务器可用TCP连接队列很快将会阻塞,系统资源和可用带宽急剧下降,无法提供正常的网络服务,从而造成拒绝服务。
一个TCP连接可以为多少个HTTP连接服务
在 HTTP/1.0 中,一个服务器在发送完一个 HTTP 响应后,会断开 TCP 链接。这种方式代价太大。可开启Connection: keep-alive 让TCP持续一段时间。这个在Http/1.1中是默认开启的。
如果维持连接,一个 TCP 连接是可以发送多个 HTTP 请求的
一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?
在 HTTP/1.1 存在 Pipelining 技术可以完成这个多个请求同时发送,但是由于浏览器默认关闭,所以可以认为这是不可行的。在 HTTP2 中由于 Multiplexing 特点的存在,多个 HTTP 请求可以在同一个 TCP 连接中并行进行。
收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?
如果图片都是 HTTPS 连接并且在同一个域名下,那么浏览器在 SSL 握手之后会和服务器商量能不能用 HTTP2,如果能的话就使用 Multiplexing 功能在这个连接上进行多路传输。不过也未必会所有挂在这个域名的资源都会使用一个 TCP 连接去获取,但是可以确定的是 Multiplexing 很可能会被用到。
如果发现用不了 HTTP2 呢?或者用不了 HTTPS(现实中的 HTTP2 都是在 HTTPS 上实现的,所以也就是只能使用 HTTP/1.1)。那浏览器就会在一个 HOST 上建立多个 TCP 连接,连接数量的最大限制取决于浏览器设置,这些连接会在空闲的时候被浏览器用来发送新的请求,如果所有的连接都正在发送请求呢?那其他的请求就只能等等了。
如果网络比较差,TCP会出现什么问题
TCP拥塞控制算法调整发送速率;
调整重传间隔
UDP如何设计可靠传输
传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。
最简单的方式是在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设计。
1、添加seq/ack机制,确保数据发送到对端
2、添加发送和接收缓冲区,主要是用户超时重传。
3、添加超时重传机制。
目前有如下开源程序利用udp实现了可靠的数据传输。分别为RUDP、RTP、UDT。 其实基本上也是引用了TCP那一套的思想
三次握手是为什么?两次为什么不行?会造成什么问题?
三次握手的原因:
可以阻止历史重复连接的初始化(主要原因)
可以同步双方的初始序列号
可以避免资源浪费
两次握手出现的问题就按照上边的三点来回答。
TIME_WAIT
过多问题
网关层还了解什么技术
这个问题不太懂 网关层是那一层?
网关(Gateway)就是一个网络连接到另一个网络的“关口”。也就是网络关卡。
TCP/IP
EGP
IGP{RIP, OSPF}
用户通过浏览器访问你的博客网站,用到了哪些协议?
按照顺序来:
HTTP -DNS-IP-TCP-ARP-数据链路层协议
输入一个网址后的全流程-认真阅读:
键入网址后,期间发生了什么?
HTTP 有哪些常见的请求方法?创建一篇文章用什么请求方法?
应该是PUT方法
HTTP请求的常用方法有哪些
了解一下这些方法大概的作用
TCP 是怎么判断一个包丢了
如果自己发送的包丢了,对方会重复发送之前一个包的ACK,然后进行重传。
待补充
那 Socket 具体建立连接是怎么建立的?
粘包 不知道
TCP连接他有一个四元组知道吧
seq序号使用随机值
这个忘记了 补充一下
多个服务器怎么保存session一致性,我说了用一个代理,保存所有session,然后任意连接服务器,他问还有没有方法,我说能不能想数据库主从复制一样同步一下session,他说这样破坏了服务器之间无状态啥的设计原则。