• python网络编程part1


    1. 网络架构

    单机

    • 单机游戏

     

    以下两个基于网络的

    CS架构

    • 客户端游戏

    • cs--->client客户/server服务

    • 你自己是客户端(消费)--->服务端(收钱)

    服务端(应用程序)一个就够了,客户端(应用程序)可以有多个

    服务端和客户端都是应用程序,那两者一定都可以存储数据,哪一个存储数据更好:

    • 服务端: 很多人都可以用,它一次更新,其它人还是直接拿,还能保证数据的安全

    • 客户端:非常快,如果本地保存账号密码,安全性非常低,客户端不联网,数据不更新

    BS架构

    • 网页游戏

    • bs--->browser浏览器/服务端

    客户端(浏览器)/服务端,程序放在浏览器上

     

    p地址与ip协议

    • 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
    • 范围0.0.0.0-255.255.255.255
    • 一个ip地址通常写成四段十进制数,例:172.16.10.1

    mac地址(网卡地址)

      head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址。

      mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

    IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。



    "端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。

    路由器

      路由器(Router),是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。
     

    局域网

      局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组

    互联网和互联网的组成

    边缘部分: 客户端/服务端,这些普通的计算机,负责接收/发送数据

    核心部分:传输网络的设备,路由,基站,负责数据的传输

    科普版

    1. 打开浏览器(客户端)

    2. 输入www.taobao.com,----->地址指向淘宝的服务端

    3. 按enter键客户端把www.taobao.com解析成淘宝的地址(杭州.....)

    4. 发送一条指令给淘宝,让淘宝把数据发给你

    5. 客户端渲染数据

     

    互联网的组成

    硬件:提供给你网络

    软件:应用程序,完成具体的任务

    OSI七层协议

    互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

    物理层

    计算机与计算机之间传输数据

    • 光缆/网线:传输信号,连接两台计算机,如果有一根网线能从中国连到美国,只要物理层就够了

    客户端 ----00111110011111001111100111110011111001111100111110011111--->服务端

     

     

    数据链路层

    让同一局域网下的计算机连接在一起

    把001111 100111 110011 1110011111变得有意义,分组,每几位一组

    以太网协议:规定物理层中传输的0和1的格式

    head:

    收件人地址:

    数据类型:

    发件人地址:

    data: 内容

    • 发件人地址就是mac地址,计算机上网卡的地址,这个地址固定不变,并且唯一,每一台电脑有自己固定的mac地址

    • 广播:你一定知道自己的mac地址,还有收件人的mac地址,通过某一台设备(交换机),但是交换机不知道mac地址对应的计算机是那一台,交换机就会以广播的形式发送给所有的计算机,收件人的计算机收到了就会解析这条命令,拿到内容了.之后交换机会记录两个mac地址.

    以上基于局域网

     

     

    网络层

    让不同局域网下面的计算机连接在一起.

    叫做ip地址,只只知道mac地址无法连接其他局域网内的计算机.因为mac地址只被交换机识别,然后不同局域网的交换机不一样.所以现在定义一个新的地址表名是哪个局域网,通过路由器

    在数据链路层的基础上在包一层ip头.

     

    已经知道了淘宝的ip地址和mac地址,你会吧自己的mac地址和ip地址一起发送出去,路由会接收淘宝的ip地址,路由发送淘宝的ip地址和mac地址,自带mac地址(路由器的)和ip地址(路由器的ip地址)

     

    mac地址(局域网)+IP地址(互联网)就能找到全世界独一无二的电脑

     

    传输层

    组织网络带来的数据,

    端口号,找到一个固定的应用程序,一个端口号对应一个应用程序

    mac地址(局域网)+IP地址(互联网)+端口号就能找到全世界独一无二的电脑上的独一无二的应用程序

     

    数据,0和1发给应用程序,tcp/udp协议

     

    应用程序

    0和1转换成具体的功能

     

    抽象层

     

    客户端和服务端的应用程序想通信,两者传输的数据必须是一样的,

    socket抽象层就是写出一个全世界独一无二的计算机上的应用程序,既可以是客户端,也可以服务端

    使用socket编写的客户端服务端写一个文件拷贝的cs架构的软件

    serve  端

    import socket
    sk = socket.socket()
    sk.bind(('127.0.0.1',8898))  #把地址绑定到套接字
    sk.listen()          #监听链接
    conn,addr = sk.accept() #接受客户端链接
    ret = conn.recv(1024)  #接收客户端信息
    print(ret)       #打印客户端信息
    conn.send(b'hi')        #向客户端发送信息
    conn.close()       #关闭客户端套接字
    sk.close()        #关闭服务器套接字(可选)
    

    client 端

    import socket
    ip_port=('127.0.0.1',9000)
    udp_sk=socket.socket(type=socket.SOCK_DGRAM)
    udp_sk.sendto(b'hello',ip_port)
    back_msg,addr=udp_sk.recvfrom(1024)
    print(back_msg.decode('utf-8'),addr)
    

     

  • 相关阅读:
    [PHP] Layui + jquery 实现 实用的文章自定义标签
    个人总结第五周
    个人总结第四周
    个人总结第三周
    个人总结第二周
    个人总结第一周
    用户体验评价
    第二阶段scrum冲刺
    单词统计
    用户模块和用户场景
  • 原文地址:https://www.cnblogs.com/legend27/p/11083240.html
Copyright © 2020-2023  润新知