初识网络编程

Posted xinfan1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识网络编程相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

1.修改json可以序列化的数据类型,用于继承去修改,具体看操作:

技术图片
import json
from datetime import datetime,date



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)

res = a: datetime.today(),b:date.today()
print(json.dumps(res,cls=MyJson))
View Code

 网络编程:

  c/s架构(client/server):客户端与服务端

  b/s架构(browser/server):浏览器与服务器

 服务端:

  24小时不间断的提供服务

客户端:

  在有需要的时候去找服务器

网络编程的发展史:

任何先进的技术都是来源于军事

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

计算机与计算机之间要想实现通讯除了要有物理链接介质还要有一套公共的规范/协议。

OSI七层模型:

应用层

表示层

会话层

传输层

网络层

数据链路层

物理连接层

物理连接层:

  基于电信号传输010101的二进制数据

数据链路层:

  1.是规定了电信号的分组方式

  2.规定了每台连接入互联网的计算机都必须配有网卡。

    网卡上刻有世界上独一无二的编号

    12位16进制

    前6位厂家编号

    后6位流水线编号

    称为mac地址

   ps:将上面2点简称为以太网协议

交换机:

  基于以太网进行通信

  不能跨局域网通信

互联网是由n个局域网彼此链接而成的。

网络层

  IP协议

  规定了每台连接入互联网的计算机必有一个ip地址

  特点:点分十进制

  ip地址最小:0.0.0.0

  ip地址最大:255.255.255.255

  2个版本:IPv4,IPV6,为什么呢,因为ipv4用光了

  ip地址是动态分配的。

  ip地址是唯一标识一台连接入互联网的计算机

传输层:

  TCP/UDP都是基于端口工作的传输协议

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

  端口:用来唯一标识一台计算机上的某个应用程序。

  端口的范围:0--65535

  0到1024是操作系统默认要使用的

  建议使用8000后面的因为8000前面的可能有应用程序以及使用了,所以最好8000后面的不起冲突。

  mysql 3306

  redis 6379

  django 8000

  flask 5000

  IP+端口:用来唯一标识一台连接入互联网的计算机上的某个应用程序

  端口号是动态分配的

TCP协议:

也称流式协议,可靠协议

为什么说是可靠协议,因为tcp协议有个反馈机制,就是发送数据后必须要有响应,如果没有,不会先删除内存的数据,会在一定的时间内每个一段时间发送一次。等得到响应后才会将内存的数据清除。

三次握手建立连接

三次握手的过程实际上实在确认我发的你能收到,你发的我也能收到,从而保证数据传输的的可靠性,

链接是一个虚拟的概念,不实际存在,只要三次握手成功即表示连接建立成功!

问题是三次握手时的确能保障数据传输是可靠的,那么握手后的数据传输要如何保证传输成功呢?

TCP协议要求在发送数据后,必须接收到对方的回复信息才能确认数据成功发送,如果一段时内没有收到回复信息,会自动重新发送,如果重试的次数过多则表示链接可能已经中断!

四次挥手断开连接:

四次挥手的目的是保证双方的数据传输已经全部完成,同样是为了保证数据的完整性

总结

其优点很明显:能够保证数据传输是完整的

缺点:由于每次都需要传输确认信息,导致传输效率降低

场景:多用于必须保证数据完整性的场景,例如文本信息,支付信息等!

 

 

---恢复内容结束---

以上是关于初识网络编程的主要内容,如果未能解决你的问题,请参考以下文章

网络编程之socketserver初识

初识网络编程

Python之面向对象面向对象初识

初识网络编程

初识网络编程

初识:神经网络