IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 测试面经总结——计算机网络篇 -> 正文阅读

[网络协议]测试面经总结——计算机网络篇

1.介绍一下OSI七层网络模型

应用层:文件传输、电子邮件、文件服务、虚拟终端(http,sftp,ftp,telnet,dnx)
表示层:数据格式化、代码转换
会话层:解除或建立别的接点的联系、内部通信
传输层:提供端对端的接口TCP/UDP
网络层:为数据包选择路由IP,ICMP,RIP
数据链路层:传输有数据的帧ARP,RARP
物理层:以二进制的形式在物理层传输数据ISO

2.介绍一下TCP/IP五层网络模型

应用层
传输层
网络层
数据链路层
物理层

3.TCP/IP的三次握手四次挥手

三次握手

第一次握手:建立连接,客户端发送syn(syn=x)包到服务器,并进入SYN_SENT状态,等待服务器确认,SYN:同步序列编号synchronize squence number

第二次握手:服务器收到syn包,必须确认客户的SYN(ack+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此时包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手

四次挥手

挥手1:当客户端已经没有要发送的数据时,决定释放连接,就会发送一个终止连接的报文,主动关闭TCP连接,其中终止控制位FIN=1,序号seq=u,u的值为之前客户端发送的后一个序号+1。此时客户端进入FIN-WAIT(终止等待1)状态,等待B的确认

挥手2:服务器端收到该终止连接的报文后,发送给客户端一个确认报文,ACK=1,ack=u+1,seq=v, v的值为服务端之前发送的最后一个序号+1。此时客户端进入FIN-WAIT-2(终止等待2)状态,服务器进入到CLOSE-WAIT(关闭等待)状态,但连接并未完全释放,服务端会通知高层应用层结束客户端到服务端这一方向的连接,此时TCP处于半关闭的状态,服务端还可以向客户端发送数据,但是客户端不能向服务端发送数据

挥手3:当服务器发送完数据后,准备释放连接时就向客户端发送连接终止的报文,FIN=1,同时还要重发ACK=1,ack=u+1,seq=w(在半关闭的状态B时可能还发送了一些数据,所以要重复之前已经发送过的确认号ack+1)此时客户端进入LAST-ACK状态

挥手4:客户端收到连接终止报文后还要再进行一次确认,确认报文中ACK=1,ack=w+1,seq=w,发送完之后进入TIME-WAIT状态,等待时间等待计时器设置的时间2MSL之后进入到CLOSE状态,服务端收到后也进入到CLOSED状态

4.TCP怎么保证可靠传输?

首先就是通过三次握手来建立连接,四次挥手来关闭连接;
其次TCP采用了ARQ协议 即自动重传请求来保证数据的正确性;
再者就是通过滑动窗口协议来保证接收方能够即使的进行数据处理,来进行流量控制;
最后TCP通过慢开始、拥塞避免、快重传、快恢复来进行拥塞控制,避免网络堵塞。

5.TCP流量控制

滑动窗口协议QAR

6.TCP拥塞控制

慢开始算法
拥塞避免算法
快重传算法
快恢复算法

7.TCP长短连接,优缺点

长连接:在一个tcp连接上可以连续发送多个数据包,在tcp连接保持期间,如果没有数据包发送时需要双方发送检测包保持此连接。(数据库的连接一般是长连接的,如果用短连接频繁的通信会造成socket错误,而且频繁的socket创建也会造成资源浪费)

短连接:数据发送完之后,即断开连接(http服务一般都用短连接,因为长连接对于服务器来说会耗费一定的资源)

优缺点:长连接可以省去较多TCP建立和关闭的操作,减少浪费,节约时间,对于频繁请求资源的客户端适合使用长连接。在长连接的应用场景下,client一般不会主动关闭连接,当client与server端的连接一直不关闭时,随着客户端连接越来越多,server会保持过多连接。这时候server端需要采取一些策略,避免一些恶意连接导致server服务受损,避免拖垮整体后端服务。
短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但是客户端的请求频繁时,会在TCP的建立和关闭操作上浪费较多的时间和带宽。

8.TCP三次握手的必要性,为什么不是两次?

如果只有两次,那么客户端无法确认服务端发送过来的SYN,那么就无法识别服务器发送的数据。

9.如果建立连接,但是客户端突然出现故障了怎么办?

TCP有保活计时器,服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常为2h,超时之后,服务器会收到探测报文,重发10个探测报文后客户端仍然没有反应的话,服务端就会关闭连接。

10.TCP和UDP的区别?

TCP:面向连接,可靠传输、通过tcp传输的数据保证无差错、不重复、不丢失,且按序到达,面向字节流 ,tcp的连接是点对点的,tcp的首部开销20字节。
UDP:udp是无连接的,发送数据之前不需要建立连接,udp尽量保证交付,但是不保证可靠性,udp面向报文,udp没有拥塞控制,因此网络出现拥塞时不会使源主机的发送频率降低(对实时的应用很有用)udp支持一对多 多对多的交互通信,udp首部开销8个字节。

11.UDP的主要应用?

视频会议、ip电话、直播、实时游戏等实时性质的软件。

12.浏览器输入地址后的整个流程

DNS解析,将域名解析成IP地址;
TCP建立连接,tcp的三次握手建立连接;
浏览器发送HTTP请求;
服务器处理并响应报文;
浏览器解析并渲染页面;
断开连接,tcp四次挥手结束连接。

浏览器解析并渲染的详细过程?

13.cookie和session的区别?

cookie:保存在客户端,安全不高可以分析本地的cookie进行cookie欺骗,每次cookie的大小不超过4k;
session:保存在服务端,安全性高一些,存储的大小没有限制,当服务器端存储的session过多时会影响服务器性能。

14.HTTP和HTTPS的区别?

HTTP是超文本传输协议,无状态(服务器不知道客户端的状态,对事务无记忆),明文传输,安全性差,端口号是80;
HTTPS是HTTP+SSL,加密传输协议,构建的加密传输、身份认证的网络协议,需要申请CA证书,安全性比HTTP高,端口号是443;

15.HTTP请求方式、HTTP各版本的区别

1.0:get、post、head
1.1:delete、trace、options、put、connect。新增了保持连接keep-alive默认连接不关闭,需要客户端请求服务器关闭。允许在tcp连接中同时请求多个,增加并发性,提高效率。新增了host字段来指定服务器域名。支持了断点重传。
2.0:多路复用,一个连接处理多个请求,处理的量级大。消息头,数据体都是二进制,1.1是ASCII编码

get和post的区别?
get的数据放在url中,安全性不高,get提交的数据是有限制的,url长度有限制,get一般是用于从服务器端拿数据。
post的数据是放在body中的,安全性较高,post一般用于客户端向服务器端发送数据

16.HTTP的报文

请求报文:请求行(请求方法、url、版本等)、请求头(包括各种字段Accept接收的数据类型、referer重定向的url、Accept-Language中英文、User-Agent、Host、connection:keep-alive、cookie)、请求正文(发给服务器的数据)
响应报文:状态行(协议、状态码、响应信息)、响应头(content-encoding、content-length、content-type、content-language)、响应正文

17.cache-control

缓存控制,请求报文和响应报文都会有。
no-cache
no-store
max-age
public
private

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:33:50  更:2022-02-19 01:34:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:30:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码