• 异常,网络编程


    异常 网络编程

    异常:
    异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止)
    异常分两种:逻辑错误,语法错误
    没运行时,语法错误会被python解释器检测到,
    程序运行时,会报逻辑错误
    常用语法:
    try except

    网络编程:
    C/S架构,client 客户端 server服务器
    实现服务端软件与客户端软件基于网络通信
    B/S架构,browser 浏览器,server

    实现网络编程的两大条件:
    1.物理介质:光纤,光缆,网线,无线电波
    2.互联网协议

    互联网协议:osi七层,osi五层,osi四层

    osi七层:
    应用层,表示层,会话层、
    传输层
    网络层
    数据链路层
    物理层

    osi五层:
    应用层,传输层,网络层,数据链路层,物理层

    osi四层:
    应用层,传输层,网络层,网络接口层
    物理层:发送电信号(本质发送二进制,0,1)
    数据链路层:
    单纯的发二进制没有任何意义,必须规定电信号多少位一组,每组什么意思
    数据链路层功能:定义了电信号的分组方式,根据以太网协议(ethernet)

    ethernet规定:
    ①一组电信号组成一个数据报,称为“帧”
    ②每一数据帧分成:报头head和数据data两部分

    head包含18字节:源地址6个字节,目标地址6个字节,数据类型6个字节
    data包含至少46字节最大1500字节
    故帧的长度为64字节到1518字节,超过最大限制就会分片发送

    源地址和目标地址为mac地址,以太网规定接入internet的电脑必须有网卡,每块网卡出厂时都会被烧录了一个世界上唯一的mac地址
    mac地址是用来确认局域网内一台计算机位置
    有了mac地址,以太网采取广播的方式进行通信:即拿到消息后给局域网内的每台计算机都发一份,各计算机拆包时发现mac地址是自己的才会查看信息,但是如果所有的通信都采用广播的方式的话,那么1台机器发送的包全世界都会受到,这将不仅仅是效率低的问题,这会是一场灾难,即广播风暴

    网络层:
    网络层功能:引入一套新的地址来区分不同的局域网,即网络地址

    遵循IP协议:ipv4,ipv6
    1.范围0.0.0.0 - 255.255.255.255
    2.1个ip地址通常写成四段十进制数,例如172.16.10.1
    故ipv4位四段十进制数,ipv6为6段十进制数

    在局域网呢,我们可以自己设置ip地址,故可能重复,ip并不能判定两台电脑是否在同一个局域网中
    子网掩码:表示子网络特征的一个参数
    是用来标识一个ip地址的哪些位是代表网络位,哪些位是主机位,子网掩码不能单独存在,必须结合ip地址使用
    子网掩码只有一个作用,就是将某个ip地址分成网络地址和主机地址

    子网掩码决定的是一个子网的电脑数目,计算公式是2的n次方,其中,我们可以把n看成是最后一个1后面有多少个0。如255.255.255.0转换成二进制,那就是11111111.11111111.11111111.00000000,后面有8个0,那n就是8,255.255.255.0这个子网掩码可以容纳2的8次方台pc,也就是256台,但有两个ip是不能用的,那就是最后一段不能为0和255,减去这两个,就是254台。
    我们再来看一个例子:
    255.255.248.0这个子网掩码可以最多容纳多少台电脑?
    算法:
      把将其转换为四段二进制数(每段8位,不足8位前面填0补齐)
      11111111.1111111.11111000.00000000
      然后,数数后面有几个0,一共是有11个,那就是2的11次方,等于2048,这个子网掩码最多可以容纳2048-2=2046台电脑。
    如何确认多台电脑是否处于1个局域网中:
    将ip地址和子网掩码转换为二进制,并进行按位与运算(即同为1变为1),将得到的结果转换为十进制
    如果大家的十进制相同,则处于同一局域网中

    ip地址分类:A类地址,B类地址,C类地址,D类地址,E类地址
    A:1个字节的网络地址和3个字节的主机地址组成(即子网掩码255.0.0.0)
    地址范围由1.0.0.0到126.0.0.0 A类网络有126个,每个网络能容纳1亿多主机
    B:2个字节的网络地址和2个字节的主机地址组成(即子网掩码255.255.0.0)
    地址范围由128.0.0.0到191.255.255.255,B类网络16382个,每个网络可容纳6万多个主机
    C:3个字节网络地址和1个字节主机地址组成(即子网掩码255.255.255.0)
    地址范围由192.0.0.0到233.255.255.255 c类网络209万,每个网络可容纳254个主机
    D:多点广播,Multicast
    E:备用地址

    回环地址127.0.0.1又称本机地址,将自己电脑设为服务器的时候使用

    ARP(地址解析)协议:用于获得目标主机的mac地址
    功能:广播的方式发送数据包,获取目标主机的mac地址
    前提:每台主机的ip都是已知的,即arp可以通过ip地址解析出目标主机的mac地址

    在通信之前,目标主机的ip是一定可以或得的,目标主机的mac是一定拿不到的
    拿到目标主机的ip地址后,arp会封一个包
    源mac:本机mac
    目标mac:12位都为F,FFFFFFFFFFFF
    源ip:本机ip
    目标ip:可以获得

    交换机拿到这个包,一看到12位都是FFFFFFFFFFFF就知道是广播包,
    通过子网掩码可以判断出本机ip和目标ip是否处于同一个局域网内,如果处于同一局域网呢,就广播,目标主机拆包时发现是自己的ip就将mac地址返回给源主机,交换机有mac地址学习功能,会记录下此mac地址与对应端口的联系,
    如果发现不是同一个子网,就会给该子网的网卡发送,目标网卡拿到包后在它的局域网呢广播,目的主机拆包发现是自己的ip就将mac返回给网卡,网卡返回给源主机的网卡,这样就拿到了mac地址,可以进行通信了
    通过网络层的ip协议我们可以定位到目标属于哪一个子网,通过arp协议获得目的主机mac地址,我们就可以找到我们需要通信的主机
    传输层:
    我们要完成的是应用程序到应用程序的通信,故此时找到了计算机,还需要有协议让我们找到应用程序

    TCP/UDP协议
    功能:建立端口到端口的通信
    端口范围:0-65535 其中0-1024为系统占用端口
    uploading-image-375797.png

    TCP 安全,效率低,好人协议,谁发请求都会,客户端不回应继续发请求,syn洪水攻击
    UDP不可靠传输协议,效率高

    #服务端
    import socket
    soc = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#买电话
    soc.bind(("127.0.0.1",8080))#绑卡
    soc.listen(5)#开机,监听
    conn,cliend_addr = soc.accpet()#等待电话连接,阻塞操作,三次握手
    #收发消息
    msg = conn.recv(1024)
    conn.send(msg.upper())
    conn.close()#挂电话
    soc.close()#关机
    
    #客户端
    import socket
    client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    client.connect(("127.0.0.1",8080))#拨电话,地址,三次握手
    client.send("hello".encode("utf-8"))#发信息
    client.recv(1024)#接收信息,会阻塞
    client.close()#关机
    
    
    
  • 相关阅读:
    ExtJs之表格控件入门
    bootstrap错误警告信息提示
    android采用MVP漫画APP、适配刘海屏、小黄车主界面、录音波浪动画、综合APP等源码
    iOS仿QQ侧滑菜单、登录按钮动画、仿斗鱼直播APP、城市选择器、自动布局等源码
    iOS仿抖音节拍界面、Swift,MVVM架构完整项目、日历demo、滚动切换分类等源码
    接住! 安卓巴士开发者大会花絮第二弹来啦
    iOS漂亮的Toolbar动画、仿美团主页、简易笔记本、流失布局、标签分组等源码
    android仿今日头条App、多种漂亮加载效果、选择器汇总、记事本App、Kotlin开发等源码
    到场率高达96% 这才是高水准技术大会应该有的样子
    iOS动画效果集合、 通过摄像头获取心率、仿淘宝滑动样式、瀑布流、分类切换布局等源码
  • 原文地址:https://www.cnblogs.com/robert-zhou/p/10156963.html
Copyright © 2020-2023  润新知