网络编程

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


      


'''
posted @ 2019-04-29 15:59  读自己  阅读(204)  评论(0编辑  收藏  举报