版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCPSocket基础知识测试题(含详细答案)适用场景:计算机网络实训、后端开发入门考核、面试基础刷题难易程度:基础+中等(无偏题怪题,贴合实际开发)答题说明:满分100分,答题时间60分钟一、单项选择题(每题3分,共30分)1.下列关于TCP协议的说法,错误的是()A.面向连接的可靠传输协议B.支持数据重传、拥塞控制C.面向字节流,无数据边界D.无需建立连接,直接发送数据2.TCPSocket服务端绑定端口的核心函数是()A.socket()B.bind()C.listen()D.accept()3.TCP三次握手的核心目的是()A.协商传输速率B.确认双方收发能力正常,建立可靠连接C.加密传输数据D.分配端口资源4.服务端调用listen()函数的作用是()A.创建套接字文件B.监听客户端连接请求,设置等待队列C.接收客户端数据D.建立客户端连接5.TCP粘包现象产生的主要原因是()A.网络带宽不足B.TCP是字节流协议,无消息边界C.客户端代码出错D.端口被占用6.下列哪个状态是TCP四次挥手主动关闭方的最终状态()7.Socket编程中,recv()函数返回值为0代表()A.接收数据为空B.客户端正常关闭连接C.网络异常断开D.缓冲区已满8.一台服务器同一个端口可以被多个TCP连接占用吗()A.完全不可以B.可以,通过五元组区分不同连接C.仅客户端端口可以复用D.仅局域网内可以9.TCP连接中ESTABLISHED状态表示()A.套接字正在监听B.连接已成功建立,可正常收发数据C.连接正在关闭D.连接等待重连10.下列不属于TCP可靠性保障机制的是()A.超时重传B.确认应答C.广播传输D.滑动窗口二、填空题(每空2分,共20分)1.TCP通信的核心流程:创建套接字→______→监听→接受连接→收发数据→关闭连接。2.TCP区分不同连接的五元组包括:源IP、目的IP、______、目的端口、协议号。3.TCP三次握手、______次挥手,完成连接的建立与断开。4.处理TCP粘包的常用三种方式:固定长度报文、______、消息定长包头。5.服务端______函数用于阻塞等待客户端发起连接请求。7.TCP滑动窗口主要作用是______和流量控制。8.客户端Socket连接服务端的核心函数是______。三、简答题(每题10分,共30分)1.简述TCP三次握手的完整过程,以及为什么不能两次握手?2.详细说明TCP粘包、拆包的产生原因和常用解决方案。3.简述TCP服务端和客户端的完整编程流程(核心函数+步骤)。四、代码实操题(20分)使用Python编写简单的TCPSocket服务端+客户端代码,要求:1.服务端监听本地8888端口,支持单次收发消息;2.客户端连接服务端,发送自定义消息,接收服务端回执;3.代码简洁、带基础注释,可直接运行。参考答案及详细解析一、单项选择题答案1.D解析:TCP必须先建立连接,再传输数据,UDP才是无连接协议。2.B解析:bind()绑定IP和端口;socket()创建套接字;listen()开启监听;accept()接收连接。3.B解析:三次握手核心是双向确认收发能力,保证连接可靠,避免无效连接占用资源。4.B解析:listen()将主动套接字转为被动监听套接字,初始化连接等待队列。5.B解析:TCP无消息边界,操作系统缓冲区会缓存数据,多次发送的数据会合并或拆分,产生粘包拆包。7.B解析:recv返回0是标准的客户端正常断开连接标识,返回负数为网络异常。8.B解析:服务器单端口可维持成千上百TCP连接,靠五元组唯一区分连接。9.B解析:ESTABLISHED为连接成功状态,是数据收发的核心状态。10.C解析:广播是UDP传输特性,TCP不支持广播、多播。二、填空题答案1.绑定(bind)2.源端口3.四4.特殊分隔符(结尾符)5.accept()6.2MSL7.拥塞控制8.connect()三、简答题详细答案1.TCP三次握手过程及两次握手的弊端完整过程:(1)第一次握手:客户端向服务端发送SYN报文,请求建立连接,客户端进入SYN_SENT状态;(2)第二次握手:服务端收到SYN报文,回复SYN+ACK报文,表示同意连接,服务端进入SYN_RCVD状态;(3)第三次握手:客户端收到确认报文,发送ACK报文,双方全部进入ESTABLISHED状态,连接建立完成。为什么不能两次握手:两次握手只能保证服务端确认客户端的发送能力正常,无法确认服务端的发送能力、客户端的接收能力。同时会产生失效连接问题:网络中延迟的SYN报文会让服务端建立无效连接,占用服务器资源,三次握手可以彻底规避该问题。2.TCP粘包拆包原因及解决方案产生原因:TCP是面向字节流的协议,没有固定的消息边界。操作系统存在TCP缓冲区,发送方会根据缓冲区大小、网络拥堵情况,合并多次发送的小数据(粘包),或拆分大数据包(拆包),导致接收方无法区分独立的消息。常用解决方案:(1)固定报文长度:每次收发数据统一固定长度,不足补位,接收方按长度读取;(2)添加消息分隔符:每条消息结尾添加特殊字符(如\r\n),接收方根据分隔符拆分消息;(3)包头+包体结构:自定义协议,包头固定长度存储包体数据长度,接收方先读包头获取长度,再读取对应长度的包体数据(企业最常用)。3.TCP服务端与客户端编程流程服务端流程:1.socket():创建TCP流式套接字;2.bind():绑定本机IP和指定端口;3.listen():开启端口监听,设置连接等待队列;4.accept():阻塞等待并接收客户端连接,生成新的通信套接字;5.recv()/send():和客户端进行数据收发;6.close():关闭通信套接字和监听套接字。客户端流程:1.socket():创建TCP套接字;2.connect():主动连接服务端IP和端口;3.send()/recv():与服务端双向收发数据;4.close():关闭套接字,断开连接。四、代码实操题参考答案(可直接运行)TCP服务端代码python
#TCP服务端
importsocket
#1.创建TCP套接字
server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#解决端口占用问题
server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
#2.绑定IP和端口
HOST='127.0.0.1'
PORT=8888
server_socket.bind((HOST,PORT))
#3.开启监听
server_socket.listen(5)
print(f"服务端已启动,监听{HOST}:{PORT}...")
#4.接收客户端连接
conn,addr=server_socket.accept()
print(f"成功连接客户端:{addr}")
#5.接收并回复数据
recv_data=conn.recv(1024).decode('utf-8')
print("收到客户端消息:",recv_data)
conn.send("服务端已收到消息!".encode('utf-8'))
#6.关闭连接
conn.close()
server_socket.close()TCP客户端代码python
#TCP客户端
importsocket
#1.创建套接字
client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#2.连接服务端
HOST='127.0.0.1'
PORT=8888
client_socket.connect((HOST,PORT))
#3.发送消息
send_msg="HelloTCPSocket!"
client_socket.send(send_msg.encode('utf-8'))
#4.接收服务端回执
recv_msg=client_socket.recv(1024).decode('utf-8')
print("收到服务端回复:",recv_ms
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2026年)医师分层次培训计划
- (2026年)维修电工高级技师理论知识试卷附答案
- 蒸呢机挡车工岗前班组管理考核试卷含答案
- 管模维修工持续改进知识考核试卷含答案
- 称重计量工操作技能测试考核试卷含答案
- 伞制作工岗前安全应急考核试卷含答案
- 机制地毯挡车工安全培训效果强化考核试卷含答案
- 海洋浮标工岗位知识体系考核试卷含答案
- 汽车车身整形修复工岗位实操综合知识考核试卷含答案
- 牙骨雕刻工技术综合竞赛考核试卷含答案
- 恶性高热急救指南2026
- 2026新教材语文 13 普罗米修斯 教学课件
- 2026年市政工程质量员专业技能考试必考题库与答案
- 2026年财务数字化财务机器人应用培训试卷及答案
- T-CCMA 0055-2017 工程机械液压管路布局规范
- VDA 6.3 过程审核 2023 版 中文版(完整原文 + 评分细则 + 现场审核清单)
- 2026年(综合知识测试)湖北省从村(社区)干部中定向考录乡镇(街道)公务员综合试题及答案
- 2026年在线监测设备运维考试题及答案
- 居间股权转让合同范本
- 第七章健康地生活测试卷 (2)2026-2027学年人教版八年级上册生物
- 矿山含泥废水沉淀方案
评论
0/150
提交评论