八股学习记录:
- 湖科大计网视频
- 过书,重点看书上运输层的知识(谢希仁第八版)
- 阿秀的学习笔记
- 整理笔记,查缺补漏
计网的五层协议/四层是将最下边两层压缩了称为链路层
OSI七层协议
UDP协议
TCP协议
TCP流量控制
TCP拥塞控制
慢开始
拥塞避免
快重传:要求接收方每次都立即发送确认信息,当发送方可以收到三次确认信息,说明网络并不没有堵死,而是由于别的原因导致某个包丢了一直重复确认,此时只需要让发送方马上重传,不要进入超时重传状态,从而无需改变拥塞窗口造成网络资源浪费
快恢复:
为什么不是两次握手?
是为了防止已失效的连接请求又传送到TCP服务端,导致错误和资源浪费
个人理解:我认为前两次握手是让客户端和服务器彼此知晓对方的存在,而第三次握手是对之前的两次握手信息的确认才会正式进入连接建立的状态,如果只有两次握手,那么如果有一些异常连接比如滞留在网络中的客户连接请求发起,那么服务器就会不经过验证直接相应进入到连接建立状态,但是这个连接对于客户端是异常的,所以是不合法的连接,这种情况下服务器端的响应非常浪费资源。
简单说一下四报文挥手?
请说一下完整的HTTP请求的流程?
说一下DNS域名解析的原理
大厂面试:
http中缓存的私有和共有字段
HTTP不同版本
浏览器对于同一host建立的TCP连接数量有没有限制?
http请求方法一般有 get post head
get和post的区别
输入url到回车经历了什么?
域名解析:检查浏览器缓存,本地缓存,检查本地DNS服务器
http默认端口为80, https的默认端口为443,三次握手,先尝试通过80建立TCP连接
http和https的区别(SSL加密技术)
http:被监听;被篡改;网站冒充
https:交互信息无法被窃取;通信内容校验无法被篡改;真实网站拥有身份证书
https实现的方法?
混合加密:非对称的方式进行共享密钥,对称的方式进行内容加密。
摘要算法(哈希算法保持完整性)+数字签名(持有私钥,证明身份可靠性)
数字证书
服务器缓存
DNS负载均衡
Cookie是什么?
cookie是 服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带上,用于告知服务端两个请求是否来自同一浏览器。
cookie包括
用session来将用户的登录信息存储到服务器端redis,在redis中的key就是session ID,将key传回客户端,下次再来访问的时候,客户端拿着key来就可以拿到用户登录信息value
cookie和session的区别
地址解析协议ARP
MTU和MSS
TCP首部
端口
序号:记录自己正要发送数据的首位偏移
确认号:接收方目前收到的序号
首部长:标识首部的长度
标志位:
窗口:用于告知对方,本方的缓存还能接收多少数据
校验和:接收端检查报文是否损坏
三次握手过程
初始状态:客户端处于closed状态,服务器处于listen监听转台
客户端向服务器发送一个SYN连接请求,并告诉对方自己此时初始化序列号为x,发送之后处于SYN_send状态
服务器收到客户端发来的请求,如果同意建立连接,那么就也发送一个SYN=1的信号,并发送自己的初始化序列号seq = y,同时为了告诉客户端自己下一步想要接收的信息(为了告诉客户端你的消息我收到了),发送确认序列号ack = x+1,并将ACK置为1发送回去,服务器此时为SYN_Receive状态【站在客户端,此时发送信息并得到回应,她会认为这是个靠得住的服务器,但是对于服务器来说,你发送我就全盘接收可太没有保障了,我都不知道你是谁,也不知道你到底有没有发送能力,就白白留一个连接等着你,所以服务器不答应两次握手,他也要试试客户端是真有能力还是假有能力,此时迎来第三次握手】
第三次握手是客户端收到服务端的返回后,客户端发送同步序列号seq = x+1,并对服务器端的序列进行确认响应,将ACK置为1并回复ack=y+1,客户端转为established,服务器收到这个消息之后也转为established。
如果第三次握手包丢了怎么办?
三次握手过程中可以携带数据吗?
什么是半连接队列?SYN_received状态的集合
DDos攻击【SYN攻击就是其中一种】
四次挥手流程
1、客户端:我要和你离婚,这是离婚协议书,我已经签了你签个字吧【发送FIN=1,并发送此时的序列号seq=u,进入FIN_WAIT1】
2、服务端:啊?你再说一遍?你要和我离婚,我还有好多愿望没和你一起实现呢【发送ACK=1,ack=u+1,seq=v,服务端进入CLOSE_WAIT,客户端听了进入了FIN_WAIT2】你听我说啊巴拉巴拉
3、服务器端见到自己挽回了这么久,客户端也没有说一句话,知道没有希望了:好吧,缘分尽了莫强求。他狠下心来签了离婚协议书【FIN=1,ACK=1,seq=w,ack=u+1,服务端进入LAST_ACK状态,客户端进入TIME_WAIT】
4、客户端冷静的看到签好的离婚协议书,说:从此一别两宽吧【ACK=1,seq=u,ack=w+1,服务器收到进入CLOSED】,她顿了一下,想看看服务器还要说什么,毕竟夫妻一场以后再也见不到了,心中还是空落落的,可过了一会儿见还是一阵沉默,她心想:”算了,一切都结束了!“【客户端进入CLOSED】
为什么需要四次挥手?
2MSL等待时间(MSL是任何报文在网络中存在的最长时间,超过这个时间就会被丢弃)
网络层的IP首部
TCP首部的校验和和IP首部的校验和区别:TCP校验包括TCP首部和TCP数据,发送方计算接收方验证,如果结果不匹配则TCP段直接丢弃,而IP首部中的校验只包括IP首部,两者都是采用反码求和得到的。
数据链路层的首部
TCP粘包问题和解决方案
封包和拆包听说过吗?
TCP如何保证可靠传输
Ping命令基于什么协议?
TCP滑动窗口为0时,可以特殊发送的数据
超时重传、RTO、RTT
服务器出现大量的close_wait连接
四种前端安全漏洞