复习之网络编程

mcc61 mcc61     2022-12-09     484

关键词:

‘‘‘
学习网络编程 ---开发c/s架构的软件
学习并发编程,前端,数据库,框架 ---开发b/s架构的软件
‘‘‘
‘‘‘
七层协议:应表会传网数物
应用层:http/ftp

传输层:tcp,udp
计算机之间的通信是某一个具体的应用程序与另外一个应用程序之间的通信
端口port:唯一标识一台计算机某一个基于网络通信的应用程序 标识的就是应用程序
tcp面向流的协议,udp面向消息的协议
是基于端口工作的,端口范围是0-65535
默认端口MySQL 3306
flask5000
django框架8000
redis数据库默认6379

tcp:三次握手四次挥手
三次握手就是建立连接的过程,客户端向服务端发送请求,服务端回复的时候附上自己的请求,最后客户端回复请求,连接建立
四次挥手是断开连接的过程客户端向服务端发送断开请求,服务端断开请求并回复,然后自己向客户端发送断开的请求,客户端回应断开的请求
--中间服务端不直接回回复的原因是万一自己还有任务没有发送,想起来再次发送,所以断开请求时4次
洪水攻击:服务端大量处于建立连接的状态,来不及处理客户端的消息
星轨:扛得住明星出轨的流量访问次数,就是接收请求的软件很牛逼,多少个客户来都可以承受,就是自己高并发很牛逼
udp 传输数据时候可能会出现丢包现象,但是传输速度快
网络层:ip协议
1.规定了每一台接入互联网的计算机都有唯一的IP地址
2.ip地址特点:点分十进制
IPv4,ipv6
0.0.0.0-255.255.255.255
3.ip协议可以实现跨局域网传输

数据链路层:以太网协议
1.规定了二进制数据的分组方式
2.规定了只要是接入互联网的计算机都必须有一块网卡
每一块网卡出厂都会被烧制上一个世界上唯一的一个mac地址
mac地址是由12位16进制数组成,前6位代表厂商地址,后6位代表的是流水线号
物理连接层:实现计算机之间的物理连接,传输的数据都是0101的二进制。
电信号的工作原理是:电只有高低电频,01代表的就是高低电频

小总结:ip唯一标识一台接入互联网的计算机
port 唯一标识一台计算机上面的某一个应用程序
ip+port 唯一标识一台接入互联网的计算机上面的应用程序
mac地址:规定了接入互联网的计算机都必须有一块网卡,通常由16位12进制组成,前6位是厂商编号,后6位是流水线号



学习完了网络编程基础,就来学习socket套接字,通过这个,我们可以实现基本的网络通信,最后可以自己实现一个c/s软件的开发
了解socket套接字:是处于应用层额和网络层之间的一个抽象的概念,目的就是将下面的硬件通过socket套接字应用与软件上
分为客户端和服务端,导入模块socket,方法accept,recv,send,bind,connect,listen
建立通信,建立连接
通信循环:通信一次结束不好,最好多来几次,所以来个循环
不能只和一个人建立连接,所以得多个连接,来个循环 弊端:一次只可以服务一个人,但是服务端是可以服务多个人的,所以
最好将通信和建立连接分开,各自干各自的活


异常处理:基于tcp实现通信的话,因为tcp是面向流的协议,所以如果输入为空就会报错,所以要进行异常处理


tcp处理问题会出现粘包的问题,所以针对粘包的处理有下面的几个问题
发送端:发送报头,发送字典长度 ,发送真实内容
接收端:接收报头,接收字典长度,解析字典, 收取真实数据
练习:tcp实现大文件上传socket,struct,json
struct 打包成固定长度

tcp和udp的区别
tcp:类似打电话,接不到就会一直呼叫,所以会是一个安全的
udp类似发短信,不管有没有收到都不管

‘‘‘
‘‘‘
并发编程
操作系统的发展史
多道技术:空间上的复用(多个程序公用一套硬件设备,是多道计数实现时间上的复用的基础)
时间上的复用(单个CPU的电脑上启用多个程序,CPU快速切换)
cpu切换:
一个任务占用时间过长/遇到io操作
并发:看起来像是同时运行的就是并发
并行:同一时刻同时运行的就是并行


进程:一个任务就是一个进程,占用内存空间,资源单位
线程:CPU的执行单位
协程:人为提出的可以实现单个协程执行任务不切换,具体操作就是gevent.spwan,自动监测io行为,所有的监测的话导入猴子monky



进程内容:
1.创建进程的两种方式multiprocess.Process
继承类Process
定义方法然后target=任务名

2.join方法:就是让主线程等待子线程结束,将主进程和子进程变成串行,但是子线程还是并发
3.进程对象的其他方法:查看pid,每一个进程都有一个唯一的pid,current_process().pid==porcess().pid/os.getpid()
terminate()主动杀死子进程的操作
is_alive判断子进程是否存活状态
demarn=True 守护进程(子进程守护主进程),必须再子进程启动之前守护
4.互斥锁:保证数据的安全mutex.acquire/release 模拟抢票
5.进程间的通信ipc机制 queue put get get_nowait full empty

生产者消费者模型
生产者:产生数据
消费者:处理数据
解决供需不平衡的问题

进程池:current.future 为了计算机的寿命考虑,自己定义一个进程池固定一次执行多少的任务
current.future pool=Processpoolexature pool.submit(是一个future对象) future.result
回调函数 ---让别的去执行任务
线程内容:
和进程的区别是进程只是开辟了内存空间,并不是一个具体的执行单位,如果要执行的话就得将代码复制一份到内存,就会很耗时间
所以CPU并不执行进程,执行的都是线程
形象理解车间和流水线
进程是车间:提供资源 资源单位
线程是流水线:是CPU最小的执行单位


1.创建线程的两种方式 threading.thread
1.自定义一个类,继承Thread
2.定义方法然后target=任务名

2.线程的join 主线程等待子线程结束
3.守护线程:子线程监测主线程,定时发送消息告诉你主线程的近况,一旦主线程死掉,子线程就不再发送消息,也可以认为此时子线程也死了
但是主线要等到所有的子线程都结束才可以结束
4.线程对象的其他方法 查看线程名

GIL全局解释器锁 与普通锁的区别 死锁 递归锁 信号量(多把锁) event事件一个线程给另一个线程发消息
线程间通信queue 但是线程间信息是共享的

线程池:CPU执行的是线程,不能无限制的开线程,为了节省计算机寿命
current.future pool=threadpoolexature pool.submit(future对象) future.result
回调函数


协程:人为想出来的为了让单个线程下的多个任务不间断执行,实现并发(切换+保存状态)
gevent.spwan spwan是一个拥有返回值的 spawn.join让所有的线程都结束

计算机网络复习之网络层

文章目录数据报与虚电路服务的对比IP协议IP数据报格式IP地址NAT(网络地址转换)子网划分和子网掩码在支持子网划分的因特网中,路由器如何转发IP数据报无分类编制CIDR构成超网RIP协议OSPF协议ARP协议ICMP协议Ping和Tra... 查看详情

计算机网络复习之运输层

文章目录ARQ协议停等式ARQ回退n帧的ARQ(GBN)选择性重传ARQ(SR)UDP协议TCP协议TCP协议的特点TCP报文段首部格式TCP连接管理TCP可靠传输TCP的流量控制TCP拥塞控制参考拥塞:若对网络中某一资源的需求超过了该资... 查看详情

计算机网络复习之应用层

统一资源定位系统(uniformresourcelocator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。现在它已经被万维网联盟编制为互联网标准RFC1738。邮局协... 查看详情

面试复习之计算机网络

真的有被问到的arp协议和rarp协议网络模型OSI的七层模型分别是?各自的功能是什么?自下向上:物理层:底层数据传输,如网线;网卡标准。(比特流)数据链路层:定义数据的基本格式,... 查看详情

面试复习之计算机网络

真的有被问到的arp协议和rarp协议网络模型OSI的七层模型分别是?各自的功能是什么?自下向上:物理层:底层数据传输,如网线;网卡标准。(比特流)数据链路层:定义数据的基本格式,... 查看详情

p1总复习(代码片段)

目录计算机之编程计算机组成原理计算机之操作系统编程语言变量内存管理数据类型用户交互input格式化输出基本运算符流程控制数据类型的内置方法计算机之编程什么是编程语言人与计算机交互的介质什么是编程人通过编程语... 查看详情

2016.6.29计算机网络复习要点第四章之网络层提供的服务

1.网络层提供的两种服务:(1)电信网使用的是虚电路服务:**用面向连接的通信方式,使电信网络能够向用户(实际上就是电话机)提供可靠传输的服务;**当两个计算机进行通信时,也应当先建立连接(但在分组交换中是建... 查看详情

2万字全面总结计网之网络层,建议考前通读复习(代码片段)

第四章网络层第四章网络层4.1网络层概述4.2网络层提供的两种服务面向连接的虚电路服务无连接的数据报服务4.3IPv4地址4.3.1概述4.3.2分类编址A类B类C类其他总结规律4.3.3划分子网例题4.3.4无分类编址CIDR(无分类编址)路由... 查看详情

struts2知识复习之三

Struts2的MVC思想以及面向AOP切面编程1MVC简单概述:MModel(业务逻辑模型,service层,dao层)VView(视图,html,css,js页面)CController(前端控制器,servlet,jsp,action)2Struts2MVC的流程:客户端发送请求,struts2核心过滤器filter进行拦截处理后传递到... 查看详情

听首歌的时间,简单复习下python网络编程之socket,美不美?滚雪球学python第4季14篇(代码片段)

在python中有两个不同层级的网络编程API,分别如下所示:基于socket的网络编程,较低层,采用TCP/UDP协议;基于url的网络编程,较高层,采用HTTP/HTTPS协议。如果想要系统的研究网络知识,需要掌握的... 查看详情

struts2知识复习之四

Struts2的拦截器1需求概述在CRM系统中,有用户登录功能,如果访问者知道后台的访问页面路径,可以没有登录直接进入CRM系统,所以要对没有登录的用户要进行拦截。2拦截器(1)概述*在AOP(aspect-orientedprogaramming)面向切面编程中用于... 查看详情

计算机网络复习之网络层

文章目录数据报与虚电路服务的对比IP协议IP数据报格式IP地址NAT(网络地址转换)子网划分和子网掩码在支持子网划分的因特网中,路由器如何转发IP数据报无分类编制CIDR构成超网RIP协议OSPF协议ARP协议ICMP协议Ping和Tra... 查看详情

大数据面试之linux复习(代码片段)

1.常用的高级命令 top 实时显示系统的运行状态(类似于windows中的任务管理器) iotop 监视磁盘I/O状态 ps-ef 显示当前系统进程状态信息-e:表示列出全部的进程-f:显示全部的列(显示全字段) df-h显示磁盘空间使用... 查看详情

第一阶段复习(代码片段)

目录总复习计算机之编程什么是编程语言什么是编程为什么要编程计算机组成原理计算机五大组成CPU内存外存输入设备输出设备I/O设备32位和64位32位64位多核CPU硬盘工作原理机械硬盘工作原理固态硬盘工作原理计算机操作系统文... 查看详情

计算机网络复习之运输层

文章目录ARQ协议停等式ARQ回退n帧的ARQ(GBN)选择性重传ARQ(SR)UDP协议TCP协议TCP协议的特点TCP报文段首部格式TCP连接管理TCP可靠传输TCP的流量控制TCP拥塞控制参考拥塞:若对网络中某一资源的需求超过了该资... 查看详情

osi七层协议(网络工作过程--复习)

(1)网络层由于网络媒体只能传送0与1这种位串,因此物理层必须定义所使用的媒体设备之电压与讯号等,同时还必须了解数据讯框转成位串的编码方式,最后连接实体媒体并传送/接收位串。(2)数据链结层这一层是比较特殊... 查看详情

计算机网络之运输层考前复习详细总结

第五章运输层5.1运输层概述复用和分用端口UDP和TCP的对比5.2用户数据报协议UDPUDP的特点UDP首部5.3可靠传输的工作原理停止等待协议无差错情况出现差错确认丢失和确认迟到信道利用率连续ARQ协议和滑动窗口协议5.4传输控制协议TCP... 查看详情

申论(基础篇)之基础常识复习建议

一、历史常识复习建议(1~3题)  以历史人物为中心学习相关的历史事实、常识。    二、地理知识复习建议(1~3题)  1、自转和公转    2、中国三级阶梯    3、五种基本地形    4、地貌  三、历史... 查看详情