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

【笔试题面试题】(网络编程类1)知识点汇总,常用概念

目录

1、TCP和UDP相同点和不同点(笔试面试)

2、简述一下有关端口号的内容

3、TCP服务器通信模型

4、UDP服务器通信模型

5、三次握手流程描述

6、四次挥手流程描述

7、TCP服务器与客户端建立连接,断开连接的过程

8、在UDP传输中,如何知道对端掉线


1、TCP和UDP相同点和不同点(笔试面试)

(1)TCP--->稳定

        1、提供面向连接的,可靠的数据传输服务
        2、在传输过程中,数据无误,数据无丢失,数据无失序,数据无重复
                1>TCP会给每一个数据包编上编号,该编号称为序列号
                2>每个序列号都需要应答包应答,如果没有应答,则会将上面的包重复发送直到正确为止
        3、数据传输效率低,耗费资源多
        4、数据的收发是不同步的
                1>为了提高效率,TCP会将多个较小,并且发送间隔短的数据包,粘成一个包发送,该现象称为粘包现象,该粘包算法称为Nagle算法
        5、TCP的使用场景:对传输质量比较高的以及传输大量数据的通信,在需要可靠通信的传输场合,一般使用TCP协议

(2)UDP--->快速

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

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

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

        4、限制每次传输的数据大小,多出部分直接忽略删除

        5、收发是同步的,不会粘包

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


2、简述一下有关端口号的内容

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

        2、端口号是一个2字节的无符号整数,取值范围是【0,65535】

        3、端口号的分类:
                1>0~1023:一些特殊的端口号
                2>1024~49151:正常编写服务器使用的端口号
                3>59152~65535:这部分是客户端运行时候动态选择的


3、TCP服务器通信模型

        1、使用socket函数(sfd = socket())创建一个用于连接的套接字文件描述符
        2、使用bind函数为服务器绑定IP地址和端口号,为了让客户端能够找到服务器
        3、使用listen函数将服务器套接字设置成被动通信状态,用于接收客户端的连接请求
        4、使用accept函数(newfd = accept())阻塞等待客户端的连接请求,如果有客户端发来连接请求,创建一个用于通信的新的套接字文件描述符
        5、使用send、recv,read、write函数进行数据的收发工作
        6、使用close函数关闭套接字、关闭监听


4、UDP服务器通信模型

        1、使用socket函数(sfd = socket())创建一个用于连接的套接字文件描述符
        2、使用bind函数为服务器绑定IP地址和端口号,为了让客户端能够找到服务器
        3、使用send、recv,read、write函数进行数据的收发工作
        4、使用close函数关闭套接字、关闭监听


5、三次握手流程描述

        1、第一次握手:客户端发送SYN包(SYN=1,seq=0)给服务器,并进入SYN_SENT状态,等待服务器返回确认包
        2、第二次握手:服务器接收到SYN包,确认客户端的SYN,发送ACK包(ACK=1,ack=1),同时发送一个SYN包(SYN = 1,seq = 0),并进入SYN_RCVD状态
        3、第三次握手:客户端接收到服务器的SYN包,以及ACK包,进入establish状态,同时向服务器发送ACK包(ACK = 1,ack = 1)。此时三次握手包发送完毕,服务器也进入establish状态


6、四次挥手流程描述

        1、第一次挥手:主动关闭方发送一个FIN包(FIN = 1,seq = u)给被动方,进入FIN_WAIT_1状态
        2、第二次挥手:被动方发送一个ACK包(ACK=1,ack=u+1);并进入CLOKSE_WAIT状态,主动方接收到ACK包后,进入FIN_WAIT_2状态,如果有数据没有发送完毕,则继续发送,知道发送完毕为止
        3、第三次挥手:被动方发送一个FIN包(FIN=1,seq=w),进入LAST_ACK状态
        4、第四次挥手:主动关闭方收到FIN包,回复一个ACK包(ACK=1,ack=w+1),被动方收到主动关闭方的ACK后关闭连接


7、TCP服务器与客户端建立连接,断开连接的过程

        建立连接的过程即如上所述的三次握手。断开连接的过程是四次挥手,断开连接可以由任一方发起。


8、在UDP传输中,如何知道对端掉线

        1、心跳包机制,规定每隔指定时间后发送一个心跳包给服务器,服务器回复心跳包应答

        2、如果期间服务器多次没有收到心跳包,或者客户端多次没有收到应答,则代表对端掉线


http://www.mrgr.cn/news/444.html

相关文章:

  • Vue 3 + 天地图 + D3.js 绘制行政区划
  • 4.vue中引入axios
  • 关于鸿蒙开发中装饰器@Extend、@Styles、@Builder的介绍
  • Linux - 权限
  • PostgreSQL的walwriter进程
  • 【SpringBoot】SpringBoot项目中实现数据缓存
  • 家里养有宠物,宠物空气净化器真的能除毛除臭吗?
  • 使用PowerShell自动化Windows系统管理任务
  • Squish 8.0现已发布
  • 用“文心一言”写的文章,看看AI写得怎么样?
  • PHP中英文企业官网系统应用插件
  • pyexiv2库 EXIF信息读取、写入
  • FFmpeg源码:av_log2函数分析
  • Redis缓存——缓存更新策略和常见的缓存问题
  • JVM的组成
  • 用Python实现9大回归算法详解——01. 线形回归算法
  • 《书生大模型实战营第3期》进阶岛 第4关: InternVL 多模态模型部署微调实践
  • 解析网络流量管理方案:简化基于云的DNS负载均衡
  • 贷齐乐案例
  • 【MATLAB源码-第249期】基于matlab的信道量化反馈的预编码仿真,采用均匀量化方式和LDL分解的预编码。