day29
1.网络基础相关的知识
1.1 架构
1.1.1 C/S 架构 服务器/客户端
优势:能够充分发挥PC机的性能
1.1.2 B/S 架构 服务器/浏览器 (隶属于C/S架构)
优势: 统一了应用的接口
1.2 通信的事
1.2.1 同一台计算机上两个py 程序通信,打开一个文件
1.2.2 两个电脑通信,连接一根网线
1.2.3 多态电脑通信
eg: 电脑1 想要找到电脑2通信.
通信过程: 电脑1发送一个请求帧(包含目标主机的ip地址,还有本主机的ip地址和物理mac地址)给交换机,交换机会广播(吼一嗓子),当主机2收到交换机的广播后,知道有主机要寻找主机2,主机2会给交换机一个回应,此时交换机就会告诉主机1,主机2找到了,此时主机1和主机2就可以互相通信了.
2.知识点
2.1 mac地址:是一个物理地址,全球唯一的,是由网卡制造商分配的,类似于人的身份证
2.2 IP地址:是一个四位点分十进制,它表示了计算机在网络中的位置,类似于学生在学校的学号.
2.3 交换机的通信方式:
广播: 反射状信息(吼一嗓子)
单播: 一对一通信
组播: 一个和多个通信
2.4 arp协议 : 通过目标IP地址来获取mac地址的一个协议
2.5 端口:操作系统为本机上的每一个运行的程序随机分配的一个端口(程序级别的端口),其他电脑上的程序可以通过端口获取到这个程序(类似于文件句柄),IP地址+端口 能够找到某一台电脑上的某一个服务程序
2.6 路由器:链接不同网段,路由选路
2.7 网关: 一个网段的出口和入口
2.8 网段: 一个局域网内的IP地址范围
2.9 子网掩码: 子网掩码和IP地址&可以得到网段
2.10 osi五层结构
引用层 http/htpps/ftp
传输层 tcp/udp 四层交换机/四层路由器
网络层 IP协议 路由器/三层交换机
数据链路层 ARP协议 以太网交换机/网卡/网桥
物理层 传输电信号 网线/光线/集线器
3.socket 模块(套接字)
socket又叫做套接字,有很多种类型
3.1 AF_UNIX基于文件类型的套接字,unix的中心思想就是: 一切皆文件
3.2 AF_INET基于网络类型的套接字
type:一种是基于TCP协议 SOCK_STREAM
一种是基于UDP协议 SOCK_SYREM
TCP协议:可靠的,面向连接的,面向字节流形式的传输方式
UDP协议:不可靠的,面向无连接,面向数据包传输.传输速度相对要快
4.client和service代码
server服务端:
import socket
sk = socket.socket()...............................括号里不用传参数,默认是基于网络型的套接字,协议:TPC(好比买了一部手机)
sk.bind(("192.168.12.37",8008)).....................买一张手机卡(里边以元组的形式包括IP地址,端口,的端口的范围是:0-65535,但是0-1023i操作系统用的,不要用,所以的端口的数字在范围内可以随便给)
sk.listen()...........不用传参数,表示同时能接收的连接(相当于开机)
conn,addr = sk.accept().............................等待接收客户端的连接,是一种阻塞等待(相当于等待开机)
while 1:
mas_c = conn.resv(1024)...................建立起联系然后接收客户端发送的消息(conn里边包括客户端的消息)括号里必须给一个参数是字节数的倍数这个数尽量大一点,保证一次都接收完
print("mas_c".decode("utf-8"),addr)
massage = input(">>>")
conn.send(massage.encode("utf-8"))
conn.close()
sk.close()
client客户端
import socket
sk = socket.socket().....................................建立通信的条件
sk.connect(("192.168.12.37",8008))...........................和要通信的主机连接
while 1:
mass = input(">>>")
sk.send(mass.encode("utf-8"))
mas_c = sk.resv(1024)
print(mas_c.decode("utf-8"))
sk.close()