网络编程复习
网络编程:
互联网协议:七层 osi协议
五层:
应用层 python
传输层 tcp/udp
网络层 ip 路由器
数据链路层 arp 交换机
物理层 通过ip找mac地址 网卡、双绞线
ip协议:ip地址的格式
ip地址:一台机器在一个网络中唯一的标识
子网掩码:ip地址宇子网掩码做按位与运算,得到的结果是网段
网关IP:局域网内的机器访问公网IP,就是通过网关访问
tcp协议:面向流的,可靠,全双工,三次握手,四次挥手——粘包
udp协议:面向数据包,不可靠
send和sendall
send是如果一次发的数据很大,那么会拆包,分开发送,数据不会丢失;sendall如果数据很大,那么会造成数据的丢失;
但是在实际中,由于内存的限制,不能一次性发送所有的数据;所以在实际应用中推荐使用send.
setblocking
import socket sk=socket.socket() sk.setblocking(False)#如果这里为false,因为没有启动client,那么下面的sk.accept()会一直在等待,结果代码就会报错 sk.bind(('127.0.0.1',8080)) sk.listen() sk.accept()#这里需要等待client端口连接
进阶
import socket sk=socket.socket() sk.setblocking(False)#如果这里为false,因为没有启动client,那么下面的sk.accept()会一直在等待,结果代码就会报错 sk.bind(('127.0.0.1',8080)) sk.listen() try: sk.accept()#这里需要等待client端口连接 except:BlockingIOError print('*****')
在第34天的课程里面有ftp作业,涉及到包,随后再学习做。