Java面试题计算机网络知识点总结
Posted 一宿君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试题计算机网络知识点总结相关的知识,希望对你有一定的参考价值。
计算机网络知识点总结
1、计算机网络体系结构图
按照由下往上的顺序,逐一解释。
首先我们先了解下每一层的作用和对应的网络协议。
对应层 | 作用 | 对应的网络协议/硬件 |
---|---|---|
应用层 | 提供用户服务,具体功能由应用程序实现 | SMTP、HTTP、DNS、… |
表示层 | 用户对数据的压缩、加密 | JPEG、MPEG、ASII、… |
会话层 | 用于建立用户级的连接,选择适当的传输服务 | SQL、RPC、… |
传输层 | 用户端到端的可靠数据传输 | TCP、UDP、… |
网络层 | 进行路由选择,网络互连 | ARP、IP、ICMP、IGMP、… |
数据链路层 | 进行数据交换,将要传输的数据转换为二进制形式 | 网卡、网桥、交换机 |
物理层 | 提供数据传输的硬件保证,网卡接口,传输介质 | 中继器、集线器、网关 |
1.1、传输层 TCP 和 UDP 的区别和作用?
- TCP是
面向连
接的,可靠的数据流传输
;而UDP提供的是无连接
的、不可靠
的数据流传输。 - TCP保证数据的正确性,UDP可能丢包;TCP保证数据的顺序,而UDP不保证。
- TCP传输数据单位是TCP报文段;UDP传输数据单位是用户数据报文。
- TCP注重数据安全性,传输效率较慢;UDP不保证数据安全性,因为不需要连接等待,少了许多操作,所以效率较快。
协议类型 | 是否面向连接 | 传输可靠性 | 传输形式 | 传输效率 | 所需资源 | 应用场景 | 首部字节 |
---|---|---|---|---|---|---|---|
TCP | 面向连接 | 可靠 | 字节流 | 慢 | 多 | 要求通信数据可靠(如文件传输、邮件传输) | 20-60 |
UDP | 无连接 | 不可靠 | 用户数据报文段 | 快 | 少 | 要求通信速度高,实时性(如域名转化、QQ语音、视频) | 8(由4个字段组成) |
1.2、面向连接 和 面向无连接 的区别?
- 面向连接的服务:通信双方在进行通信之前,要预先在双方建立一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况是一直可以被实时监控和管理的。
- 面向无连接的服务:通信双方不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送消息,让信息自主的在网络上去传,一般在传输过程中不监控。
1.3、基于TCP和UDP的有哪些协议?
基于TCP协议:
- HTTP:Web服务器传输超文本到本地浏览器的传送协议。
- SMTP:简单邮件传输协议,用户发送邮件,服务端开放的是25端口号。
- FTP:文件纯属协议,使用21端口。
基于UDP协议:
- DNS:域名解析服务,将域名地址转换为IP地址,DNS用的是53号端口。
1.4、TCP和UDP协议的使用场景
- TCP:当时网络通讯质量有要求的时候,比如:整个数据哟啊准确无误的传输给对方,常使用基于TCP协议的HTTP、HTTPS、FTP等文件传输协议。
- UDP:当强调传输性能,而不要求传输的完整性和可靠性时,常使用UDP协议传输,如:QQ语言、QQ视频等。
1.5、TCP 协议如何保证可靠传输?
- 应用数据分割:将应用数据分割成TCP认为最适合发送的数据块。
- 对数据包编号:TCP对发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
- 校验和:TCP将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。如果收到数据段的校验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。
- 流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区中能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用的流量控制协议是可变大小的滑动窗口协议(TCP利用滑动窗口实现流量)。
- 拥塞控制:当网络拥挤时,减少数据的发送。
- ARQ协议:也是为了实现可靠传输的,它的基本原理就是每发送完一个分组就停止发送,等待对方确认。在收到确认后在发送下一个分组。
- 超时重传:当TCP发送一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重新发送这个报文段。
1.6、TCP 三次握⼿和四次挥⼿
为了准确⽆误地把数据送达⽬标处,TCP协议采⽤了三次握⼿策略。
我们使用动漫图解的方式解释三次握手:
简单示意图:
简单概括上述图解的流程:
- 客户端发送带有SYN标志的数据包,服务接收数据包,一次握手;
- 服务端发送带有SYN/ACK标志的数据包,客户端接收数据包,二次握手;
- 客户端发送带有ACK标志的数据包,服务端接收数据包,三次握手。
1.7、为什么要三次握手
三次握手的目的就是建立可靠的通信信道,说到通信,简单来说就是数据的发送与接收,而三次握手就是为了保证双方都确认自己与对方的发送与接收是正常的。
- 第一次握手:Client什么都不能确认;Server确认了对方发送正常,自己也接收正常。
- 第二次握手:Client确认了:自己发送正常、对方接收和发送正常、自己接收正常;Server确认了:对方发送正常、自己接收正常。
- 第三次握手:Client确认了:自己发送正常、对方接收和发送正常、自己接收正常;Server确认了:自己发送正常、对方接收和发送正常、自己接收正常。
所以三次握⼿就能确认双发收发功能都正常,缺⼀不可。
1.7.1、为什么Server要传回 SYN数据包?
接收端传回发送端发送的SYN是为了告诉发送端,我接收到的消息确实就是你发送的信号。
SYN数据包:
SYN是TCP/IP建立连接时使用的握手信号。在Client和Server之间建立正常的TCP网络连接时,客户机首先发送一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK(ACK就是Server发送给Client的一种传输控制字符,用于确认接收的数据准确无误)消息响应。这样在Client和Server之间才能建立起可靠的TCP连接,数据才可以在Client和Server之间安全传递。
1.7.2、Server传回 SYN数据包后,为啥还要传 ACK?
双方通信无误必须是两者互相发送信息都无误。发送方传送了SYN数据包信号,证明Client端到Server端的通道没有问题,但是接收方到发送方的通道还需要ACK信号来验证。
简单来说,就是发送方和接收方都有自己的一个确认信号。
1.8、断开一个TCP连接需要四次挥手
断开一个TCP连接则需要四次挥手:
- 客户端发送一个FIN。用来关闭客户端到服务器的数据传送;
- 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号;
- 服务器关闭与客户端的连接,发送一个FIN给客户端;
- 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。
1.8.1、为什么要四次挥⼿
任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据在发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。
举个通俗的例子:
A和B打电话,通话即将结束后,A说“我没啥要说的了”,B回答说“我知道了”,但是B可能还有要说,A不能要求B直接跟着自己的节奏直接结束通话,而是要等B说完他想说的话,等B说“好了,我说完了,挂着吧”,A回答“知道了”,这样通话才算结束。
1.9、什么是ARQ协议
自动重传请求(Automatic Repeat-reQuest ,ARQ) 是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送一段时间之内没有收到确认帧,它通常会重新发送,ARQ包括停止等待ARQ协议
和连续ARQ协议
。
以上是关于Java面试题计算机网络知识点总结的主要内容,如果未能解决你的问题,请参考以下文章