没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
内容概要:本文详细介绍了网络编程的核心概念和技术要点,包括OSI七层模型、TCP和UDP协议、粘包现象及其解决方案、阻塞与非阻塞模式、以及IO多路复用。OSI七层模型通过实例解释了各层的功能,如应用层、传输层、网络层等。TCP和UDP协议的对比揭示了两者在连接建立、数据传输方面的差异,特别是TCP的三次握手和四次挥手过程。粘包问题是TCP通信中的常见问题,文中提供了通过头部信息解决粘包的方法。阻塞和非阻塞模式的讨论涵盖了其工作原理及应用场景,IO多路复用则通过select、poll、epoll等机制实现了高效处理多个客户端请求的能力。 适合人群:具备一定编程基础,对网络编程感兴趣的开发者,尤其是从事后端开发或网络应用开发的技术人员。 使用场景及目标:①理解OSI七层模型的工作机制,掌握各层的功能和作用;②掌握TCP和UDP协议的区别,了解如何选择合适的协议;③解决TCP通信中的粘包问题;④实现非阻塞的网络编程,提高程序的响应速度;⑤利用IO多路复用技术优化服务器性能,处理多个客户端连接。 阅读建议:本文内容丰富,涉及多个网络编程的关键知识点。建议读者结合实际项目需求,逐步理解和实践每个知识点,特别关注代码示例部分,通过动手实验加深理解。此外,对于IO多路复用部分,建议深入研究select、poll、epoll的区别和应用场景,以应对不同的开发需求。
资源推荐
资源详情
资源评论
































OSI的7层模型对于大家来说可能不太好理解,所以我们通过一个案例来讲解:
假设,你在浏览器上输入了一些关键字,内部通过DNS找到对应的IP后,再发送数据时内部会做如下的
事:
应用层:规定数据的格式。
表示层:对应用层数据的编码、压缩(解压缩)、分块、加密(解密)等任务。
会话层:负责与目标建立、中断连接。
传输层:建立端口到端口的通信,其实就确定双方的端口信息。
网络层:标记目标IP信息(IP协议层)
"GET /s?wd=你好 HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n"
"GET /s?wd=你好 HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n你好".encode('utf-8')
在发送数据之前,需要会先发送 “连接” 的请求,与远程建立连接后,再发送数据。当然,发送完毕之
后,也涉及中断连接的操作。
数据:"GET /s?wd=你好 HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n你好".encode('utf-
8')
端口:
- 目标:80
- 本地:6784

数据链路层:对数据进行分组并设置源和目标mac地址
物理层:将二进制数据在物理媒体上传输。
每一层各司其职,最终保证数据呈现在到用户手中。
简单的可以理解为发快递:将数据外面套了7个箱子,最终用户收到箱子时需要打开7个箱子才能拿到数
据。而在运输的过程中有些箱子是会被拆开并替换的,例如:
在开发过程中其实只能体现:应用层、表示层、会话层、传输层,其他层的处理都是在网络设备中自动
完成的。
数据:"GET /s?wd=你好 HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n你好".encode('utf-
8')
端口:
- 目标:80
- 本地:6784
IP:
- 目标IP:110.242.68.3(百度)
- 本地IP:192.168.10.1
数据:"POST /s?wd=你好 HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n你好".encode('utf-
8')
端口:
- 目标:80
- 本地:6784
IP:
- 目标IP:110.242.68.3(百度)
- 本地IP:192.168.10.1
MAC:
- 目标MAC:FF-FF-FF-FF-FF-FF
- 本机MAC:11-9d-d8-1a-dd-cd
通过网线将二进制数据发送出去
最终运送目标:上海 ~ 北京(中途可能需要中转站),在中转站会会打开箱子查看信息,在进行转发。
- 对于二级中转站(二层交换机):拆开数据链路层的箱子,查看mac地址信息。
- 对于三级中转站(路由器或三层交换机):拆开网络层的箱子,查看IP信息。
import socket

2. UDP和TCP协议
协议,其实就是规定 连接、收发数据的一些规定。
在OSI的 传输层 除了定义端口信息以外,常见的还可以指定UDP或TCP的协议,协议不同连接和传输数
据的细节也会不同。
UDP(User Data Protocol)用户数据报协议, 是⼀个⽆连接的简单的⾯向数据报的传输层协议。
UDP不提供可靠性, 它只是把应⽤程序传给IP层的数据报发送出去, 但是并不能保证它们能到达
⽬的地。 由于UDP在传输数据报前不⽤在客户和服务器之间建⽴⼀个连接, 且没有超时重发等机
制, 故⽽传输速度很快。
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数
据前,必须和对方建立可靠的连接,然后再进行收发数据。
2.1 UDP和TCP 示例代码
UDP示例如下:
服务端
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('110.242.68.3', 80)) # 向服务端发送了数据包
key = "你好"
# 应用层
content = "GET /s?wd={} http1.1\r\nHost:www.baidu.com\r\n\r\n".format(key)
# 表示层
content = content.encode("utf-8")
client.sendall(content)
result = client.recv(8196)
print(result.decode('utf-8'))
# 会话层 & 传输层
client.close()
常见的有:语音通话、视频通话、实时游戏画面 等。
常见有:网站、手机APP数据获取等。
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8002))
while True:
data, (host, port) = server.recvfrom(1024) # 阻塞
print(data, host, port)
server.sendto("好的".encode('utf-8'), (host, port))

客户端
TCP示例如下:
服务端
客户端
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
text = input("请输入要发送的内容:")
if text.upper() == 'Q':
break
client.sendto(text.encode('utf-8'), ('127.0.0.1', 8002))
data, (host, port) = client.recvfrom(1024)
print(data.decode('utf-8'))
client.close()
import socket
# 1.监听本机的IP和端口
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('127.0.0.1', 8001))
sock.listen(5)
while True:
# 2.等待,有人来连接(阻塞)
conn, addr = sock.accept()
# 3.等待,连接者发送消息(阻塞)
client_data = conn.recv(1024)
print(client_data)
# 4.给连接者回复消息
conn.sendall(b"hello world")
# 5.关闭连接
conn.close()
# 6.停止服务端程序
sock.close()
import socket
# 1. 向指定IP发送连接请求
client = socket.socket()
client.connect(('127.0.0.1', 8001))
# 2. 连接成功之后,发送消息
client.sendall(b'hello')
剩余21页未读,继续阅读
资源评论


生而自由爱而无畏
- 粉丝: 700
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 国家开放大学网络核心课程运行探究.docx
- XX软件有限公司人力资源规划(doc).doc
- 数学教学中如何运用计算机技术.docx
- 单片机任务书(寻迹小车设计).doc
- 云计算加速未来.pptx
- 物联网智慧社区云对讲系统技术方案.doc
- 机械手设计方案论文-关于PLC控制的智能机械手设计方案探究.doc
- 基于神经网络模型的空燃比非线性模型预测控制.docx
- 大学计算机考试试题.doc
- 电子商务行业发展研究报告.pptx
- 物联网与工业自动化的关系.ppt
- 计算机网络通信协议的分析研究.docx
- C语言课程设计方案:学生宿舍管理系统[].doc
- 基于RFID的传感器网络.doc
- 信息化教学设计实施方案高中语文《再别康桥》.doc
- 粉色花卉水彩卡通信纸word信纸模板.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
