Python网络编程-网络基础中的基础和socket

cs架构

此处cs不是打枪的cs…
CS架构:客户端(client)和服务端(server)的架构
BS架构:浏览器(browser)和服务端(server)架构

网络通信

集线器:将所有电脑连通起来
交换机:将多个电脑连接起来组成一个局域网
网卡
mac地址:物理地址,全球唯一切固定(好像是来着),十六进制,前三位是厂家编号,后三位生产流水号
IPV4:ip地址,点分十进制,四段三位数字组成,例如:192.168.1.2,0.0.0.0-255.255.255.255只间.IP地址用来划分广播域
这个视频换了老师讲的实在菜鸡,…话多啰嗦还不说点有用的
IP地址段:192.168.1.0-192.168.1.255 一个C类IP地址段,其中会有一个网关地址,广播地址,同一个IP段称为同一子网,或者一个交换机连接的电脑都是一个网段中的

DHCP:自动分配IP地址

子网掩码:确定一个子网的网段中的IP个数
ARP协议:IP地址解析Mac地址
DNS:域名解析
NAT:网络地址转换,将局域网地址转换为外网地址.
路由转发:路由器将信息转发给其他路由器
路由协议:计算转发路有消息的最佳路径
路由表:记录可以将消息转发给的其他路由器地址

socket

创建两个Python文件,模拟一个服务端一个客户端,先运行服务端在运行客户端,写一个对话小程序:
服务端:

import socket
# 创建了一个socket对象并取名为server
server = socket.socket()
# 指定IP地址和端口
ip_prot = ('192.168.0.9',8001)
# 绑定IP和端口
server.bind(ip_prot)
# 监听端口
server.listen()
# 等待客户端建立连接,建立连接后会得到两个值,一个是conn,连接通道,一个是addr,对方的IP地址
conn,addr = server.accept()
# 服务端通过连接通道来收发消息,通过recv方法,recv里面的参数是字节(B).,1024是1024B = 1KB
form_client_msg = conn.recv(1024)
# 输出接收到的消息
#print(form_client_msg) #英文
print(form_client_msg.decode('utf-8')) #中文
# 回复消息,通过send方法,参数必须是字节类型
#conn.send(b"ChouBuYaoLian") # 英文
conn.send("滚犊子".encode('utf-8')) # 中文
# 关闭通道,断开连接
conn.close()
# 关闭服务端
server.close()

客户端

# 导入socket
import socket
# 创建一个socket对象
client = socket.socket()
# 找到服务端IP地址和端口
server_ip_port = ('192.168.0.9',8001)
# 连接服务端应用程序,通过connect方法,参数是IP地址和端口号
client.connect(server_ip_port)
# 发送消息,但是调用者是client的socket对象
#client.send(b'Hello') # 此方法只支持英文
client.send('你好'.encode('utf-8')) # 中文
# 客户端通过连接通道来接收消息,通过recv方法,recv里面的参数是字节(B).,1024是1024B = 1KB
form_server_msg = client.recv(1024)
# 输出接收消息
#print(form_server_msg) # 英文
print(form_server_msg.decode('utf-8')) # 中文
# 关闭连接
client.close()

TCP和UDP

TCP流:一对一的传输,常见于WEB浏览器,文件传输

UDP包:一对多的传输,不可靠,无连接的c传输,传输效率高,常用语域名系统(DNS),IP语音,视频流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章