网络编程面试系列-01

本文详细介绍了网络编程面试中的常见问题,涵盖应用层协议(如DNS、FTP、HTTP等)、TCP与UDP的区别、Socket前后端通信在服务器集群中的实现、HTTP协议的不同版本对比、同步与异步、阻塞与非阻塞的概念,以及网络协议的分层等核心知识点。通过本文,读者可以全面了解网络编程的基础概念和面试重点。
摘要由CSDN通过智能技术生成

1. 应用层中常见的协议都有哪些?

应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。

应用层协议

1)DNS:一种用以将域名转换为IP地址的Internet服务,域名系统DNS是因特网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。

现在顶级域名TLD分为三大类:国家顶级域名nTLD;通用顶级域名gTLD;基础结构域名。

域名服务器分为四种类型:根域名服务器;顶级域名服务器;本地域名服务器;权限域名服务器。

2)FTP:文件传输协议FTP是因特网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。

基于客户服务器模式,FTP协议包括两个组成部分,一是FTP服务器,二是FTP客户端,提供交互式的访问面向连接,使用TCP/IP可靠的运输服务,主要功能:减少/消除不同操作系统下文件的不兼容性 。

3)telnet远程终端协议:telnet是一个简单的远程终端协议,它也是因特网的正式标准。又称为终端仿真协议。

4)HTTP:超文本传送协议,是面向事务的应用层协议,它是万维网上能够可靠地交换文件的重要基础。http使用面向连接的TCP作为运输层协议,保证了数据的可靠传输。

5)电子邮件协议SMTP:即简单邮件传送协议。SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。SMTP通信的三个阶段:建立连接、邮件传送、连接释放。

6)POP3:邮件读取协议,POP3(Post Office Protocol 3)协议通常被用来接收电子邮件。

7)远程登录协议(Telnet):用于实现远程登录功能。

8)SNMP:简单网络管理协议。由三部分组成:SNMP本身、管理信息结构SMI和管理信息MIB。SNMP定义了管理站和代理之间所交换的分组格式。SMI定义了命名对象类型的通用规则,以及把对象和对象的值进行编码。MIB在被管理的实体中创建了命名对象,并规定类型。

2. TCP 和 UDP 协议有什么区别?

1)基于连接

TCP是面向连接的协议,而UDP是无连接的协议。即TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。

2)可靠性和有序性

TCP 提供交付保证(Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输),无差错,不丢失,不重复,且按序到达,也保证了消息的有序性。该消息将以从服务器端发出的同样的顺序发送到客户端,尽管这些消息到网络的另一端时可能是无序的。TCP协议将会为你排好序。

UDP不提供任何有序性或序列性的保证。UDP尽最大努力交付,数据包将以任何可能的顺序到达。

TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

3)实时性

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

4)协议首部大小

TCP首部开销20字节;UDP的首部开销小,只有8个字节。

5)运行速度

TCP速度比较慢,而UDP速度比较快,因为TCP必须创建连接,以保证消息的可靠交付和有序性,毕竟TCP协议比UDP复杂。

6)拥塞机制

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低,对实时应用很有用,如IP电话,实时视频会议等。

7)流模式(TCP)与数据报模式(UDP) TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的 。

8)资源占用

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

TCP被认为是重量级的协议,而与之相比,UDP协议则是一个轻量级的协议。因为UDP传输的信息中不承担任何间接创造连接,保证交货或秩序的的信息。这也反映在用于承载元数据的头的大小。

9)应用

每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信 。基于UDP不需要建立连接,所以且适合多播的环境,UDP是大量使用在游戏和娱乐场所。

3. Socket 前后端通信是如何实现服务器集群?

假设有两台A服务器服务S1和B服务器服务S2,应用服务S0

首先你接收客户端(浏览器)请求的服务肯定是单点(一对一)

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
网络编程是多台计算机之间进行数据交换的过程。在网络编程中,通常使用请求/响应方式进行数据传递,其中一个设备发送请求数据给另一个设备,并接收反馈数据。客户端是发起连接的程序,而服务器是等待连接的程序。网络协议是指应用程序利用网络协议进行通信的机制。套接字是网络中不同主机上应用进程之间进行双向通信的端点的抽象。它提供了应用层进程利用网络协议交换数据的机制。同步和异步是函数调用的两种方式,阻塞和非阻塞是函数调用的两种状态。在Java中,可以通过使用非阻塞方式的Socket编程实现无阻塞的网络通信。 #### 引用[.reference_title] - *1* [网络协议面试题(Java网络编程)](https://blog.csdn.net/xiaobaijun_ge/article/details/126035699)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Java面试系列——JavaSE面试题(网络编程)](https://blog.csdn.net/weixin_55229531/article/details/125196987)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [java网络编程面试题](https://blog.csdn.net/a10534126/article/details/123755917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦睡了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值