网络
1. TCP和UDP的区别
1. TCP:面向连接、字节流、一对一
UDP:无连接、面向报文、一对一、一对多、多对多
2. TCP:可靠、稳定、效率低,占用系统资源高,易被攻击
UDP:不可靠、不稳定、效率高,比TCP安全,UDP是一个无状态的传输协议
2. TCP的三次握手
1. 第一次握手(我要和你建立连接)
客户端:发送SYN包(seq=x)到服务器,进入SYN_SEND状态,等待服务器确认
2. 第二次握手(你真的要和我建立连接么)
服务端:收到客户端发送的SYN包后,发送一个确认包ACK(ack=x+1),同时自己也发送个SYN(seq=y)包,即SYN+ACK包,此时服务器进入SYN_RECV状态
3. 第三次握手(我真的要和你建立连接)
客户端:收到服务器的SYN+ACK包后,向服务器发送确认包ACK(ack=y+1),发送完毕后,服务器和客户端同时进入ESTABLISHED状态
3. TCP的四次挥手
1. 第一次挥手(我要和你断开连接)
客户端:发送一个FIN包(seq=x),没有收到ACK确认包之前,客户端可以发送和接收数据
2. 第二次挥手(好的,断吧)
服务端:收到客户端的FIN包后,发送ACK(ack=x+1)包
3. 第三次挥手(我也要和你断开连接)
服务端:发送一个FIN包(seq=y),关闭服务端到客户端的数据传送
4. 第四次挥手(好的,断吧)
客户端:收到服务的FIN包,发送一个ACK(ack=y+1)
4. TCP为什么需要三次握手
1.两次握手只能保证单向连接是畅通的,不能确保服务端能给客户端正常发送消息
2.只有经过三次握手,才能确保双向都可以接收到对方的发送的数据
5.TCP为什么需要四次挥手
TCP是全双工模式,关闭连接时,当主机B收到主机收到主机A的FIN报文时,仅代表主机A不再发送数据了,但还能接收数据。此时,主机B也未必全部把数据发送给A,可以立即发送FIN,也可以发送完数据后,再发送FIN报文,所以FIN和ACk要分开发送。
6. 端口号被占用了怎么办
1. Windows
netstat -ano|findstr 8080 # 查看pid
taskkill /f /pid pid
2. Linux
netstat -anp|grep 8080 # 查看端口是否被占用
fuser -v -n tcp 8080
kill -s 进程号
ps # 查看所有进程
5.线程和进程的区别
1.进程是系统进行资源分配和调度的一个独立单位;线程是CPU调度和分配的基本单位,是比进程更小的能独立运行的基本单位
2.进程有独立的地址空间,线程没有
3.线程间通信方便,共享数据;进程间只能通过进程的通信方式:管道、信号量、消息队列、共享内存、套接字
4.进程上下文切换开销大、线程开销小
5.一个进程挂掉了不会影响其他进程;线程挂掉了会影响其他线程
6.测试流程
1.测试内容:
1)功能测试
2)兼容性测试
3)接口测试,圈钱处理
4)性能测试
5)系统测试
2. 测试工具
1)PostMan 结构测试
2)jmeter 压力测试
7. TCP的报文头
TCP报文:20字节的固定首部+可变长度
1. 源端口:2字节 目标端口:2字节
2. 序列号:4字节
3. 确认号:4字节
4. 数据偏移:4位 ACK、SYN、FIN
5. 检验和、紧急指针
8.常见端口
http: 80,https: 443, telnet: 23,ftp: 21, SMTP: 25,mysql: 3306, orcale: 1521, sqlserver: 1433
9. OSI七层模型,http协议对应第几层,ip协议对应第几层
1.物理层
2.数据链路层
3.网络层: ip、ICMP、RARP
4.传输层:TCP、UDP
5.会话层
6.表示层
7.应用层 http
10. 常见状态码
1.1xx: 请求处理中,请求已被接受,正在处理
2.2xx: 请求成功,200
3.3xx: 重定向 301:永久转移,302:暂时转移,304:已缓存
4.4xx: 客户端错误: 404:客户端访问的页面不存在,403:拒绝请求
5.5xx: 500:f服务器内部错误,503:服务不可用
11:Session和cookie
1.session是通过在客户端记录信息,确认身份;Session在服务端记录信息确认身份
12:http1.0与http1.1的区别,keep-alive模式
13: http与https的区别
1. 端口不同,http是80端口,https是443端口
2. 资源消耗,https通信由于加密处理消耗更多的cpu和内存
3. 开销:https通信需要证书
4.Http运行在TCP之上,明文传输;https运行在SSL/TLS之上的HTTP协议,添加了加密和认证机制
14:https的加密过程
1.浏览器使用Https的URL访问服务器,建立SSL连接。
2.服务器收到SSL连接后,发送非对称加密的公钥A给浏览器
3.浏览器生成随机数,最为对称加密的秘钥B
4.浏览器使用服务器返回的公钥A,对自己生成的对称加密秘钥B进行加密,得到秘钥C
5.浏览器将秘钥C发送给服务器
6.服务器使用自己的非对称加密私钥D对接收的秘钥C解密,得到对称加密秘钥B
7.浏览器和服务器之间使用秘钥B作为对称加密秘钥通信
非对称加密不安全,因为客户端不知道公钥是否属于服务器。
15: get和post的区别
1.GET从服务器获取资源,POST是向服务器发送数据
2.GET回退是无害的,POST会再次提交请求
3.GET只能进行URL编码,POST支持多种编码方式
4.GET参数通过URL传递,长度有限制;post放在请求体中,长度无限制。
5.GET产生一个TCP数据包,将header和data一起发送;POST产生两个TCP数据包,先发送header,响应100,再继续发送data,返回200