今日内容:

网络编程:
 软件开发结构
  1,C/S 架构
   s:  server 服务端
   c:  client 客户端
   客户端:就是指客户端的应用程序,什么时候需要服务就去享受自己喜欢的服务
   服务端:就是24小时都等待为别人服务或者都提供服务的一端
  2,B/S  架构
   s:server 服务器
   b:browser 浏览器,也是一种客户端,只是这个客户端不需要大家去安装什么应用程序,
    只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),
    客户端Browser浏览器就能进行增删改查。
  ps:微信支付宝都在做同一件事:同一接口
  学习网络编程的目的,就是可以开发一个城市架构的软件
 计算机之间为了更好的通信和更多的计算机进行链接数据交流,
  就必须有一套公共的标准协议,才能使对方读懂你发的数据,或使更多的计算机去读取操作数据,
   此时就必须要有一个公共的标准协议,即OSI协议,此协议只是其中一种
   
  OSI 协议
   应用层
   表示层
   会话层
   传输层
   网络层
   数据链路层
   物理连接层
   
   1,物理连接层:网线,网卡,光缆....
     就是传输高低电信号,即0110的一堆二进制数据
   2,数据链路层:
    1,规定电信号的分组方式
    2,规定任何计算机都有一块网卡,这个网卡上面刻有世界上独一无二的编号
     mac地址由12位16进制数  前6位是厂商编号  后6位是流水线编号
    ps:以上两点合称为“以太网协议”
    
    交换机:就是基于以太网协议通信,不能跨局域网通信
    互联网:就是N多个局域网彼此之间连接而成
   3,网络层
    ip协议
    规定了只要是接入互联网的计算机都必须有一个IP地址
    ip地址特点:点分十进制
    ip地址最小:0.0.0.0
    ip地址最大:255.255.255.255
    ip地址目前有两个版本:IPV4 IPV6(由于IPV4已经不够表示目前存在的计算机了 所以推出了IPV6版本)
    IP地址是动态分配的
   4,传输层 
    TCP\UDP都是基于端口工作的协议
    端口(port) 
    
    计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
    
    端口:用来唯一标识一台计算机上的某个应用程序
     端口号的范围:0~65535
     注意:0~1024这些都是操作系统默认使用的端口号
     建议:使用8000之后的端口
     MySQL默认端口:3306
     Redis默认端口:6379
     django默认端口:8000
     flask默认端口:5000
     
     端口号是动态分配的
      第一次起qq分配到的是8989
      将qq关闭再次启动端口号可能就变了
      
    TCP协议 :又称流式协议,或者可靠协议
      基于TCP协议通信 必选先建立双向通道
     三次握手四次挥手

客户端向服务端发送请求,这是第一次握手,在此之前客户端一直处于监听状态
      服务端收到请求后给客户端回应,并将与之相对应的信息一起发生给客户端,第二次握手

客户端收到数据消息时,必须再给服务端发送接收成功的消息,即服务端需要接收到确认消息,第三次握手成功!建立链接
四次挥手,断链接
客户端(或服务端)向服务端发出请求     第一次挥手
服务端收到请求后给客户端发送收到请求的确认信息, 第二次挥手
由于客户端可能存在没有把数据接收完整,服务器还没有完全把数据都发送给客户端,等服务端把数据处理完成发送给客户端,第三次挥手
客户端再收到服务端的断链接消息后再把断链接消息要发送给服务端,就是服务端确认消息,断开链接,第四次挥手
但服务器收不到客户端发送的收到信息时,在一定时间内会等待,一定时间的再次发送数据,直到时间结束,确定客户端退了或挂了,才会将 
与之相关的数据进行清除,断开。

  PS: IP 地址:是唯一标识接入互联网的一台计算机
   port端口:用来唯一标识一台计算机上应用程序
   ip+port:就是唯一标识互联网一台计算机上的某个应用程序
   
   应用层:协议有HTTP协议 FTP协议
   
  知识点补充:
   时间类型不能直接用json转化为字符串,会报错,必须自己手动转
   import json
   from datetime import datetime,date
#print(datetime.today())  年月日 时分秒
   # print(date.today())      年月日
    
    #isinstance 判断一个对象是否是某个类的实例
    #issubclass 判断一个类是否是某一个类的子类 或子孙类
    
   class MyJson(json.JSONEncoder):
    def default(self, o):
     if isinstance(o,datetime):
      return o.strftime('%Y-%m-%d %X')
     elif isinstance(o,date):
      return o.strftime('%Y-%m-%d')
     else:
      return super().default(self,o)
#调用了super(),父类中有default()这个方法
      但是由于我自己定义了,所以优先查找自己的属性方法
      即对父类中的default()方法进行了拦截
      从而也证明了优先查找自己属性,再去查找父类,内置,
      
   res = {'c1':datetime.today(),'c2':date.today()}
   print(json.dumps(res,cls=MyJson))

转载于:https://www.cnblogs.com/Fzhiyuan/p/11312104.html

1网络编程OSI协议相关推荐

  1. (转)C#网络编程(订立协议和发送文件) - Part.4

    源码下载:http://www.tracefact.net/SourceCode/Network-Part4.rar C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用 ...

  2. windows网络编程——telnet协议

     1.windows网络编程--telnet协议 Telnet是最老的Internet应用,起源于1969年的ARPANET,名字是"电信网络协议(TelecommuicationNetwo ...

  3. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver

    今日内容:socket网络编程     1.OSI七层协议     2.基于tcp协议的套接字通信     3.模拟ssh远程执行命令     4.tcp的粘包问题及解决方案     5.基于udp协 ...

  4. Python30 网络编程通讯协议,1.学习网络编程的目的 2.什么是互联网 3.c/s结构 4.通讯基本要素 5.OSI模型...

    今日内容: 网络通讯协议 1.学习网络编程的目的 2.什么是互联网 3.c/s结构 4.通讯基本要素 5.OSI模型 思维路线 目的是要链接互联网中的其他计算机 物理层 用物理介质链接其他计算机 数据 ...

  5. 网络编程——常用协议解析

    ** 1.网络基础知识 ** 1.1> 什么是OSI模型 OSI 模型(Open System Interconnection model)是一个由国际标准化组织?提出的概念模型,试图?供一个使 ...

  6. Python网络编程(OSI Socket)

    文章目录 一.软件开发架构 二.网络编程简介 三.OSI七层协议 五.网络相关名词 八.Socket套接字 九.半连接池 十.黏包问题 一.软件开发架构 什么是软件开发架构?编写项目前需要遵循代码层面 ...

  7. JAVA零学习之基础归纳(十八)--网络编程、协议、IP、基本API、URL、socket等

    [Java程序可以非常方便的访问互联网上的 HTTP服务.FTP服务等,并可以直接取得互联网上的远程资源,还可以向远程资源发送 GET.POST请求] 一.网络编程 1.1 网络概念和分类 所谓计算机 ...

  8. 第三十三篇,网络编程TCP协议通讯过程实现和函数接口

    网络编程知识点概览 ========================================    1.核心知识点        传输层的两个重要协议             tcp协议:   ...

  9. 网络编程01-TCP协议(详)

    目录 一.网络编程学习大纲 二.回顾系统编程中进程的通信方式 1. 管道 2.信号 3.IPC对象 三.网络编程(套接字编程) 1.特点 2.协议 3.历史 四.网络应用程序设计模式 1.C/S模式 ...

最新文章

  1. Dom对象、JavaScript对象、jQuery对象区别
  2. Java JUC工具类--CountDownLatch
  3. 攻击者滥用 Citrix NetScaler 设备 0day,发动DDoS放大攻击
  4. Python 源码剖析(二)—— 第一次修改 Python 源代码
  5. HBase海量数据高效入仓解决方案
  6. c语言erf函数,c/c++开发分享精确计算缩放互补误差函数,erfcx()
  7. Unity中配合EmmyLua的Lua使用方案
  8. 医学检验论文题目大全汇总
  9. Method_Confusion_Attack_on_Bluetooth_Pairing
  10. 51单片机智能温控风扇
  11. mysql几种性能测试的工具使用
  12. 杭电计算机线上复试,线上复试实锤?在线复试技巧拿走不谢!
  13. 2022春秋杯联赛 传说殿堂赛道 sql_debug题目解析
  14. 最新车载以太网解决方案
  15. oracle 数据泵 network link使用
  16. 基于Basys2的Booth乘法器的设计
  17. mysql 民族表_我国西北地区藏族.蒙古族等民族的藏传佛教格鲁派中心是(        )。...
  18. 汇编语言随笔(12)-端口读写、shl和shr指令、检测点14和实验14
  19. 面向对象的三大特征(封装、继承、多态)
  20. TMMi02:SG和SP读书笔记

热门文章

  1. java todo error_Java全局异常处理(TODO)
  2. 从0到1上线一个微信小程序
  3. haproxy和keepalived的理解(转载)
  4. Cisco 2811 语音网关+callmanager拨打外线详解配置
  5. GoldenGate应用拓扑结构(三)
  6. 每天一个linux 命令 find命令
  7. CI框架 -- URL
  8. 【Cloud Foundry 应用开发大赛】“八卦街”图片采集应用
  9. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(四)
  10. web管理 pdo-mysql_PHP重新安装启用PDO扩展和PDO_MySQL扩展