复习之网络编程

‘‘‘学习网络编程   ---开发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,jsonstruct 打包成固定长度

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让所有的线程都结束

原文地址:https://www.cnblogs.com/mcc61/p/10853158.html

时间: 2024-10-31 19:58:42

复习之网络编程的相关文章

Java复习之网络编程

一.IP与InetAddress 都在java.net包中 1. IP地址的使用 2. InetAddress类的使用 getByName() getLocalHost() getHostName() isReachable() 二.URL与URLConnection 1. URL类的作用 2. URLConnection类的作用 三.URLEncoder与URLDecoder 编码和解码操作 四.TCP程序设计 1. Socket与ServerSocket类的作用 2. ECHO程序的开发 3

网络编程——总结

网络编程总复习 1.网络编程 软件开发架构 c/s架构: ? c: 客户端 ? s: 服务端 b/s架构 ? b: 浏览器 ? s: 服务器 服务端:24 H 不间断提供服务 客户端: 需要时找服务器提供服务 网络编程>>>>>>学习cs架构软件 并发编程:前端,数据库,框架>>>>>>开发bs架构软件 实现网络通信的前提:物理连接介质 统一的标准:协议 2.OSI 七层协议 ''' 应用层* 表示层 会话层 传输层* 网络层* 数据

Java网络编程学习A轮_01_目标与基础复习

A. A轮目标 复习网络编程基础知识,重点学习下TCP三次握手四次挥手,以及可能引发的异常情况. 回顾 Socket 编程,好多年没写(chao)过相关代码了. 重学 NIO,以前学的基本忘光了,毕竟从来没在项目中用过. 学习 Netty,了解基本用法,写一个简单项目练手. 扫读 Netty 核心源码,了解其线程模型,重点学习 Netty 如何使用 NIO. 搜罗面试题,查漏补缺. B. 基础知识 参考资料:<Java网络编程 第四版> 网际层(internet layer): 定义了数据位和

Java基础复习笔记系列 九 网络编程

Java基础复习笔记系列之 网络编程 1. 2.

java 网络编程复习(转)

好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html 一.网络编程  通过使用套接字来达到进程间通信目的的编程就是网络编程. 二.网络编程中常见的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定I

网络编程复习

1.socket是什么? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议. 所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的. 也有人将socket说成ip+port,ip是用来标

arpa/inet.h所引起的Segmentation fault及网络编程常见的头文件

最近在学习Linux网络编程方面的知识,感觉还是有些困难.主要是对协议过程的理解,还有socket的API的理解不够深刻.今天复习编写了一个TCP的服务端和客户端的程序实现client.c从命令行参数中获得一个字符串发给服务器,然后接收服务器返回的已处理的字符串并打印. server.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h>

用Netty开发中间件:网络编程基础

用Netty开发中间件:网络编程基础 <Netty权威指南>在网上的评价不是非常高,尤其是第一版,第二版能稍好些?入手后高速翻看了大半本,不免还是想对<Netty权威指南(第二版)>吐槽一下: 前半本的代码排版太糟糕了,简直就是直接打印Word的版式似的. 源代码解析部分的条理性和代码排版好多了,感觉比其它部分的质量高多了. 假设你是刚開始学习的人可能会感觉非常具体,差点儿每部分都会来一套client和服务端的Demo.假设你不是入门者的话可能会感觉水分比較多. 最后一部分高级特性

实验五 Java网络编程及安全

北京电子科技学院 实      验      报      告 课程:移动平台应用开发实践  班级:201592   姓名:曾俊宏  学号:20159210 成绩:___________  指导老师:娄嘉鹏    实验日期 :2015.10.25 实验名称:                          Java 网络编程及安全 实验内容:      1.掌握 Socket程序的编写    2.掌握密码技术的使用    3.设计安全传输系统 我的实验搭档是蔡斌思    http://www.