网络编程一

1.重写json.JSONEncoder

    import json
   from datetime import datetime
   #重写default方法实现json.dumps能够序列化json不支持的对象(用if判断将不支持的类型转为字符串类型)

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

   print(json.dumps(datetime.now(), cls=MyJson))

2.网络编程

 '''
软件开发架构
c/s架构
c:客户端
s:服务端
b/s架构
b:浏览器
s:服务器
手机端:好像C/S架构比较火,其实否则,微信小程序,支付宝第三方接口
统一接口!
pc端:b/s比较火
本质:b/s其实也是c/s

服务端:24小时不间断提供服务,谁来我就服务谁
客户端:想体验服务的时候,就去找服务端体验服务



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

起源于:美国军事!!!
想实现远程数据传输

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

要想实现远程通讯,第一个须要具有的条件就是:物理链接介质

不一样国家的人交流须要有一个公共的语言做为媒介 >>> 英文
计算机于计算机要想实现远程通讯,光有物理链接介质是不够,
他们也须要一个共同的标准 >>> 协议

OSI七层协议(模型)!
应用层
表示层
会话层
传输层
网络层
数据链路层
物理链接层

咱们只须要了解五层
应用层
传输层
网络层
数据链路层
物理链接层

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

2.数据链路层("以太网协议"!):
1.规定了二进制数据的分组方式
2.规定了只要是接入物联网的计算机,都必须有一块网卡!
网卡上面刻有世界惟一的编号:
每块网卡出厂时都被烧制上一个世界惟一的mac地址,
长度为48位2进制,一般由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
咱们管网卡上刻有的编号叫电脑的>>>mac地址
----->上面的两个规定其实就是 "以太网协议"!

基于以太网协议通讯:通讯基本靠吼(广播)!!!以太网协议没法跨局域网,各局域网链接要利用路由器。
弊端:广播风暴(若是每台计算机都吼,产生的数据量没法想象)
  

交换机:若是没有交换机,你的电脑就变成了马蜂窝,有了交换机以后,全部的电脑只须要有一个网卡链接交换机
便可实现多台电脑之间物理链接


3.网络层(IP协议)
规定了计算机都必须有一个ip地址
ip地址特色:点分十进制
有两个版本ipv4和ipv6 为了可以兼容更多的计算机
最小:0.0.0.0    
最大:255.255.255.255
IP协议能够跨局域网传输

ip地址可以惟一标识互联网中独一无二的一台机器!



4.传输层(端口协议)
TCP,UDP基于端口工做的协议!
其实计算机之间通讯实际上是计算机上面的应用程序与应用程序之间的通讯
端口(port):惟一标识一台计算机上某一个基于网络通讯的应用程序
端口范围:0~65535(动态分配)
注意:0~1023一般是归操做系统分配的端口号
一般状况下,咱们写的软件端口号建议起在8000以后
flask框架默认端口5000
django框架默认端口8000
mysql数据库默认端口3306
redis数据库默认端口6379
注意:一台计算机上同一时间一个端口号只能被一个应用程序占用

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

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


应用层(HTTP协议,FTP协议):



TCP协议(流式协议,可靠协议)
     #TCP协议可靠的缘由是:给对方发消息,对方必须回复确认收到,传输的数据才会被删除(删除前均缓存在内存中),
      不然会在必定时间内反复发送,直到对方接收或者超时
三次握手四次挥手:客户端与服务端是双向链接的(Client:客户端, Server:服务端)
三次握手建链接:第一次握手是客户端请求链接服务端,
               第二次握手是服务端赞成客户端链接并请求链接客户端(赞成客户端链接请求、请求链接客户端,两步并作一次握手),
               第三次握手是客户端赞成服务端链接(固然握手时能够不一样意链接请求,此时就会结束握手)
       

四次挥手断链接:第一次挥手是客户端请求断开链接,
               第二次挥手是服务端赞成客户端的断开请求,
               第三次挥手是服务端请求断开链接, (第二次与第三次挥手没法同握手同样并作一步,由于断开链接时双方都须要确认是否还有数据须要发送)
               第四次挥手是客户端赞成服务端的断开请求
       
       #SYN洪水攻击:利用服务端的SYN_RCVD,让大量客户端去请求链接服务端,使服务端大量处于链接请求的状态,直到服务端崩溃。
     
   星轨:明星出轨,一个高并发级别的量词,好比说微博由于明星出轨就会有大量客户端访问,这时候就很考验一个服务端的高并发能力。
'''
相关文章
相关标签/搜索