仅供大家参考,全部摘抄至别人的博客,可以点击自行访问
tcp :
三次握手四次挥手: https://blog.csdn.net/qq_38950316/article/details/81087809(详解三次握手,四次挥手) https://www.cnblogs.com/qingergege/p/6603488.html (握手挥手中11中状态流传详解)
tcp是如何保障安全性的:https://blog.csdn.net/weixin_34285318/article/details/90183312
1. 将数据分割为合适大小进行发送,引申合适大小是多大,:答:一般由网络决定,最大是1500字节(并非严格数字)由以太网的物理特性决定的,最小是20(算上tcp的协议头)
2. 确认和超时重传机制, 就是会对数据进行编号,如果有数据包收到就会回复确认信息, 发送方一段时间收不到确认信息就重传
3 接收方对数据进行完整性校验, 重复性校验, 校验和等方式进行校验
4 排序,如果有序号的数据包没到,1发送请求重传, 如果连着多次(3 ?)都发了请求,就会重传,,,, 或者超时了,就会超时重传
5 流量控制和拥塞控制
1. 流量控制: 主要是用来解决发送段发送速度大于接受速度的问题, 通过每次告诉发送方当前接收方的窗口大小(即你能发送的最大值)来限制发送方的发送速度: 发送每次都会收到接收方的请求. 如果同一个请求超过三次,那么发送方会立刻重发这个数据
https://baike.baidu.com/item/%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3/8351795?fr=aladdin
2. 拥塞控制
主要是 慢开始\拥塞避免\快重传\快恢复
区别联系下面的博客特别清楚
https://blog.csdn.net/dangzhangjing97/article/details/81008836
访问一个url的全过程
1. 首先对域名进行dns解析(浏览器缓存, 本机host配置, dns服务器, 树形结构,先向根节点请求直到找到对应的叶子节点)获取ip:port
2.根据arp协议去解析物理地址,相当于知道gps定位去搜属于中国哪里一样,
3.发起http请求, 填充响应头等.(需要详细展开)
3.2可能有nginx 进行负载均衡,然后转发到后端实例服务器
4.建立tap链接,三次握手四次挥手
5.收到服务器发来的数据是一个html,浏览器进行渲染
https://blog.csdn.net/g291976422/article/details/88984859
状态码
https://blog.csdn.net/piaoxuan1987/article/details/51603671(所有状态码, 并没有详解)
301 与 302区别,:301永久重定向,302临时重定向
请求转发和重定向区别: 请求转发是服务器端行为, 他给你打了新的请求,但是你在浏览器上看到的还是原来的请求地址,
重定向是给你返回一个302,告诉你,你去请求新的地址吧, 然后你去访问新的地址, 获取资源, 这时候url已经变了,变成新的了.
操作系统
用户态\内核态:定义和什么时候切换.而且还有切换的时候做了什么操作
https://blog.csdn.net/qq_39823627/article/details/78736650
用户态: 就是用户的自己的程序执行的状态,只有有限的内存\操作权限, 当需要操作硬件或者有文件需要读写的时候,需要调用系统函数转到内核态,
内核态: 操作系统执行控制系统资源的内核代码,权限最高.
可以通过三种方式进行用户态到内核态的转换(本质上都是中断):1.系统函数的调用. 2. 出现异常, 系统内核代码会对一场进行处理,3.硬件中断(键盘输入等)
select\poll\epoll
https://blog.csdn.net/russell_tao/article/details/7160071
就是I/O多路复用, select通过维持一个类似数组一样的东西用来记录fd的标志位, 当每次有fd的增加或者删除的时候都会把整个这个标志位数组拷贝到内核态去, 开销比较大,这个数组的长度一般最大为1024.
poll 和select类似的,区别在于其底层类似是通过一个链表的结构所以其相对于select来说相当于没有了最大长度的限制,但是其查询还是需要遍历查询那个fd已经处于就绪状态,时间复杂度还是O(n)
epoll https://www.jianshu.com/p/fe54ca4affe8
是通过在内核态维持一个红黑树和一个已就绪状态的链表, 当需要插入fd时,直接在红黑树中查询,如果已经存在就不处理,如果不存在就生成一个并插入到红黑树中, 当有fd完成时就会调用回调函数,使其进入已就绪的链表中, 每次从内核态到用户态需要拷贝的东西就少了很多.并且时间复杂度为O(1)的
锁和信号量, 线程同步用什么, 进程通信用什么? :
有自旋锁, 互斥锁,读写锁, https://blog.csdn.net/u012719256/article/details/52670098(信号量,自旋锁,互斥锁的概念)
进程间通方式http://www.xitongzhijia.net/xtjc/20171024/109869.html(只有概述没有细讲)
https://blog.csdn.net/bao_qibiao/article/details/4516196
,线程和进程的区别:
https://baijiahao.baidu.com/s?id=1611925141861592999&wfr=spider&for=pc
数据库
mysql https://blog.csdn.net/qq_22222499/article/details/79060495
redis
持久化的两种方式:aof,rbd.. 前面是效率低安全性高, 后面效率较高
很详细的介绍: https://www.cnblogs.com/Y1Focus/p/6707121.html