当前位置: 首页 > news >正文

网络编程面试题

一、什么是IP地址

1.IP地址是主机在网路中的唯一标识,,当主机从一个网络切换到另一个网络时,会更改IP地址,同样的IP地址也是路由器进行路由选择的标识

2.IP地址的分类

IPV4:采用4字节无符号整数存储

IPV6:采用16字节无符号整数存储

3.IP地址的划分

IP=网络号+主机号

网络号:确定计算机从属的网络,在同一个网络下的多个主机IP地址网络号都是一样的

主机号:标识设备在该网络重的主机编号

二、IP地址和MAC地址的区别

1.IP地址的设计是出于拓扑设计出来的,只要在不重复IP地址的情况下,它是可以随意更改的;而MAC地址是根据生产厂商烧录好的,它一般不能改动的

2.它们最明显的区别就是长度不同,IP地址的长度为32位,而MAC地址为48位

3.寻址协议层不同。IP地址应用于OSI模型的网络层,而MAC地址应用在OSI模型的数据链路层

三、什么是端口号

1.为了区分同一主机上的多个进程,使用端口号来进行处理

2.端口号是以一个2字节的无符号整数,取值范围[0,65535]

3.端口号分类:
指定端口号:常用的为

TCP 21:FTP文件传输服务

TCP 110:POP3邮局协议版本

TCP 80:HTTP超文本传输协议

UDP 53:DNS域名解析服务

UDP 69:TFTP文件传输服务

用户可用端口号:1024-49151

临时端口号(自动分配端口号):49152-65535

四、TCP通信过程中的服务器端实现流程

通信模型:

1.创建套接字

2.绑定端口号、IP

3.开启监听

4.接收客户端的连接

5.与客户端进行数据传输

6.关闭套接字

五、TCP通信和UDP通信的区别

TCP:稳定

1.提供面向连接,可靠的数据传输传输服务

2.传输过程中,数据无误、数据无丢失、数据无失序、数据无重复

3.TCP会给每个数据包编上编号,称为序列号

4.数据传输效率低,消耗资源多

5.数据收发不同步

        为了提高效率,TCP会将多个较小,并且发送间隔短的数据包,粘成一个包发送,成为粘包现象

6.TCP适用场景:对传输质量比较高以及传输量大量数据的通信,在需要可靠通信的传输场合

UDP:快速

1.面向无连接的,不保证数据可靠,尽最大努力传输的协议

2.数据传输过程中,可能出现数据丢失、重复、失序现象

3.数据传输效率高、实时性高

4.限制每次传输的大小,多出部分直接删除

5.收发同步,不会出现粘包

6.UDP适用场景:发送小尺寸,在接收数据给出应答比较困难的情况下

六、TCP通信中的3次握手

1.客户端像服务器端发送连接请求

2.服务器端应答客户端的连接请求

3.客户端与服务器建立连接

七、TCP通信中的4次挥手

挥手请求可以是客户端发起,可以是服务器端发起

假设是客户端发起:

1.客户端发起断开请求

2.服务器端应答断开请求

3.服务器端请求关闭连接

4.客户端发送确认应答

八、UDP通信中是否可用connect函数

1.UDP通信可以使用connect函数,他将服务器与某个客户端建立一个唯一的通道

2.优点:传输效率高,稳定性高,数据干扰较小

3.当服务器端用connect与某个客户端连接后,服务器端就不能再接收其他客户端的消息

4.如果要断开,就再使用一个connect函数,但是需要将地址信息结构体中的sin_addr改成AF_UNSPEC

5.在UDP中可以多次使用connect与其他客户端建立连接,但是在TCP中只能进行一次连接

6.当UDP用connect与某一客户端建立连接后,使用read/write、send/recv函数完成通信

http://www.lryc.cn/news/318596.html

相关文章:

  • 移动端区分点击和长按
  • 虚拟环境的激活
  • 宏集案例 | 风电滑动轴承齿轮箱内多点温度采集与处理
  • linux 16进制写入
  • 代码随想录算法训练营第60天| Leetcode 84.柱状图中最大的矩形
  • 编写一个简单的cmakelist.txt
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测软件(Python+PySide6界面+训练代码)
  • 数据库的学习
  • matlab去除图片上的噪声
  • C++超详细知识点(五):类的友元函数和友元类
  • SOC设计:关于reset的细节
  • 支小蜜AI校园防欺凌系统可以使用在宿舍吗?
  • 外卖平台订餐流程架构的实践
  • [AIGC] Spring Boot中的切面编程和实例演示
  • 各个类型和Json类型的相互转换
  • C语言:操作符详解(下)
  • 电商场景下 ES 搜索引擎的稳定性治理实践
  • jdk8与jdk17的区别。springboot2.x与springboot3.x的区别
  • Pytest测试中的临时目录与文件管理!
  • arduino 编程esp8266
  • 基于springboot实现数据资产管理系统项目【项目源码+论文说明】计算机毕业设计
  • 在Java中如何将十进制转换为二进制,八进制,十六进制以及它们之间的互相转换
  • AK/SK加密认证
  • 前端实现websocket通信讲解(vue2框架)
  • 解决ffmpeg播放摄像头延时的问题(项目案例使用有效)
  • Android 音频系统
  • Java必须掌握的二叉堆知识点(含面试大厂题含源码)
  • [Java、Android面试]_03_java内存管理:虚拟内存、堆、垃圾回收
  • PTA题解 --- 求整数段和(C语言)
  • virsh管理虚拟机的命令行工具