1、tcp三次握手?
SYN,标志位,用于建立TCP连接的握手过程中的标志位。
ACK,确认位,用于说明整个包是确认报文。
TCP/IP协议是传输层的一个面向连接提供可靠安全的传输协议。第一次握手有客户端发起,客户端向服务端发送一个报文,在报文里面,将SYN置为1,随机生成一个序列号x,当服务端收到这个报文后指导客户端要和我建立一个tcp连接,于是向客户端发送一个确认包,报文里面设置,SYN=1,ACK=1,ack=x+1,再随机生成一个序列号sep=y。基于上面两次握手,作为客户端我知道自己能发送消息和接收消息,对于服务端我可以收到消息,客户端能不能收到我发的消息我不知道,于是需要三次握手,第三次报文就是当客户端收到服务端发送的确认响应报文之后,还要继续给服务端进行回应,报文内容:seq=y+1,ACK=1,经过三次握手之后,这个连接就被安全的建立了。
2、四次挥手?
有客户端首先发起,第一次挥手客户端发送一个报文,在报文里面将FIN=1,根据之前发送报文生成的序列号这里将seq=x,当服务端收到这个报文后就知道了客户端想断开连接,但是此事服务端可能在发送数据导致不能立刻断开连接,服务端需要继续发送数据,服务端只进行一次消息queren(第二次挥手)报文内容ACK=1,ack=x+1,即告诉客户端我知道你要和我断开连接,但我没做好准备,你需要等我消息。服务端没有消息发送时,给客户端发送一个报文(第三次挥手),报文内容:seq=y,FIN=1。当这个报文到达客户端时,客户端需要给服务端发送一个消息确认报文(第四次挥手),报文内容:ACK=1,ack=y+1,经过四次挥手,双方都准备好了断开连接的准备,由此TCP/IP断开连接。
3、http和https的区别?
http是超文本传输协议,信息是明文传输,存在安全风险隐患,https在tcp和http的网络层加入了SSL/TLS安全协议,使得报文能够加密传输。
TCP三次握手之后就能进行HTTP的报文传输,而HTTPS在TCP三次握手之后,还需要进行SSL/TLS的握手过程,才可进行加密的报文传输。
HTTP的默认端口是80,HTTPS的默认端口上443。
HTTPS协议需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的,一般需要收费。
4、加密算法有哪些?
对称加密:加密和解密采用相同的密钥,是可逆的。例如:AES、DES
优点:加密速度快。
缺点:密钥容易泄露。
非对称加密:加密和解密的密钥是不一样的,使用公钥加密私钥解密。例如:RSA、DSA。
RSA:将两个大数相乘很容易,但是想要对乘积进行因式分解很难,可以将其乘积公开作为加密密钥。
优点:安全性高。
缺点:速度慢。
5、输入URL后的一系列变化?
a、首先进行DNS域名解析,得到域名对应的IP地址;
b、浏览器与服务器建立TCP连接;
c、向服务器发送请求;
d、服务器处理请求,并返回响应;
e、浏览器根据响应进行页面渲染;
f、浏览器端开和服务器的连接。
6、POST请求和GET请求的区别?
a、post请求是向服务器发送数据,get请求是向服务器请求数据;
b、get请求传输数据是通过url传输的,参数拼接在url地址栏上,post请求将字段和对应的值保存在请求体中,对用户是可不见的;
c、get请求传输数据量是有限的,因为url的长度是有限的,post请求可以传输大量数据;
d、get请求只能支持ascii,向服务器传输中文会出现乱码现象,中文要经过特殊处理比如经过url编码转换为16进制,post请求可以支持标准字符集;
e、get请求不安全,url可见,容易被cache缓存,还会被保存在浏览器记录中,post请求不会被cache缓存也不会出现在浏览器记录中。
7、拥塞控制的四个算法:
慢启动、拥塞避免、用色发生、快速恢复
慢启动:指数增长;
拥塞避免:当拥塞窗口cwnd超过慢启动门限ssthresh,就会进入拥塞避免;
超时重传:ssthresh=cwnd/2,cwnd=1,在执行慢启动;
快重传:收到三个ACK确认包,发送端就进行快重传。cwnd=cwnd/2,ssthresh=cwnd,然后进入快恢复;
快恢复:拥塞窗口cwnd=ssthresh+3(3个数据包已收到),直接进入到拥塞避免算法。