Linux知识
1、查看Linux服务器系统版本
cat /etc/centos - release # 通过查看文件
[root@nginx-kafka01 etc]# cat centos-release CentOS Linux release 7.6.1810 (Core)
2、查看Linux服务器系统内核版本
uname -r
[root@nginx-kafka01 etc]# uname -r 3.10.0-957.el7.x86_64
3、查看Linux内核版本及架构
uname -a
[root@nginx-kafka01 etc]# uname -a Linux nginx-kafka01 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
4、查看Linux内核版本可以得到类似的更详细信息:
cat /proc/version
[root@nginx-kafka01 etc]# cat /proc/version Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
5、查看Linux内核里的限制参数
ulimit -a
6、查看Linux内核里存储的最大进程
ulimit -n
7、查看系统内核参数
systemctl -a
系统内核参数文件:/etc/sysctl.conf 修改内核参数文件(调优)
systemctl -p刷新生效,修改完配置文件之后。
8、cession和cookie的区别
session和cookie是做会话保持的,
cookie是将数据存放在客户的浏览器上,session是将数据存放在服务器上的。
python知识点
1、list和tuple的区别
list是可变的数据类型,tuple是不可变数据类型。
2、快速排序和冒泡排序(快速排序好好学)
快速排序方法的基本思想是:
- 1.先从数列中取出一个数作为基准数。
- 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
- 3.再对左右区间重复第二步,直到各区间只有一个数。
3、set集合
把集合看做是一个只有key的字典,作用就是去重,集合的元素必须是可hash对象。
set和dict 唯一的区别仅仅在于有没有存储对应的value值。
4、装饰器
装饰器的本质就是闭包函数,只能装饰callable对象。想要添加功能,写在内函数之中,被装饰过 的函数不是原来的函数。
作用就是在不改变函数或者类的源代码基础上,添加额外的功能。
统计运行时间的装饰器、记录日志的装饰器。@ 函数名
网络安全知识
5、Tcp和udp的区别?
tcp 传输控制协议 :transmission control protocol:可靠的,稳定,速度慢,效率低
tcp协议是一种面向连接的、可靠的、基于字节流的传输层的通信协议。传输效率低。
UDP:用户数据报协议。是一种不可靠的、无连接的服务,传输效率高的协议。
qq、dhcp、dns使用的就是udp协议。
6、为什么tcp比udp更可靠?
TCP在建立连接的时候三次握手同步双方的序列号,确认号,窗口大小信息,是确认和重传的基础,传输的过程中,如果CheckSum的核验失败,丢包或者延时,发送端都会重传。
7、Tcp怎么保证可靠?
1、校验和
2、序列号
3、确认应答序列号
4、超时重传
5、连接管理:三次握手、四次挥手
6、流量控制
7、拥塞控制:滑动窗口
可靠体现在:有很多计时器:重传计时器、校验、需要确认。
8、Tcp在传输过程中,出现丢包,client端如何得知数据不完整?又是如何告诉server端出现问题的具体位置?
TCP在不可靠的网络上实现可靠的传输,必然会有丢包。TCP是一个“流”协议,一个详细的包将会被TCP拆分为好几个包上传,也是将会把小的封裝成大的上传,这就是说TCP粘包和拆包难题。
TCP协议本身确保传输的数据不会丢失完整性。如果在传输过程中发现数据丢失或数据包丢失,最大的可能性是在发送或接收程序的过程中出现问题。例如,服务器向客户端发送大量数据,并且发送频率非常高,因此发送链接中很可能会出现错误(1、程序处理逻辑错误;2、多线程同步问题;3、缓冲区溢出等)如果发送失败得不到处理,那么客户端收到得数据将少于理论数据,这将导致数据丢失与数据包丢失。这种现象,其实本质上来说不是丢包,也不是丢数据,只是因为程序处理有错误,导致有些数据没有成功地被socket发送出去。
常见的解决方案包括拆包、添加包头和发送组合包。如果服务器或客户端断开连接,一般会使用心跳测试。
心跳测试:每隔一段时间向服务器发送数据包。为了节省资源,通常会发送空数据包。如果发送失败表明套接字已断开,此时需要根据特定条件释放资源并重新连接。
9、具体是如何校验?用的什么方法?(对第8题的深入提问)
TCP校验和是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到,接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。
10、讲一下tcp的窗口?
活动窗口就是tcp中的一个缓存窗口,是基于ARQ协议开发的。tcp头部字段中有个16位窗口大小,用来处理滑动窗口。窗口就相当于缓存。
会有个地方专门的去记录在哪丢失,到时候直接发送发送丢失的那个包。
滑动窗口就是等待确认的,可以连续发送ack,连续发送是可靠了,速率也提升了。滑动窗口是成对存在的,有一个发送方的窗口和接收方的窗口。
11、讲一下三次握手的完整过程,包括对数据的检验,还有窗口的变化?
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
12、对活动窗口的理解?
活动窗口就是tcp中的一个缓存窗口,是基于ARQ协议开发的。tcp头部字段中有个16位窗口大小,用来处理滑动窗口。窗口就相当于缓存。会有个地方专门的去记录在哪丢失,到时候直接发送发送丢失的那个包。
滑动窗口就是等待确认的,可以连续发送ack,连续发送是可靠了,速率也提升了。滑动窗口是成对存在的,有一个发送方的窗口和接收方的窗口。
17、信号和信号量有什么区别?
信号:(signal)是一种处理异步事件的方式。信号时比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程外,还可以发送信号给进程本身。
信号量:(Semaphore)进程间通信处理同步互斥的机制。是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。
11、查看路由表的命令
ip route
12、怎么查看资源利用率
windows中查看内存和带宽:任务管理器 +资源管理器+性能。
Linux中如何查看网络带宽:
cpu:内存、磁盘、网络带宽
top、ps -aux、free -m、dstat、glances、nethogs、ss、nc、namp
15、在哪一层可以看到TCP的包头
传输层
16、TCP包头有什么
TCP包头里面有的是:源端口16bit、目的端口16bit、序号:32bit、确认号:32bit、数据偏移:4bit、保留字段:6bit、紧急字段URG:1bit、确认字段:1bit、推送字段PSH:1bit、复位字段:1bit、同步字段SYN:1bit
终止字段FIN:1bit、窗口字段:16bit、校验和字段:16bit、紧急指针字段:16bit。
17、ip包头里面有什么
版本、TTL、协议号、源地址、目的地址、可选项、首部长度、优先级与服务类型、总长度、首部校验码、标识符、标志、段偏移量
18、OSI七层模型
是一个开放式的。 死记硬背
OSI:开发系统互联参考模型:7层 --没有实现的,只是参考
分层:功能
应(应用层)表(表示层)会(会话层)传往(网络层)树(数)屋(物):自上而下 设备与层的对应关系
数据格式 协议 设备
7应用层:网络服务与最终用户的一个接口 http、https、 ftp dns、tftp、smtp、snmp 计算机(7层都有)
6表示层:数据的表示、安全、压缩
5会话层:建立、管理、终止会话
4传输层--》段 --》 数据段:segment tcp udp 防火墙(7层都有)查看端口号
3网络层--》往 -->抓包: ip包,数据包:packet ip icmp、igmp、arp、rarp、ospf 路由器
2数据链路层 --》 --》 数据帧。帧:frame 交换机
1物理层-->屋 ——》 传输比特流 网卡、网线、光纤
19、在用户点击URL为http://www.sxtyu.com/index.html的链接后,浏览器和Web服务器执行以下动作:简单流程或者访问www.baidu.com 背后发生了什么?从封装来讲
① 浏览器先分析超链接中的URl
② 浏览器向DNS请求解析http://www.sxtyu.com/index.html中的ip地址。
③ DNS将解析出的IP地址202.2.16.21返回浏览器
④ 浏览器与服务器建立TCP连接(80端口):三次握手
⑤ 浏览器请求文档:GET/index.html
⑥ 服务器给出响应,将文档index.html发送给浏览器
拿到文档之后进行解封装:
⑦ 释放TCP连接(四次断开)
⑧ 浏览器显示index.html中的内容。(渲染,等待服务器timeout)
老版是⑦⑧,新版是⑧⑦。
20、如果访问不了www.baidu.com,可能是什么原因?/为什么ping别人的机器ping不通?
解决思路:
首先,物理层面 :检查一下网线,路由器(光猫)是不是使用正常(ping 网关)。
ping一下自己的网关,如果不能ping通。
那就是自己的问题,需要去检查一下自己的配置文件的etc/sysconfig/network-scripts/ens33文件。
如果能ping通网关,但是还是访问不了。那就很可能:
①是DNS域名解析的问题。
②中间运营商问题。
③ 百度服务器本身的问题。如果是百度服务器本身的问题,就不能干预。
思路:1、分段排查 2、替换法
就比如举例:比如一个客户去访问百度为什么会访问不了,访问百度的时候非常卡、慢、访问不了。
思路:1、分段排查 2、替换法
内部的连通为:client -无线路由器---电信的网络----机房----server
从client到server的非常卡、慢、访问不了 。
先排查客户到无线路由器这段有没有问题:
首先,先让用户看看ip地址是否正确,如果正确,让客户去访问其他网站(jd.taobao)试试看。
如果访问不了的情况就是:可能就是用户自己的网络有问题,网线、路由器等的问题。
如果访问其他网站可以访问,那就是百度服务器本身的问题,那我们就不能干预。
可能是服务器网络崩了等情况,此时的服务器需要去查看自己的cpu、内存、带宽使用、磁盘IO等。使用top、ps -aux 、dstat、glances、nethogs等命令去查看。
21、 比如可以打开qq,但是打不开网页的情况。
那就是dns域名解析的问题。
dns解析的流程:访问浏览器端,首先的dns域名解析,先去浏览器上的缓存上面查找,如果没找到再去本机中本地的hosts文件中,windows中的在一个host文件中,Linux的在/etc/hosts文件中。