TCP 三次握手: SYN  -->  SYN+ACK  -->  ACK

四次挥手:  FIN --> ACK (FIN)  --> ACK

TCP十种状态: LISTEN  SYN_SENT  SYN_RECV  ESTABLISHED  FIN_WAIT1 FIN_WAIT2  CLOSE_WAIT  LAST_ACK  TIME_WAIT  CLOSED

MSL: 报文最大生存时间

4次握手完成连接的关闭,主动关闭连接一方在第3次握手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。

TCP服务器模型 实现的几种方式:  单进程非堵塞: 用 select.setblocking() 把套接字变成非堵塞类型.

用 select 实现 select.select() 可以用轮询的方式去询问哪些套接字有任务.(收发数据,异常)

epoll  : select.epoll() 时间通知机制,效率极大提升

协程 : python 里面的协程模块 greenlet 类似于线程但不等于线程,需要用 greenlet.switch() 手动切换调用协程.

如果想自动切换,那就要用 gevent : gevent把耗时的东西(函数,类) 都重写了一遍.所以只能用它里边的东西才能实现遇到耗时操作时自动切换协程 如 gevent.socket()  ,  gevent.sleep()  , 创建协程 用 gevent.spawn() ,执行协程代码前需要加上一句 gevent.monkey.patch_all() 它会修改代码,重新编译,使得协程像线程一样可以操作.只不过是遇到耗时操作来回切换而已.

python__系统 : socket_TCP补充,协程的更多相关文章

  1. python__系统 : socket_TCP相关

    tcp和udp对比起来.还是tcp相对稳定一些,但是因为有三次挥手和四次握手,以及确认包(ack)的存在,可能在速度上会比udp慢. 用python的socket模块可以建立tcp服务端: from ...

  2. Golang协程实现流量统计系统(1)

    # 学习内容: # 学习目标: 学习Golang的基础开发 常用的Golang编程技艺 精巧省力的Go Lib 协程的真实应用实践 与其他语言对比着学 协程并发模型的深度应用 Growth hacki ...

  3. python协程与异步I/O

    协程 首先要明确,线程和进程都是系统帮咱们开辟的,不管是thread还是process他内部都是调用的系统的API,而对于协程来说它和系统毫无关系; 协程不同于线程的是,线程是抢占式的调度,而协程是协 ...

  4. Python黑魔法 --- 异步IO( asyncio) 协程

    python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程.无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态 ...

  5. (转)Python黑魔法 --- 异步IO( asyncio) 协程

    转自:http://www.jianshu.com/p/b5e347b3a17c?from=timeline Python黑魔法 --- 异步IO( asyncio) 协程 作者 人世间 关注 201 ...

  6. lua编程之协程介绍

    一,lua协程简介 协程(coroutine),意思就是协作的例程,最早由Melvin Conway在1963年提出并实现.跟主流程序语言中的线程不一样,线程属于侵入式组件,线程实现的系统称之为抢占式 ...

  7. python中的协程并发

    python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程.无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态 ...

  8. python 异步IO(syncio) 协程

    python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程.无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态 ...

  9. python基础-第九篇-9.1初了解Python线程、进程、协程

    了解相关概念之前,我们先来看一张图 进程: 优点:同时利用多个cpu,能够同时进行多个操作 缺点:耗费资源(重新开辟内存空间) 线程: 优点:共享内存,IO操作时候,创造并发操作 缺点:抢占资源 通过 ...

随机推荐

  1. 实现Callable的对象中,用@Autowired注入别的对象失败

    场景是这样: 我需要在一个实现类A中写一个拿到返回值的多线程,于是用的Callable,在这个实现类A外我又写了一个专门实现Callable的实现类B,在B中用spring注解@Autowired注入 ...

  2. css3之图形绘制

    由于近期的项目中出现了不规则的边框和图形, 所以重新温习一下CSS3的图形绘制...样式绘制的图形比图片的性能要好,体验更佳,关键一点是更加有趣! 以下几个例子主要是运用了css3中border.bo ...

  3. 在Centos7中安装Docker并实例化Mysql

    首先 本文是一篇安装流程,从初始的Centos7安装Docker后实例化一个Mysql的整个流程,其中会包含一些需要注意的疑点和坑. 实例化的Mysql是将数据和配置保存在宿主机. 注意,在安装Doc ...

  4. viewport信息设置

  5. HBuilder中改造console.info

    HBuilder的js中console.info只会输出头一个参数,与谷歌浏览器行为不符合.让人很不习惯. 于是,对其改造一番. window.console.print=window.console ...

  6. Apache common-io AutoCloseInputStream 分析

    Apache common-io 包是常用的工具包,他提供了对IO操作的一些封装.首先看一下input包下的 AutoCloseInputStream 类 1: * This class is typ ...

  7. Redis 基础概念和命令

    Redis 是什么 Redis是一种基于键值对(key-value)的NoSQL数据库. 为什么使用Redis 速度快 Redis的时间颗粒度一般是微秒,慢查询的默认值是10 000微秒,即10毫秒. ...

  8. Arduino-串口函数Serial

    串口是Arduino与其它设备进行通信的接口,我们需要很好的掌握它的使用.Arduino串口使用相关的函数共有10个(随着版本的升级,新版本加入了更多,具体请参见官网:http://www.ardui ...

  9. IOS 自定义Operation(下载功能)

    一个下载操作就交给一个HMDownloadOperation对象 HMDownloadOperation.h / .m @class HMDownloadOperation; @protocol HM ...

  10. vuejs作用域插槽

    作用域插槽 <div id='root'> <child> <template slot-scope='props'> <h1>{{props.item ...