笔记
昨日内容回顾 1 CS架构 服务端客户端架构: 软件CS架构:京东,淘宝,qq,微信,暴风影音,快播 硬件CS架构:打印机 服务端:提供服务的 客户端:享受服务的 BS架构:浏览器和服务端:谷歌,360,IE 2 网络通信当中遇到的名词 硬件 网卡:接收电信号 mac地址:网卡的唯一标识,全球唯一,6位点分16进制 广播 : 信息发给所有人 单播 : 单独发给某个人或者说某个设备 广播风暴 : 不安全,容易拥堵网络 IP地址 : 划分广播域 192.168.15.113 四个点分十进制 集线器 : 将所有连电脑连通起来 交换机 : 升级版集线器 DHCP协议 : 自动分配IP地址 划分广播域--> IP网段 : 192.168.15.0 - 192.168.15.255 属于同一子网 192.168.16.0 - 192.168.16.255 子网掩码 : 计算目标IP地址是否和咱们是同一网段 同一网段的:广播发送 不同网段的:发送给路由器 路由器(内网的作用) : 管理局域网 找外部网路的设备: 域名:www.jd.com --> IP地址 DNS服务器:记录着所有的域名和他网站对应的那台服务器的IP地址的对应关系,理解为一个字典 {'www.jd.com':192.168.15.12} 网关:在路由器这儿,把关你对外的请求 NAT技术: 将你的IP地址,转换为网关的IP地址 外网又称为公网 ,网关的IP地址又称为外网IP地址或者公网IP地址 路由器(外网的作用) : 转发消息 路由协议 : 计算一个最优路径,然后进行路由转发 发到京东的路由器上,京东的路由器做了端口映射(看图) 端口:标识电脑上某个应用程序,范围0-65535 0-1024 内部程序用的,我们一般使用的都是8000以后的 通过IP地址+端口:我就能唯一确定一台电脑上的某个应用程序 3 socket 看代码实例 二 今日内容 1. 网络通信协议 osi七层,tcp\ip五层 tcp\ip五层 arp协议:通过IP地址找到mac地址 2.tcp和udp的区别 tcp协议:面向连接,消息可靠,相对udp来讲,传输速度慢,消息是面向流的,无消息保护边界0 udp协议:面向无连接,消息不可靠,传输速度快,消息是面向包的,有消息保护边界. tcp代码和udp代码的区别看代码 三 内容回顾
test.py
#作业简单讲解
# 1.时间戳转换为格式化时间的字符串
import time
while 1:
t1 = time.time()
print(t1)
t1_stru = time.localtime(t1)
print(time.strftime('%Y/%m/%d',t1_stru))
t1_ss = time.strftime('%Y/%m/%d',t1_stru)
time.sleep(10)
client.send(t1_ss)
udp_客户端.py
import socket
udp_client = socket.socket(type=socket.SOCK_DGRAM)
server_ip_port = ('192.168.15.113',8001)
udp_client.sendto(b'hello',server_ip_port)
from_server_msg,server_addr = udp_client.recvfrom(1024)
print(from_server_msg)
print(server_addr)
udp_client.close()
udp_服务端.py
import socket
#创建一个udp协议下的socket,需要使用参数type
udp_server = socket.socket(type=socket.SOCK_DGRAM) #DGRAM : datagram 数据报
#拿到一个地址,启动程序的时候,告诉电脑,你给我这个程序分配8001端口.
ip_port = ('192.168.15.113',8001)
#绑定IP地址和端口
udp_server.bind(ip_port)
print('准备接收消息了...')
#接收消息,from_client_msg来自客户端的消息,client_addr客户端的地址('192.168.15.113', 8001)
from_client_msg,client_addr = udp_server.recvfrom(1024) #阻塞住了
print(11111)
print(from_client_msg)
print(client_addr)
#发送消息
udp_server.sendto(b'gunduzi',client_addr)
#关闭udp的socket对象
udp_server.close()
练习
1. 路由器,交换机的作用? 2. 用户登录作业用tcp协议下的socket写: 1. 服务端 - 等待客户端来发送数据:用户名、密码 - 本地文件中查看用户名密码是否合法。 - 合法:登录成功 - 否则:用户名或密码错误 2. 客户端 - 用户输入:用户名、密码 - 发送到服务端进行校验。 3.udp协议下的socket聊天工具(类10086) 1. 服务端 - 接收客户端发送的信息并作出回复。 - 检查是否有某些指定关键字并回复消息,如果发送过来的消息中还有sb字符串,那么将sb替换成alexsb,然后和你要输入的内容组合起来发送给客户端。 2. 多个客户端 - 客户端向服务端发送信息 4.简述 OSI 七层协议。 5.名词:mac地址、ip地址、DHCP服务、路由器、交换机、子网掩码、网关、DNS、广播,BS和CS架构 6.简述 三次握手、四次挥手的流程 7.什么是socket?简述基于tcp协议的套接字通信流程。 8.简述TCP和UDP协议的区别
客户端.py
import socket
client = socket.socket()
server_ip_port = ('192.168.15.113',8001)
#链接服务端
client.connect(server_ip_port)
while True:
msg = input('明杰想说:')
print('22222')
#发消息
client.send(msg.encode('utf-8')) #send里面的消息必须是字节类型的
print('等待接收消息....')
from_server_msg = client.recv(1024) #阻塞住,等待接收消息
print('接收到了消息')
from_server_msg = from_server_msg.decode('utf-8')
print(from_server_msg)
client.close()
服务端.py
import socket
#创建了一个socket对象
server = socket.socket() #创建一个手机
ip_port = ('192.168.15.113',8001) #创建了一张电话卡
#绑定IP地址和端口
server.bind(ip_port) #插上电话卡
#监听IP地址和端口
server.listen(3) #开机,后面等待链接的客户端个数为3个
print(11111)
#等待客户端的链接,
conn, addr = server.accept() #等着别人给我打电话,阻塞住
while True:
#接收消息
from_client_msg = conn.recv(1024) #1024为消息大小,单位B,MB = 1024KB,1KB = 1024B
#接收的消息是bytes类型,需要转换为字符串,这里会阻塞
from_client_msg = from_client_msg.decode('utf-8')
print(from_client_msg)
msg = input('瑞鑫说:')
conn.send(msg.encode('utf-8'))
#关闭链接
conn.close()
server.close()
# print(conn)
# print('>>>>',addr)