【2022-08-04】Python网络编程(一)

Python网络编程

网络编程简介

什么是计算机网络?

  • 把分布在不同地理区域的计算机与专门的外部设备使用通信线路互连成一个规模大、功能强的网络系统,从而使众多计算机之间可以方便的互相传递信息、共享硬件、软件、数据信息等资源

什么是网络编程?

  • 网络编程从大的方面就是说对信息的发送与接收,中间为物理线路的作用。
  • 可以通过操作相应的API接口调用计算机硬件资源,并且利用管道(网线)进行数据交互的过程
  • 更为具体的涉及:网络模型、套接字、数据包

网络编程的目的

  • 在网络通信协议下,实现让网络互连的不同计算机上运行的程序之间可以进行数据交互

网络编程的起源

  • 网络编程起源于美国军事,主要是想实现远程数据传输

网络编程的要求

  • 想要实现远程通信,需要具备的首要条件就是:物理连接介质
  • 其次,还需要一个共同的标准:协议

软件开发架构

C/S架构

C/S(Client-Server)架构,C/S结构通常采取两层结构。服务器负责数据的管理,客户端负责完成与用户的交互任务。客户端通过局域网与服务器相连,接受用户的请求,并通过网络向服务器提出请求,对数据库进行操作。服务器接受客户端的请求,将数据提交给客户端,客户端将数据进行计算并将结果呈现给用户。服务器还要提供完善安全保护及对数据完整性的处理等操作,并允许多个客户端同时访问服务器,这就对服务器的硬件处理数据能力提出了很高的要求。在C/S结构中,应用程序分为两部分:服务器部分和客户端部分。服务器部分是多个用户共享的信息与功能,执行后台服务,如控制共享数据库的操作等;客户机部分为用户所专有,负责执行前台功能,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。C/S结构在技术上已经很成熟,它的主要特点是交互性强、具有安全的存取模式、响应速度快、利于处理大量数据。但是C/S结构缺少通用性,系统维护、升级需要重新设计和开发,增加了维护和管理的难度,进一步的数据拓展困难较多,所以C/S结构只限于小型的局域网。 

B/S架构

B/S(Browser/Server)架构,即浏览器和服务器架构模式,是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构。这种架构下,用户工作界面通过浏览器即可实现,极少部分事物逻辑在前端(Brower)实现。B/S架构是WEB兴起的一种网络架构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),服务器安装数据库。浏览器通过Web/server同数据库进行数据交互。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。

C/S架构与B/S架构的优劣势

C/S架构(client/server 客户端/服务器)

  • 特点:必须在客户端安装特定的软件

  • 优点:图形效果显示好

  • 缺点:不利于维护(服务器的软件和功能进行升级,客户端必须升级)

  • 常见的C/S软件架构:QQ、微信、王者荣耀等

    B/S架构(Browser/server 浏览器/服务器)

  • 特点:不需要安装任何客户端,任意浏览器都可以进行访问

  • 优点:如果遇到软件或功能升级,只需要升级服务器端即可

  • 缺点:图形显示效果相较C/S架构来说较差

C/S架构与B/S架构的区别

硬件环境不同
  • C/S建立在专用网络上,小范围的网络环境(相对B/S),局域网之间再通过专门服务器提供连接和数据交换服务。
  • B/S建立在广城网上,不需要专门的网络硬件环境
安全要求不同
  • C/S一般面向相对固定的用户群,对信息安全控制能力强,一般高度机密的信息系统采用
  • B/S建立在广城网上,对安全的掌控能力弱,面向不可知的用户的用户群。
系统维护不同
  • C/S程序由于整体性,必须整体考察,升级困难,多建立在Windows上,表现方法有限,对程序员要求较高。
  • B/S系统无缝升级,维护开销小,有更加丰富的表现形式,开发难度较低。
处理问题不同
  • C/S处理用户固定,安全需求高,要求相同操作系统。
  • B/S面向所有用户,分散广,对系统要求小。

OSI七层协议

OSI七层网络协议(模型)从上往下依次为:

  • 应用层

    应用层是OSI模型中的最高层,是直接面向用户的一层,用户的通信内容要由应用进程解决,这就要求应用层采用不同的应用协议来解决不同类型的应用要求,并且保证这些不同类型的应用所采用的低层通信协议是一致的。应用层中包含了若干独立的用户通用服务协议模块,为网络用户之间的通信提供专用的程序服务。需要注意的是应用层并不是应用程序,而是为应用程序提供服务。 
    
  • 表示层

    表示层为在应用过程之间传送的信息提供表示方法的服务。表示层以下各层主要完成的是从源端到目的端可靠地的数据传送,而表示层更关心的是所传送数据的语法和语义。表示层的主要功能是处理在两个通信系统中交换信息的表示方式,主要包括数据格式变化、数据加密与解密、数据压缩与解压等。在网络带宽一定的前提下数据压缩的越小其传输速率就越快,所以表示层的数据压缩与解压被视为掌握网络传输速率的关键因素。表示层提供的数据加密服务是重要的网络安全要素,其确保了数据的安全传输,也是各种安全服务最为重视的关键。表示层为应用层所提供的服务包括:语法转换、语法选择和联接管理。 
    
  • 会话层

    会话层的主要功能是负责维护两个节点之间的传输联接,确保点到点传输不中断,以及管理数据交换等功能。会话层在应用进程中建立、管理和终止会话。会话层还可以通过对话控制来决定使用何种通信方式,全双工通信或半双工通信。会话层通过自身协议对请求与应答进行协调。 
    
  • 传输层

    传输层是网络体系结构中高低层之间衔接的一个接口层。传输层不仅仅是一个单独的结构层,而是整个分析体系协议的核心。传输层主要为用户提供End—to—End(端到端)服务,处理数据报错误、数据包次序等传输问题。传输层是计算机通信体系结构中关键一层,它向高层屏蔽了下层数据的通信细节,使用户完全不用考虑物理层、数据链路层和网络层工作的详细情况。传输层使用网络层提供的网络联接服务,依据系统需求可以选择数据传输时使用面向联接的服务或是面向无联接的服务。 
    
  • 网络层

    网络层主要为数据在节点之间传输创建逻辑链路,通过路由选择算法为分组选择最佳路径,从而实现拥塞控制、网络互联等功能。网络层是以路由器为最高节点俯瞰网络的关键层,它负责把分组从源网络传输到目标网络的路由选择工作。互联网是由多个网络组成在一起的一个集合,正是借助了网络层的路由路径选择功能,才能使得多个网络之间的联接得以畅通,信息得以共享。网络层提供的服务有面向联接和面向无联接的服务两种。面向联接的服务是可靠的联接服务,是数据在交换之前必须先建立联接,然后传输数据,结束后终止之前建立联接的服务。网络层以虚电路服务的方式实现面向联接的服务。面向无联接的服务是一种不可靠的服务,不能防止报文的丢失、重发或失序。面向无联接的服务优点在于其服务方式灵活方便,并且非常迅速。网络层以数据报服务的方式实现面向无联接的服务。 
    
  • 数据链路层

    数据链路层是在通信实体间建立数据链路联接,传输的基本单位为“帧”,并为网络层提供差错控制和流量控制服务。数据链路层由MAC(介质访问控制子层)和LLC(逻辑链路控制子层)组成。介质访问控制子层的主要任务是规定如何在物理线路上传输帧。逻辑链路控制子层对在同一条网络链路上的设备之间的通信进行管理。数据链路控制子层主要负责逻辑上识别不同协议类型,并对其进行封装。也就是说数据链路控制子层会接受网络协议数据、分组的数据报并且添加更多的控制信息,从而把这个分组传送到它的目标设备。 
    
  • 物理连接层

    物理层是参考模型中的最底层,主要定义了系统的电气、机械、过程和功能标准。如:电压、物理数据速率、最大传输距离、物理联接器和其他的类似特性。物理层的主要功能是利用传输介质为数据链路层提供物理联接,负责数据流的物理传输工作。物理层传输的基本单位是比特流,即0和1,也就是最基本的电信号或光信号,是最基本的物理传输特征。 
    

也可以将其分为五层,即TCP/IP模型。从上往下依次为:

  • 应用层

    常见的应用层协议:
    
    1.DNS(域名系统)
    DNS 是互联网使用的命名系统,用来把人们使用的机器名字(域名)转换为 IP 地址。域名服务器分为四种类型:根域名服务器、顶级域名服务器、本地域名服务器、权限域名服务器。
    
    2.FTP(文件传输协议)
    FTP 是使用得最广泛的文件传送协议。FTP 提供交互式的访问,常用于局域网的文件存储服务器。
    
    3.Telnet(远程终端协议)
    telnet 是一个简单的远程终端协议,结合端口使用,常用于服务探测。
    
    4.HTTP(超文本传送协议)
    HTTP 是面向事务的应用层协议,它是互联网能够可靠地交换文件的重要基础。http 使用面向连接的 TCP 作为运输层协议,保证了数据的可靠性。
    
    5.SMTP(电子邮件协议)
    SMTP是简单邮件传送协议。SMTP规定了在两个相互通信的 SMTP 进程之间应如何交换信息。SMTP通信包括三个阶段,分别是:建立连接、邮件传送、连接释放。
    
    6.POP3(邮件读取协议)
    POP3,全称是 Post Office Protocol 3,该协议通常被用来接收电子邮件。
    
    7.SNMP(简单网络管理协议)
    SNMP协议由三部分组成,包括:SNMP本身、管理信息结构 SMI 和管理信息 MIB。SNMP 定义了管理站和代理之间所交换的分组格式。SMI 定义了命名对象类型的通用规则,以及把对象和对象的值进行编码。MIB 在被管理的实体中创建了命名对象,并规定类型。
    
    8.TFTP(简单文件传输协议)
    TFTP是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,它基于UDP协议而实现的,提供不复杂、开销不大的文件传输服务。默认端口号是 69。
    
  • 传输层

    TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,其传输的单位是报文段。
    
    UDP(User Datagram Protocol,用户数据报协议)是 OSI(Open System Interconnection 开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,其传输的单位是用户数据报。
    
    TCP,UDP基于端口工作的协议
                其实计算机之间通信其实是计算机上面的应用程序与应用程序之间的通信
                端口(port):唯一标识一台计算机上某一个基于网络通信的应用程序
                端口范围:0~65535(动态分配)
                    注意:0~1024通常是归操作系统分配的端口号
                    通常情况下,我们写的软件端口建议起在8000之后
                    注意:一台计算机上同一时间一个端口只能被一个应用程序占用
                   
     ip地址:唯一标识全世界接入互联网的独一无二的机器
                port端口:唯一标识一台计算机上的某一个应用程序
                ip+port:能够标识全世界上独一无二的一台计算机上的某一个应用程序
                arp协议:根据ip地址解析mac地址
    
  • 网络层

    规定了计算机都必须有一个ip地址
                    ip地址特点:点分十进制
                    有两个版本,ipv4和ipv6(为了能够兼容更多的计算机)
                    最小:0.0.0.0
                    最大:255.255.255.255
                ip协议可以跨局域网传输
                ip地址能够唯一标识互联网中独一无二的一台机器
    
  • 数据链路层

    规定了二进制数据的分组方式
                规定了只要是接入互联网的计算机,都必须有一块网卡
                网卡上有世界唯一的编号:
                    每块网卡出厂时都被烧制上一个世界唯一的mac地址
                    长度为48位的二进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线好)
                上面的两个规定其实就是以太网协议
                    基于以太网协议通信:通信基本靠吼
                    弊端:广播风暴
                交换机:如果没有交换机,你的电脑就变成了马蜂窝,有了交换机之后,所有的电脑只需要
           一个网卡连接即可实现多台电脑之间的物理连接
    
  • 物理连接层

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

相关网络名词

什么是IP地址?

  • IP地址是连接在因特网上的主机的标识符

IP地址的分类

  • IP协议有两个版本,分别是IPV4,IPV6
  • IP地址的大小:IP地址是一个4字节,32位的整数
  • IP地址的格式:IP地址是一个32位的整数,但是为了我们便于记忆,通常使用“点分十进制”字符串形式来表示IP地址,例如:192.168.0.1,用点分割的每一个数字表示一个字节,范围是0到255
  • IP地址的分类:此处IP地址的分类是指IP地址有源IP地址、目的IP地址

什么是以太网?

  • 以太网是一种计算机局域网技术,是现实世界中最普遍的一种计算机网络。以太网的标准拓扑结构为总线型拓扑,但目前的快速以太网为了减少冲突,将能提高的网络速度和使用效率最大化,使用交换机来进行网络连接和组织。

什么是局域网?

  • 局域网是指在某一区域内由多台计算机互联成的计算机组,一般是方圆几千米以内;局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能,并且局域网是封闭型的。

什么是广域网?

  • 广域网(英语:Wide Area Network,缩写为 WAN),又称外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。

什么是MAC地址?

  • MAC地址是真正能唯一标识一台计算机的,每个网卡的 MAC 地址在全世界都是独一无二的。计算机出厂时,MAC 地址已经被写死到网卡里面了(当然通过某些操作也是可以修改的)。局域网中的路由器/交换机会记录每台计算机的 MAC 地址。
  • 当在进行数据传输时,数据包中除了会附带对方的 IP 地址,还会附带对方的 MAC 地址,当数据包达到局域网以后,路由器/交换机会根据数据包中的 MAC 地址找到对应的计算机,然后把数据包转交给它,这样就完成了数据的传递。

端口号的概念

  • 端口号是一个2字节16位的整数;
  • 端口号用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理;
  • IP地址+端口号可以标识网络上的某一台主机的某一个进程;
  • 一个端口号只能被一个进程使用;
  • 知名端口:此种端口范围为1-1024,此种端口是预留端口号,是留给操作系统的
  • 在进行通信时服务器需要绑定端口号,可随意指定,范围为1025到65535,在指定的时候,指定的端口号不能被其他进程使用,客户端不需要绑定端口号,在运行时操作系统会给客户端自动分配端口号。
  • 端口号也分为源端口号和目的端口号。

什么是交换机?

  • 交换机(英文:Switch,意为“开关”)是一种用于电信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。
  • 交换机的传输模式有全双工,半双工,全双工/半双工自适应 。
  • 交换机的全双工是指交换机在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的交换机都支持全双工。全双工的好处在于迟延小,速度快。

交换机的作用

  • 交换机的主要功能包括物理编址、网络拓扑结构、错误校验、帧序列以及流控。目前交换机还具备了一些新的功能,如对VLAN(虚拟局域网)的支持、对链路汇聚的支持,甚至有的还具有防火墙的功能。
  • 学习:以太网交换机了解每一端口相连设备的MAC地址,并将地址同相应的端口映射起来存放在交换机缓存中的MAC地址表中。
  • 转发/过滤:当一个数据帧的目的地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口(该数据帧为广播/组播帧则转发至所有端口)。
  • 消除回路:当交换机包括一个冗余回路时,以太网交换机通过生成树协议避免回路的产生,同时允许存在后备路径。

什么是路由器?

  • 路由器是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。

路由器的作用

  • 一是连通不同的网络,另一个作用是选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。
  • 从体系结构上看,路由器可以分为第一代单总线单CPU结构路由器、第二代单总线主从CPU结构路由器、第三代单总线对称式多CPU结构路由器;第四代多总线多CPU结构路由器、第五代共享内存式结构路由器、第六代交叉开关体系结构路由器和基于机群系统的路由器等多类。

posted @ 2022-08-04 17:06  dy12138  阅读(275)  评论(0)    收藏  举报