zoukankan      html  css  js  c++  java
  • 网络编程

    import json

    from datetime import datetime ,date

    '''
    TypeError: Object of type datetime is not JSON serializable
    TypeError: Object of type date is not JSON serializable

    '''


    class MyJson(json.JSONEncoder):
    def default(self, o):
    if isinstance(o,datetime):
    return o.strftime('%Y-%m-%d %X')
    if isinstance(o,date):
    return o.strftime('%Y-%m-%d')
    else:
    super().default(self,o)


    res={'c1':datetime.now(),'c2':date.today()}
    print(json.dumps(res,cls=MyJson))

    # {"c1": "2019-04-29 14:43:41", "c2": "2019-04-29"}
    '''
    1.网络编程
    软件开发架构
    c/s架构
    c:客户端
    s:服务端
    b/s架构
    b:浏览器
    s:服务器
    手机端:好像c/s架构比较火,其实不然,微信小程序,支付宝第三方接口
    统一接口!

    pc端:b/s比较火
    本质:b/s其实也是c/s #浏览器也是一个客服端

    服务端:一直不间断提供服务的
    客户端:去服务端体验服务


    学习网络编程》》》 开发cs架构的软件
    并发编程,前端,数据库,框架, 》》》 开发bs架构的软件

    如何实现远程沟通交流?
    电话 电话线
    大屁股电脑 网线
    笔记本电脑 无线网卡

    要想实现远程通信,第一个需要具备的条件就是:物理连接介质 #连接的桥梁

    不同国家的人交流需要有一个公共的语言作为媒介 》》》 英文
    计算机之间想要试想远程交流,只有物理连接介质是不够的 他们也需要一个共同的标准 》》协议

    OSI七层协议(模型)


    应用层
    表示层
    会话层
    传输层
    网络层
    数据连路层
    物理连接层

    需要了解五层
    应用层
    传输层 #TCP UPD port
    网络层 #ip协议
    数据链路层 #mac地址 以太网协议
    物理连接层

    1 物理连接层:
    实现计算机之间物理连接,传输的数据都是010101的二进制
    电信号工作原理:电只有高低电平

    2 数据连路层('以太网协议'):
    1 规定了二进制数据的分组方式
    2 规定只要是介入互联网的计算机,都必须有一快网卡
    网卡上面刻有世界唯一的编号:
    每一块网卡出厂时都被烧制上一个世界上唯一的mac地址
    长度为48位2进制,通常用12位16进制数表示(前六位是厂商编号,后六位是流水号)
    我们网卡上刻有的编号叫电脑的 mac地址

    ----上面的两个规定就是'以太网协议'

    基于以太网协议通信:通信基本靠吼
    弊端:广播风暴

    交换机:如果没有交换机,你的电脑什么都是网卡接口,有交换机之后,所有的电脑只需要有一个网卡连接交换机
    即可实现多台电脑之间物理连接(局域网内)

    3 网络层(IP协议)
    规定了计算机都必须有一个IP地址
    ip地址特点: 点分十进制
    有ipv4 ipv6 为了兼容更多的计算机
    最小ip地址0.0.0.0
    最大255.255.255.255

    IP协议可以跨局域网传输

    ip地址能够唯一标识互联网中独一无二的一台机器!


    4 传输层(端口协议)
    TCP UPD 基于端口工作的协议! #必须先找到那个端口的应用程序(三次握手四次挥手)

    其实计算机之间通信是计算机上面的应用程序之间的通信

    端口(port):唯一标识计算机上面某一个基于网络通信的应用程序
    端口范围:0-65535(动态分配)
    注意:0-1024通常是归操作系统分配的端口号
    通常情况下我们写的软件端口建议起在8000之后

    flask框架默认端口5000
    Django框架默认端口8000
    mysql数据库默认端口3306
    redis数据库默认端口6379

    注意:一台计算机上同一时间一个端口号只能被一个应用程序占用

    小总结:
    IP地址:唯一标识全世界接入互联网的独一无二的机器
    PORT端口号:唯一标识一台计算机上的某一个应用程序
    ip+port: 能够唯一标识全世界独一无二的一台计算机上的某一个应用程序


    补充:
    arp协议:根据ip地址解析mac地址


    应用层(http协议 ftp协议):



    TCP协议(流式协议,可靠协议)
    三次握手四次挥手
    三次握手建联接

    C---------> 发送建立(单项连接通道c——s)连接的请求 ------->------------S
    C-------->< c收到s确认建立连接消息(同时发送请求s-c的单项连接通道) ><---S
    C--------> s收到c确认建立连接消息 ----------------------------->----S


    四次挥手断连接
    c---------> c发现没有请求服务到s 发送请求断开c-s的单项连接通道 >----s
    c---------< s回复c确认断开单项连接的请求 <------------------------s
    中间s依然可以发送服务到c
    c---------< s发现没有服务到c 发送请求断开s-c的单项连接通道 <-------s
    c---------> c回复s确认断开单项连接的请求 >-----------------------s


          


    '''
  • 相关阅读:
    云虚拟化
    yum puppet 并整合控制台
    Centos6.4 openNebula
    ubuntu Server LAmp环境
    openSuSE12.1 zypper LAMP
    yum puppet
    NYOJ 257 郁闷的C小加(一)
    JAVA_SE基础——17.方法的重载
    poj 1390 Blocks (经典区间dp 方块消除)
    HBase数据同步到ElasticSearch的方案
  • 原文地址:https://www.cnblogs.com/lakei/p/10790897.html
Copyright © 2011-2022 走看看