python 网络并发编程前言

内容概要

  • 软件开发架构
  • 网络理论前戏
  • OSI七层协议(五层)
    • 以太网协议、IP协议、port协议、arp协议
    • 交换机、路由器、局域网、广域网
  • TCP协议
    • 三次握手 与四次挥手
  • UDP协议

内容详细

软件开发架构

        c/s架构
            c:client   	客户端
            s:server   	服务端
        """
        将客户端看成是去店里消费客人
        将服务端看成是提供服务的店面
            eg:手机各种app其实就是各大软件的客户端

        服务端需要具备的三大特征
            1.24小时不间断提供服务(24小时监听)
            2.固定的地址(IP地址)
            3.能够服务多个用户(高并发)
        """


        b/s架构
            b:browser	浏览器
            s:server	服务器
        """
        浏览器统一充当各个服务端的客户端
        本质:bs架构本质上也是cs架构
        """

        统一:各大互联网巨头正在做的事情
            eg:
                微信小程序(微信提供开发微信小程序的软件)
                支付宝小程序(各种程序接口)

        # 总结
            网络编程学习完就可以开发cs架构的软件(简易版本)
            并发编程、前端、数据库、后端框架就可以开发bs架构软件(任何类型的软件)

网络编程前戏

        网络编程其实研究的就是程序之间的数据通信

        由来:
            基于远程传输数据的技术最早诞生于美国军方(前沿技术通常都是由军事产生)


        远程数据传输发展史(民用)
            1.有线电话		电话线互联
            2.无线电话		信号发射器
            3.大屁股电脑	网线
            4.笔记本电脑	网卡
            ...
        """
        要想实现远程数据交互的前提是必须要有物理连接介质
        """

        除了有物理连接介质之外还应该有一些能够保证数据彼此无障碍交互的东西(标准)
            OSI七层协议

OSI七层协议

        # 所有的计算机都必须要有这七层
        应用层
        表示层
        会话层
        传输层
        网络层
        数据链路层
        物理连接层

        # 开发层面可以归纳为五层
        应用层
        传输层
        网络层
        数据链路层
        物理连接层


        """
        从下往上研究

        1.物理连接层
            提供一个物理连接接口(网线口 无线网卡)
			
        2.数据链路层
            1.规定了电信号的分组方式
            2.以太网协议
                规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数字
                12位16进制数 
                    前六位:产商编号
                    后六位:流水线号
		上述的数字也称之为计算机的mac地址(类似于身份证号)
        """

常见硬件

        交换机:能够使接入该机器的所有计算机之间彼此互联
        局域网:有交换机组成的网络
        互联网:可以简单的理解为是多个局域网之间彼此互联
        """
        基于mac地址的数据传输
            1.广播风暴
            2.mac地址不能跨局域网传输
        """
        路由器:能够连接多个局域网并实现局域网之间的数据传输

image

网络层

        IP协议:规定了接入互联网的计算机都必须有一个IP地址用于唯一标识
            IPV4版本
                最小	0.0.0.0
                最大  255.255.255.255
            IPV6版本
                能够表示出地球上每一粒沙子

        # IP地址能够唯一标识接入互联网的一台独一无二的计算机
        公网IP与私网IP
            公网IP需要花钱购买并申请
            私网IP自带的但是无法直接基于互联网访问
        """
        arp协议
            将IP地址转换成mac地址(基于网络请求)
        """

传输层

        TCP协议  UDP协议  

        端口协议
            范围:0~65535
            特性:动态分配
                eg:第一次运行微信 系统随机取一个端口号2022
                   然后关闭微信重新启动 系统随机取一个端口号
            端口号基本使用
                0~1024系统默认需要使用的端口号
                1024~8000常见软件端口号
                建议以后开发的软件最后使用8000之后的端口号

        # 端口号(port):能够唯一标识一台计算机上面正在运行的一款应用程序
        """
        端口号在同一台计算机同一时刻不能重复
        """


        总结
            ip+port   127.0.0.1:8080
        """
        能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序
        """

TCP协议

        流式协议 可靠协议

        三次握手	建立链接
        重要状态
                listen监听态:等待对方发请求
                syn_rcvd态:忙于恢复确认建立请求
            # 洪水攻击:服务端在同一时间接收到了大量的要求建立链接的请求

        四次挥手	断开链接
            不能合并成三次

        """该类知识需要花时间研究"""

image

UDP协议

        不可靠协议

        数据发送没有通道的概念 发送出去了就不管了

        """
        TCP协议相当于打电话 你一句我一句 你侬我侬
        UDP协议相当于发短信 发了就完事 管你看不看
        """
        早期的QQ使用的就是UDP

应用层

        都是人为自定义的协议标准 可遵循可不遵循
        HTTP协议 FTP协议 ...
posted @ 2022-01-11 21:23  风花雪月*  阅读(33)  评论(0编辑  收藏  举报