灵虚御风
醉饮千觞不知愁,忘川来生空余恨!

导航

 

复习

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操作才应该切换 这才能提高效率
posted on 2019-05-30 16:25  没有如果,只看将来  阅读(136)  评论(0编辑  收藏  举报