zoukankan      html  css  js  c++  java
  • Python33 1.UDP协议 2.与TCP区别 3.DNS服务器 4.进程----进入并发编程的学习 5.操作系统 6.多道技术

    复习

    1.半连接数

    2.粘包问题

    3.自定义报头

     

    详解:

    1.半连接数:指的是没有完成的链接

    1.1原因:1.1.1客户端恶意攻击,只进行了两次握手,导致服务器处于等待状态

                    1.1.2有大量的客户同时访问(高并发)服务器处理不过来

    1.2listen()函数中可以指定最大的半连接数量,

                             1.2.1超出这个数量将会被拒绝

                             1.2.2处于半连接状态的链接,超时后会被丢弃

    2.粘包问题:----------网络编程重点

    2.1异常出现位置:

               粘包问题只出现在TCP协议中,   因为    TCP是流式协议,数据间没有明显分隔     

    2.2.之所以出现粘包 ,常见两种情况:

                2.2.1.把时间间隔短的,数据量小的数据,一次性发送(TCP的优化机制)

                2.2.2.数据已经送达,接受多了或者少了 都会粘包

    本质原因:接收方不清楚数据长度

    解决方案:提前告知接收方数据长度

    2.3具体架构分析:

       发送方

        1.发送数据长度

           长度信息也会粘包,所以一定要确保每一次发送的数据信息的长度,  所占的字节是固定的

           例如:8或4   q转为8字节  (c中longlong)i转为4字节(c中的int)

          struct模块就可以把一个python的数据类型转换为二进制字符串,并且字节数固定  

        2.发送真实数据

          接收方

           1.先接受长度

           2. 再接收真实数据

    3.自定义报头

            不仅要 传输数据过去 可能还需要额外传输一些信息,

            例如:文件名称,大小 md5 等等....

    概念:报头就是传输前,先传输的一个信息 通常用json

             本质     就是多传输json数据

             发送:

             1.先发json数据的长度

             2.在发送json(报头)数据

             3.在发送真实数 也会粘包 就是要把长度放到报头中

    注:1.json也可以传输二进制,    但是json 的本质是字符串     所以必须把二进制转为字符串,接收方把字符串转换为二进制

           2.base64是网络上最常用的用于传输8Bit字节码的编码方式之一,base64就是一种基于64可打印来表示二进制数据的方法

            接收:

    、      1.先接收报头长度

              2.收报头

              3.真实数据

         

         

     今日内容

    1.UDP协议

    2.与TCP区别

    3.DNS服务器

    4.进程----进入并发编程的学习

    5.操作系统

    6.多道技术

    详情:

    1.UDP协议---用户数据报协议

    什么是UDP协议?

           用户数据包协议

           OSI模型中 属于传输层的协议, 仅用于不要求可靠性,不要求分组顺序且数据量较小的简单传输,力求快,

    如何使用?

           通讯流程类似对讲机 只管发送不管对方是否接受到 甚至不关心对方在不在

    1.买对讲机
    2.固定频道
    3.收发数据

    1.买个对讲机
    2.指定发送的频道
    3.收发数据

    2.与TCP区别

    代码:

    不可靠传输
    不需要建立连接
    不会粘包
    单次数据包不能太大

        服务器:

    服务器不需要监听 listen
    不需要接收请求 accept
    收数据 recvfrom(缓冲区大小)
    发数据 sendto(数据,地址)

        客户端

        不需要建立连接

        收数据 recvfrom(缓冲区大小)

        发数据 sendto(数据,地址)

    3.DNS服务器---全称:域名 解析服务器(DNS--Domain Name System)

    DNS是干什么的?

          将域名转换为IP地址 要连接服务器 一定的知道IP

    为什么需要DNS?

        单独ip不方便记忆 所以我们吧ip和一个域名绑定到一起 域名一串有规律的字符串 www.baidu.com

    DNS 是CS结构的server端
    DNS 使用的是UDP 协议 因为 传输的数据小 但对速度要求高 一个DNS要服务很多计算机

    http:// news.cctv.com /2019/05/29/ARTIXRqlqFBp59eECweiXTUU190529.shtml
    协议名称 域名 文件路径

    DNS 本质就是一个数据库 里面就存储 域名和ip的对应关系
    news.cctv.com
    .com 顶级域名
    cctv 二级域名
    news 三级域名

    <<<<<<<<<<<<<<<<<网络编程结束>>>>>>>>>>>>>>>>>>>>>>>>

    <<<<<<<<<<<<<<<<<并发编程开始>>>>>>>>>>>>>>>>>>>>>>>>

    4.进程----进入并发编程的学习

                正在运行的系统,是一种抽象概念,进程 来自于操作系统,没有操作系统就没有进程

    5.操作系统

    操作系统是什么?
    ​ 也是一套软件 ,

    ​ 主要功能
    1.控制硬件,隐藏丑陋复杂的硬件细节
    2.将无序的硬件竞争变得有序

    6.多道技术

    多道技术:为了提高计算机的利用率
    1.空间复用 把内存分割为不同区域 ,每个区域装入不同的程序
    2.时间复用 当一个程序执行IO操作时,切换到另一个程序来执行
    光切换还不行 必须在切换前保存当前的状态 以便与恢复执行

    当内存中有多个程序时,必须保证数据是安全的
    每个进程之间的内存区域是相互隔离的,而且是物理层面的隔离

    有了多道技术
    计算机就可以在同一时间处理多个任务(看着像 由于计算远比人块 所以感觉同时执行了)

    注意:并不是多道就一定提高了效率
    如果多个任务都是纯计算 那么切换反而降低了效率
    遇到IO操作才应该切换 这才能提高效率
  • 相关阅读:
    c# Array或List有个很实用的ForEach方法,可以直接传入一个方法对集合中元素操作
    js 检查字符串中是否包含中文(正则)
    Js 数组对象排序
    Js日期处理
    JS 检测字符串是否还有某个字符
    js获取URL传参
    使用JavaScript修改浏览器URL地址栏的实现代码
    上传、裁剪图片-----Jcrop图片裁剪插件
    zip拉链方法
    内置函数如help()...
  • 原文地址:https://www.cnblogs.com/llx--20190411/p/10950309.html
Copyright © 2011-2022 走看看