zoukankan      html  css  js  c++  java
  • Pyhton学习——Day30

    # 内核态
    # 用户态
    # 操作系统的运行是在BOIS启动盘读取代码,从硬盘读取到内存中,被操作系统的内核中,一直存在在内存中
    # 计算机系统的三层结构:应用软件-->操作系统-->硬件
    # 一般应用程序是放在用户态内存中,操作系统一般是放在内核态内存中。
    # Socket套接字需要两台及以上物理机做交互的过程,就是需要用户态内存和内核态内存的交互,
    # 发消息就是用户态内存1-->内核态内存1(缓存)-->物理介质1-->物理介质2-->内核态内存2(缓存)-->用户态内存2
    # 当自己端的内核态缓存区无信息接收时,会卡在recv处,导致客户端和服务端都卡住
    ############################################################################################################
    # 基于TCP的套接字
    # 服务端格式
    # import socket #导入socket模块
    # Sever = socket() #实例化一个套接字对象,创建服务器套接字 Sever = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    # Sever.bind() #绑定IP地址和端口号 Server.bind(ip_port)
    # Sever.listen() #创建监听链接数 Server.listen(back_log) #半连接池,调试时还要测试
    # inf_loop: #服务器内部的大循环
    # cs = Sever.accept() #创建接收客户端链接数
    # coom_loop: #通讯循环
    # cs.recv() #对话接收
    # ce.send() #对话发送
    # cs.close() #关闭客户端套接字
    # Sever.close() #关闭服务器端套接字
    #——————————————————————————————————————————————————————#
    # 客户端格式
    # cs = socket() # 创建客户套接字
    # cs.connect() # 尝试连接服务器
    # comm_loop: # 通讯循环
    # cs.send()/cs.recv() # 对话(发送/接收)
    # cs.close() # 关闭客户套接字
    #——————————————————————————————————————————————————————#
    # 运维需要了解
    # 发现系统存在大量TIME_WAIT状态的连接,通过调整linux内核参数解决,
    # vi / etc / sysctl.conf
    # 编辑文件,加入以下内容:
    # net.ipv4.tcp_syncookies = 1
    # net.ipv4.tcp_tw_reuse = 1
    # net.ipv4.tcp_tw_recycle = 1
    # net.ipv4.tcp_fin_timeout = 30
    # 然后执行 / sbin / sysctl - p
    # 让参数生效。
    # net.ipv4.tcp_syncookies = 1
    # 表示开启SYN
    # Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
    # net.ipv4.tcp_tw_reuse = 1
    # 表示开启重用。允许将TIME - WAIT
    # sockets重新用于新的TCP连接,默认为0,表示关闭;
    # net.ipv4.tcp_tw_recycle = 1
    # 表示开启TCP连接中TIME - WAIT
    # sockets的快速回收,默认为0,表示关闭。
    # net.ipv4.tcp_fin_timeout
    # 修改系統默认的
    # TIMEOUT
    # 时间
    # 转载自:http://www.cnblogs.com/linhaifeng/articles/6129246.html#_label7
    #——————————————————————————————————————————————————————#
    # 基于UDP的套接字
    # udp服务端
    # ss = socket() #创建一个服务器的套接字
    # ss.bind() #绑定服务器套接字 [UDP不用listen]
    # inf_loop: #服务器无限循环
    # cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)
    # ss.close() # 关闭服务器套接字
    #——————————————————————————————————————————————————————#
    # udp客户端
    # cs = socket() # 创建客户套接字
    # comm_loop: # 通讯循环
    # cs.sendto()/cs.recvfrom() # 对话(发送/接收)
    # cs.close() # 关闭客户套接字
    #——————————————————————————————————————————————————————#
    # TCP和UDP接收时都是从缓存区拿,TCP的recv在自己这端的缓冲区为空时,阻塞;
    # UDP的recvfrom在自己这端的缓冲区为空时,返回一个空值,UDP表面上可以接收空值
    # UDP由于没有链接,所以可以实现并发的效果
    Win a contest, win a challenge
  • 相关阅读:
    prometheus对硬盘的监控指标
    zabbix高级用法-Zabbix Tags获取到对应的触发器的核心代码段
    Confluence rest api接口
    zabbix官方模板库
    路由追踪程序Traceroute分析与科普
    C语言进制之间转换
    ubuntu挂载目录在windows10下权限问题
    C语言之原码、反码和补码
    centos下软件的安装与卸载
    PHP设计模式
  • 原文地址:https://www.cnblogs.com/pandaboy1123/p/8533351.html
Copyright © 2011-2022 走看看