Java面试-计算机网络常见问题

一、4/7层模型

1.1 OSI模型

在这里插入图片描述
工作原理是:
在数据的实际传输中,发送方将数据送到自己的应用层,加上该层的控制信息后传给表示层;表示层如法炮制,再将数据加上自己的标识传给会话层;以此类推,每一层都在收到的数据上加上本层的控制信息并传给下一层;最后到达物理层时,数据通过实际的物理媒体传到接收方。接收端则执行与发送端相反的操作,由下往上,将逐层标识去掉,重新还原成最初的数据。由此可见,数据通讯双方在对等层必须采用相同的协议,定义同一种数据标识格式,这样才可能保证数据的正确传输。
https://blog.csdn.net/weixin_39569611/article/details/81879266

1.2 TCP/IP模型

OSI参考模型虽然是ISO给出的,但是ISO在推进OSI协议标准化的进程上是比较缓慢的。而TCP/IP协议的标准化进程是相当快速的,因此现阶段的实际标准是TCP/IP协议。尽管TCP/IP协议与OSI有所差异,但是仍旧与OSI参考模型有一些对应关系。
在这里插入图片描述
https://blog.csdn.net/zy010101/article/details/86492773

二、TCP协议

2.1 三次握手与四次挥手

https://blog.csdn.net/qq_38950316/article/details/81087809

2.2 流量控制和拥塞控制

https://blog.csdn.net/dangzhangjing97/article/details/81008836
如果只发送/接收一个数据包,肯定不会乱序,但是吞吐量过低
改进:一次发送多个数据包再一起确认,但是发多少呢?按照顺序ack,丢包:超时重传
在这里插入图片描述

2.3 KeepAlive

https://blog.csdn.net/weixin_33690367/article/details/88203929

三、UDP协议

3.1 特点

(1)UDP是无连接的传输层协议;
(2)UDP使用尽最大努力交付,不保证可靠交付;
(3)UDP是面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界;
(4)UDP没有拥塞控制,因此即使网络出现拥塞也不会降低发送速率;
(5)UDP支持一对一 一对多 多对多的交互通信;
(6)UDP的首部开销小,只有8字节.

3.2 与TCP的区别

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP对系统资源要求较多,UDP对系统资源要求较少。

四、HTTP协议

常见面试题

4.1 协议

https://blog.csdn.net/chenzujie/article/details/8529674

4.2 UrlEncode

https://blog.csdn.net/xiaozhu0301/article/details/49208017

4.3 状态码

https://blog.csdn.net/t_332741160/article/details/81408597

4.4 请求类型

https://blog.csdn.net/u012813201/article/details/70210812

4.5 HTTPS

https://blog.csdn.net/iitvip/article/details/8522294

4.6 HTTP2

HTTP、HTTPS、HTTP2总结

4.7 QUIC

https://blog.csdn.net/Tencent_TEG/article/details/79158266

五、面试常见问题

5.1 TCP如何保证可靠传输

  • 将数据分割成适合发送的数据块
  • 对数据包进行编号
  • 校验和
  • 丢弃重复数据
  • 流量控制(滑动窗口)
  • 拥塞控制
  • 停等协议

5.2 为什么UDP有时比TCP更有优势?

UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。

(1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。

(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。

采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章