网络编程
网络是什么
连接介质+协议
协议:osi7层
5层协议
- 物理层:010101
- 数据链路层:做分组,数据报,数据帧
- 网络层:ip,通过ip得到mac地址--arp协议 mac地址学习
- 传输层:tcp/udp 三次握手四次挥手,可靠传输
- 应用层: 写的程序都是应用层,基于socket(基于网络和传输抽象出来的) /http协议/邮件
socket
socket编写tcp客户端和服务端
- 可靠传输,需要建立连接
- 传输文件,自己一定值了协议。
粘包问题终极解决方案
struck模块先把头的长度包成41个字节,发送4个字节
发送头
发送内容
接收端:
- 接收4个字节,解除头部长度
- 接收头部,取出数据长度
- 接收收据长度
socket编写udp客户端和服务端
- 不需要建立连接,传输不可靠,数据报协议(自己有头)
socketsever 写支持并发的服务端
with上下文的内部实现
class Open:
def __enter__(self):
print('xxx')
pass
def __exit__(self, exc_type, exc_val, exc_tb):
print('yyy')
pass
with Open() as f:
pass
f.name = 'xxx'