028-2018-1016 协议+socket

笔记

昨日内容回顾

   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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值