📒博客首页:崇尚学技术的科班人
小肖来了🏇
🍣今天给大家带来的文章是《【面试题】计算机网络 -- 常见面试题总结》
🍣
🍣希望各位小伙伴们能够耐心的读完这篇文章🍣
🙏博主也在学习阶段,如若发现问题,请告知,非常感谢🙏
💗同时也非常感谢各位小伙伴们的支持💗
本文参考于JavaGuide
层次名称 | 定义 | 传输单元 | 常见协议 |
---|---|---|---|
物理层 | 物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异, 使其上面的数据链路层不必考虑网络的具体传输介质是什么。 | 比特流 | |
数据链路层 | 数据链路层通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。 | 帧 | ARQ |
网络层 | 在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。 | 数据包 | IP |
运输层 | 运输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。 | 报文段 | TCP\UDP |
应用层 | 应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。 | 报文 | DNS\HTTP\SMTP\FTP |
简单示意图
SYN
标志的数据包–一次握手–服务端SYN/ACK
标志的数据包–二次握手–客户端ACK
标志的数据包–三次握手–服务端详细示意图
TCP连接请求报文(SYN = 1, seq = x)
;TCP连接请求确认报文(SYN = 1,ACK = 1,seq = y,ack = x + 1)
,TCP客户端进程收到相应的报文后进入连接已建立状态
;向TCP服务器进程发送一个TCP普通确认报文段
,然后TCP服务器进程进入连接已建立状态
。三次握手的目的是 建立可靠的通信信道
,说到通讯,简单来说就是数据的发送与接收,而 三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的
。
SYN
同步序列编号进行介绍,SYN
同步序列编号是 TCP/IP
建立连接时使用的握手信号。当我们需要在客户端和服务器端建立TCP
连接的时候,客户端需要向服务器端发送一个带有SYN
标志的数据包。TCP
连接已经完全建立。那么只剩下服务器端的TCP
连接还未完全建立。而回传 SYN
则是为了建立并确认从服务端到客户端的通信。(1)、 TCP客户进程向TCP服务器发送TCP连接释放报文
当TCP客户端进程要主动关闭连接时,TCP客户端进程就会向TCP服务器端发送一个TCP连接释放报文
(FIN = 1 ,ACK= 1,seq = u,ack = v)。此时TCP客户端进入终止等待状态
。
(2)、TCP服务器端进程向TCP客户端进程发送一个普通的TCP确认报文
然后TCP服务器端进程会向TCP客户端进程发送一个普通的TCP确认报文
(ACK = 1,seq = v,ack = u+ 1),且此时的TCP服务器端进入关闭等待状态
,TCP客户端进程进入终止等待状态
。
此时TCP客户端进程到TCP服务器端的进程的连接已经关闭,而TCP服务器端到TCP客户端进程的连接还未关闭
。所以此时TCP服务器端进程还可以给TCP客户端进程进行数据传输。
(3)、TCP服务器端进程向TCP客户端进程发送TCP连接释放报文
当TCP服务器端的进程数据传输完毕后,TCP服务器端进程会向TCP客户端进程发送TCP连接释放报文
(FIN = 1,ACK = 1,seq = w,ack = u + 1),且此时TCP服务器端进程进入最后确认状态
。
(4)、TCP客户端进程向TCP服务器端进程发送普通的TCP连接释放确认报文
TCP客户端进程收到TCP服务器端进程发送而来的TCP连接释放报文后,TCP客户端进程会向TCP服务器端进程发送一个普通的TCP连接释放确认报文
。且此时从TCP服务器端进程到TCP客户端进程的连接关闭。TCP服务器端进程进入关闭状态,而TCP客户端进程进入时间等待状态。经过2MSL后进入关闭状态
。
MSL
的意思是报文的最长寿命。要确保服务器是否已经收到了我们的ACK
报文,过了一个MSL
后如果没有收到的话,服务器会重新发报FIN
文给客端,此时又花了一个MSL
,客户端再次收到FIN
报文之后,就知道之前的ACK
报文丢失了,然后再次发送ACK
报文,一来一去正好2个MSL
。
类型 | 是否面向连接 | 传输可靠性 | 传输形式 | 传输效率 | 所需资源 | 应用场景 | 首部字节 | 真实应用场景 |
---|---|---|---|---|---|---|---|---|
TCP | 面向连接 | 可靠 | 字节流 | 慢 | 多 | 要求通信数据可靠 | 20-60 | 文件传输、发送和接收邮件 |
UDP | 无连接 | 不可靠 | 数据报文段 | 快 | 少 | 要求通信速度高 | 8个字节 | QQ语音、QQ视频、直播 |
流量控制:TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。 接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
拥塞控制:在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。
TCP 的拥塞控制采用了四种算法,即 慢开始 、 拥塞避免 、快重传 和 快恢复
。
慢开始: 慢开始算法的思路是当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么可能会引起网络阻塞,因为现在还不知道网络的符合情况。经验表明,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd 初始值为 1,每经过一个传播轮次,cwnd 加倍。
拥塞避免: 拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢增大,即每经过一个往返时间 RTT 就把发送放的 cwnd 加 1.
快重传与快恢复:在 TCP/IP 中,快速重传和恢复是一种拥塞控制算法,它能快速恢复丢失的数据包。没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。 当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。
期间所涉及到的协议
类别 | 原因短语 | |
---|---|---|
1XX | 信息状态码 | 接受的请求正在处理 |
2XX | 成功状态码 | 请求正常处理完毕 |
3XX | 重定向状态码 | 需要进行附加操作以完成请求 |
4XX | 客户端错误状态码 | 服务器无法处理请求 |
5XX | 服务器错误状态码 | 服务器处理请求出错 |
Connection:keep-alive
Cookie
和 Session
都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。Cookie
数据保存在客户端(浏览器端),Session
数据保存在服务器端。HTTP/1.0
中,默认使用的是短连接,也就是说每次请求都要重新建立一次连接。HTTP 1.1
起,默认使用长连接 ,默认开启 Connection: keep-alive
。HTTP1.1
中新增了 24
个错误状态响应码。HTTP1.0
中主要使用 header
里的 If-Modified-Since
,Expires
来做为缓存判断的标准,HTTP1.1
则引入了更多的缓存控制策略例如 Entity tag
,If-Unmodified-Since
, If-Match
, If-None-Match
等更多可供选择的缓存头来控制缓存策略。HTTP 1.0
中会存在浪费带宽的现象,主要是因为不支持断点续传功能,客户端只是需要某个对象的一部分,服务端却将整个对象都传了过来。在HTTP1.1
中请求头引入了range
头域,它支持只请求资源的某个部分,返回的状态码为206
。URI
是统一资源标志符,可以唯一标识一个资源。URL
是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI
,即 URL
可以用来标识一个资源,而且还指明了如何 locate
这个资源HTTP
的端口号是80
,HTTPS
的端口号是443
。HTTP
协议运行在TCP
协议之上,但其传输的时候都是明文传输,所以十分的不安全。而HTTPS是运行在SSL/TLS
之上的HTTP
协议,而SSL/TLS
协议优势运行在TCP
协议之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP
安全性没有 HTTPS
高,但是 HTTPS
比 HTTP
耗费更多服务器资源。DES
、AES
等;RSA
、DSA
等。版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_56727438/article/details/122660674
内容来源于网络,如有侵权,请联系作者删除!