day32 网络编程初识
架构 -- 程序员开发的一种模式
C/S架构 客户端/服务器模式
B/S架构 Browser浏览器 / 服务器模式
B/S架构的优势: 统一了应用的接口
网络通信编程:
同一台电脑上两个py文件通信 --- 文件
两台电脑 如何通信? --- 一根网线
多台电脑 如何通信? --- 交换机
更多台电脑 如何通信? --- 交换机+路由器
C/S架构 客户端/服务器模式
B/S架构 Browser浏览器 / 服务器模式
B/S架构的优势: 统一了应用的接口
网络通信编程:
同一台电脑上两个py文件通信 --- 文件
两台电脑 如何通信? --- 一根网线
多台电脑 如何通信? --- 交换机
更多台电脑 如何通信? --- 交换机+路由器
mac地址: 物理地址
在cmd 查看命令 ipconfig -all
mac地址是12位十六进制组成
在cmd 查看命令 ipconfig -all
mac地址是12位十六进制组成
ip地址: 是一个四位点分十进制组成(ipv4)
端口: 操作系统为每一个应用程序分配一个端口号
ip + 端口号 唯一确定某一个电脑上的某一个程序
arp协议: 通过目标ip地址,获取目标mac地址
端口: 操作系统为每一个应用程序分配一个端口号
ip + 端口号 唯一确定某一个电脑上的某一个程序
arp协议: 通过目标ip地址,获取目标mac地址
给你一个ip地址,如何确定它是不是在你当前局域网内?
ip地址 & 子网掩码
ex:
ip地址 192.168.1.12
1100 0000 . 1010 1000 . 0000 0001 . 0000 1100
1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
结果 1100 0000 . 1010 1000 . 0000 0001 . 0000 0000
---> 192.168.1.0 网段
子网掩码 255.255.255.0
用网段来确定一个ip地址是否在你当前的局域网内.
网段 = ip地址 & 子网掩码
路由器:
有一个路由表,记录了归它管理的所有的网段
协议 : 由多人制定的一种规则
通过socket模块去操作tcp和udp协议
TCP协议 : 安全可靠通信方式,面向连接
UDP协议 : 不安全,不可靠的通信方式,快,
ip地址:127.0.0.1 : 回环地址:无论什么时候,都可以代表本机的ip地址(只限在本机使用)
tcp协议:
三次握手 : 注意必须是client先发起请求
1 client发送给server我想连接你,可以么
2 server回复client,可以,我也想连接你,可以吗?
3 client回复server,可以
四次挥手 : 谁先发起请求都可以
1 client发送请求:我准备断开连接了,我没有数据需要发送了,
如果你有数据可以继续发给我
2 server回复:确认接收到你的请求,我开始着手准备断开事宜
3 server回复:我准备好了,可以随时断开连接
4 client回复:断开连接吧
OSI五层模型:
应用层 py文件
传输层 tcp/udp协议
网络层 ip协议
数据链路层 arp协议,网卡
物理层 网线,集线器,光纤
ip地址 & 子网掩码
ex:
ip地址 192.168.1.12
1100 0000 . 1010 1000 . 0000 0001 . 0000 1100
1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
结果 1100 0000 . 1010 1000 . 0000 0001 . 0000 0000
---> 192.168.1.0 网段
子网掩码 255.255.255.0
用网段来确定一个ip地址是否在你当前的局域网内.
网段 = ip地址 & 子网掩码
路由器:
有一个路由表,记录了归它管理的所有的网段
协议 : 由多人制定的一种规则
通过socket模块去操作tcp和udp协议
TCP协议 : 安全可靠通信方式,面向连接
UDP协议 : 不安全,不可靠的通信方式,快,
ip地址:127.0.0.1 : 回环地址:无论什么时候,都可以代表本机的ip地址(只限在本机使用)
tcp协议:
三次握手 : 注意必须是client先发起请求
1 client发送给server我想连接你,可以么
2 server回复client,可以,我也想连接你,可以吗?
3 client回复server,可以
四次挥手 : 谁先发起请求都可以
1 client发送请求:我准备断开连接了,我没有数据需要发送了,
如果你有数据可以继续发给我
2 server回复:确认接收到你的请求,我开始着手准备断开事宜
3 server回复:我准备好了,可以随时断开连接
4 client回复:断开连接吧
OSI五层模型:
应用层 py文件
传输层 tcp/udp协议
网络层 ip协议
数据链路层 arp协议,网卡
物理层 网线,集线器,光纤
import socket sk = socket.socket() sk.connect(('127.0.0.1',9090)) sk.send(b'hello') sk.close() 客户端 import socket sk = socket.socket(type = socket.SOCK_STREAM)# 采用tcp协议 买了个新手机 sk.bind(('192.168.19.200',9090)) # 端口号:0-65535 0 - 1023(不能用) 8000 - 10000 买一个手机卡 sk.listen()# 告诉好友我的新手机号 print(123) conn,addr = sk.accept()# 等待好友来给我打电话 print(456) msg = conn.recv(1024)# 聊天 print(msg.decode('utf-8'),addr,conn) conn.send(b'hahaha') conn.close()# 挂掉电话 sk.close()# 关机 服务器