个人总结八股文的背诵方案
URL到显示网页的过程
- 浏览器解析URL,获取协议,主机名,端口号,路径等信息,并通过DNS查询将主机名转换为对应的IP地址
- 浏览器与服务器建立TCP,进行三次握手。
- 浏览器向服务器发送HTTP请求,包含请求方法 ,请求头,请求体等信息
- 服务器接收并处理HTTP请求,根据请求的路径和参数返回相应的HTTP响应,包含状态码,响应头,响应体等信息
- 浏览器接收并解析HTTP响应,根据状态码和响应头判断响应的结果和类型
- 浏览器根据响应体的内容进行渲染和显示。如果响应体是html文档,浏览器会生成DOM树和CSSOM树,然后生成渲染树,进行布局和绘制。如果响应体是js或css文件,则浏览器会执行js代码或应用css样式。如果响应体是图片或其他资源,浏览器会下载并显示。
- 浏览器会根据情况选择关闭或保持TCP连接,进行四次挥手。
DNS查询:本地域名服务器->host文件->根域名服务器->顶级域名服务器查询->权限域名服务器查询。(可以是递归查询,也可以是迭代查询)巧记:本地host根顶级权限
三次握手
- 客户端随机初始化序号seq=x,同时把 SYN 标志位设置为1,表示 SYN 报文。并发送给服务器
- 服务端收到客户端的 SYN 报文后,随机初始化序号seq=y,确认应答号ack=x+1;并将SYN 和 ACK 标志位都设置为1。发给客户端
- 客户端收到服务器的报文后,ack=y+1,seq = x+1。并发给服务器
seq=x,SYN=1;`` seq=y,ack=x+1,SYN=ACK=1; `` ack=y+1,seq = x+1。
为什么不能两次或四次?
- 如果只有两次握手,那么就无法保证双方都能接收数据。例如,如果客户端发送了连接请求后,由于网络延迟或其他原因,没有收到服务器的连接确认,那么客户端就不知道服务器是否同意连接,也不知道服务器的初始序列号。如果此时客户端开始发送数据,可能会导致服务器无法正确处理或丢弃数据。
- 如果有四次或更多次握手,那么就会浪费时间和资源。例如,如果在第二次握手后,服务器再向客户端发送一个额外的确认,那么这个确认就是多余的,因为客户端已经在第三次握手中确认了服务器的初始序列号。多余的握手会增加网络负担和延迟,并占用双方的缓存空间。
四次挥手
- 客户端发送SYN=1给服务器,之后客户端进入 FIN_WAIT_1 状态。
- 服务器发送ACK给客户端,接着服务端进入 CLOSED_WAIT 状态。客户端收到服务端的 ACK 应答报文后,之后进入 FIN_WAIT_2 状态。
- 服务端处理完数据后,向客户端发送 FIN 报文,之后服务端进入 LAST_ACK 状态。
- 客户端收到服务端的 FIN 报文后,回一个 ACK 应答报文,之后进入 TIME_WAIT 状态。
服务器收到了 ACK 应答报文后,就进入了 CLOSED 状态,至此服务端已经完成连接的关闭。
客户端在经过 2MSL 一段时间后,自动进入 CLOSED 状态,至此客户端也完成连接的关闭。
计算机网络分层模型
- 物理层:物理媒介(双绞线、光纤和无线电波)上传输比特流,并定义了物理设备的接口标准、电气特性和编码方式等。IEEE
- 数据链路层:相邻节点之间传输帧,并提供差错控制和流量控制。PPP、SLIP
- 网络层:将数据报从源主机发送到目的主机,并提供路由选择和拥塞控制。IP、ICMP、ARP
- 传输层:传输报文段,进程之间的通信。TCP和UDP
- 会话层:建立会话、session验证,断点传输。SMTP、DNS
- 表示层:数据转换、加密、压缩。TELNET、SNMP
- 应用层:用户界面的交互。FTP,HTTP、NFS、SSL
上述是OSI七层模型,TCP/IP五层模型:应用层,表示层和会话层合并为应用层;TCP/IP四层模型:物理层和数据链路层合并为网络接口层
TCP通信和UDP通信各自的优缺点
- TCP优点:可靠稳定,TCP通过三次握手建立连接,通过确认、重传、窗口、拥塞机制等保证数据无差别、不丢失、不重复、按序到达。
缺点:效率低,占用系统资源高,易被攻击。面向连接只能是点到点通信。 - UDP优点:效率高且安全。面向报文,可以进行一对多和多对多通信。
进程和线程的区别,加一点协程
- 资源