Python 网络编程

一. 软件开发架构

1. 软件开发架构简介

软件开发架构可以说是程序员在编写软件的时候应该遵循的架构设计,这里简单介绍 C/S架构 与 B/S架构

2. 客户端

1. 客户端也称为用户端,为客户提供本地服务的程序但是一般都需要和服务端相互配合,我们平常使用的app
其实就是客户端,打开了app其实就是通过网络并由服务端提供服务。很明显我们日常使用时没有网络就无法
使用app功能,除了一些单机游戏之类服务端也在本地。

3. 服务端

相对的,服务端就是为客户端服务的例如给客户端提供数据,修改数据等等。运行服务端的电脑称为“服务器”

4. C/S 架构

1. C/S架构也就是是 Client-Server(客户端-服务器)架构。C代表着客户端,S代表着服务端。
2. C/S结构是建立在局域网的基础上的,通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户
的交互任务。
3. 例如电脑上需要下载安装的软件以及移动端app等等使用的是C/S架构。

在这里插入图片描述

4. C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以客
户端的相应会迅速。
5. C/S结构缺点是由于它需要更新或者出现bug的时候必须将客户端和服务端一起升级,成本会高。

5. B/S 架构

1. B/S架构也就是 Browser-Server(浏览器-服务器)架构。
2. 它是是WEB兴起后的一种网络结构模式,是建立在广域网的基础上,只不过这个架构不需要安装软件,直接
通过浏览器与服务端交互。其实本质上也属于C/S架构,可以说是三层C/S架构,因为浏览器也属于客户端,结
构如下图所示(图片来自网络)
3. B/S会比C/S的趋势好,例如支付宝微信软件里面有着很多程序的入口,

4. B/S架构优点是总体成本低、维护方便、分布性强、开发简单
5. B/S架构的缺点是,由于它统一了客户端,也就是说所有核心功能都在服务端,服务端就会消耗更多资源。
以及数据的安全性。

二. 网络编程

1. 网络编程简介

1. 网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。
2. 网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把
包进行解析,从而提取出对应的信息,达到通信的目的。

2. 网络编程发展史

这一项技术源自于美国军方,其实很多技术都是由军用转为民用。

远程通信发展史:
	1.有线电话			 电话线互联
    2.无线电话			 信号发射器
   	3.大屁股电脑           网线
    4.笔记本电脑           网卡

我们可以发现远程数据交互都少不了一个物理连接介质,而在传输数据的时候少不了一个规范,那个规范就是
OSI七层协议 

三. OSI 七层协议

1. OSI 七层协议简介

1. OSI是一个开放性的通信系统互连参考模型,是一个很好的协议规范。
2. OSI模型有7层结构,每层都可以有几个子层。从上到下分别是应用层、表示层、会话层、传输层、网络层
数据链路层、物理层,如下图所示(图片来自网络)。

在这里插入图片描述
在这里插入图片描述

2. 物理层

这一次是管理物理传输、硬件、物理特性。计算机与计算机之间的通信,必须要有底层物理层方面的连通,就
类似于有线电话必须得连电话线。传的是电信号,就是二进制串

3. 数据链路层

数据链路层就是对传输的电信号进行一个分组以及以太网协议负责mac地址。
Mac地址
因为Ethernet规定接入Internet的设备都必须具备网卡,而网卡在出厂的时候都会被烧制一个全世界独一无
二的编号,该编号是由1216进制数组成(前六位是产商编号,后六位是流水线号)这个编号就是MAC地址(
也被称之为物理地址),它用于在网络中唯一标示一个网卡(类似于身份证号),发送端的和接收端的地址便
是指网卡的地址。设备若有多个网卡,则每个网卡都需要并会有一个唯一的MAC地址,需要注意的是mac地址不
能跨局域网使用。
网络补充
'互联网':  简单来说互联网就是将计算机彼此链接到一起,用于数据的交互,我们平时上网其实就是借助于
物理介质去访问其他计算机的资源。

在这里插入图片描述

'交换机':   如果都像上图一样连接,需要访问多台设备的时候就需要更多的网线,这样是不合理的,于是交
换机出现了,交换机的作用主要就是将计算机的网线集中起来便于多台计算机进行连接(如下图所示)交换机
内部维护一张 MAC 地址表,记录着每一个 MAC 地址的设备,连接在其端口上,而交换机组成的网络就叫做
局域网。

在这里插入图片描述

'广播与单播':  广播是数据链路层的一对多工作方式。有了mac地址后就可以通信了,通信的内容中包含了发
送端的和接收端的 mac地址。在交换机组成的局域网中通信都是以吼的方式,如果吼一下局域网中的所有计算
机都能接收到,在根据接收端的mac地址选择要不要丢弃。单播是一对一定向回复消息(因为记录了mac地址)

'广播风暴':   已知在局域网中发送数据是通过广播的形式,但是如果当多个计算机同时进行广播,广播数据
充斥网络无法处理,并占用大量网络带宽此时就会产生广播风暴,使其网络瘫痪。其实广播通信已经可以在全
世界实现,但是如果在全世界引起广播风暴后果不堪设想,所以体现了网络层的作用
'路由器':   将局域网彼此链接起来并支持数据交互.互联网其实可以看成是由多个局域网链接在一起

4. 网络层

IP地址
网络层中定义了一个IP协议。
IP协议规定了每台接入互联网的计算机都必须有一个IP地址,IP地址目前有两个版本
      	
   		IPV4:点分十进制						IPV6:十六进制
       	最小:0.0.0.0							IPv6的地址长度为128位
        最大:255.255.255.255

IP地址的作用和mac地址很像,假设局域网是一间教室,计算机是里面的学生,学生之间交流只要在教室里喊
就行,但是在这个教室喊是传不到别的教室的,而IP地址就是用于表示当前所在的教室也就是局域网的位置,
所以IP地址是可变的,发送数据的时候通过IP地址找到局域网并将数据交给网关转发,网关相当于负责人的作
用。

IP地址还分为公网和私网,公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的。我们一般都是使用
的私网地址。公网需要付费而且需要报备。

5. 传输层

端口
1. 传输层的作用之一是实现端口与端口(port)的通信。
2. 在网络层中已经找到了接收数据的主机,但是如果此时有多个应用程序在主机执行,为什么获取数据不会
错乱呢,因为有端口的存在,端口就是应用程序与网卡关联的编号,它用于标识主机的应用程序。IP号+端口
号能表示指定的计算机上的应用。
3. 端口表示的范围是 0~65535,其中 0~1024:系统经常使用的端口号,1024~8000:常用软件端口号。
4. 端口号是动态分配的,关闭一个应用重新打开有可能不是原来端口也有可能是。
5. 端口号在同一台计算机中的同一时刻是不能重复的。
TCP协议
1. 传输层还可以使用TCP,UDP,SPX将收到的顺序不对的数据包的重新排序功能
2. TCP协议又被称之为流式协议、可靠协议。传输控制协议是为了在不可靠的互联网络上提供可靠的端到端字
节流而专门设计的一个传输协议。
3. 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先先建立双向通信通道,基于该双向通道实现数
据的远程交互,该双向通道直到任意一方主动断开才会失效
4. 由于TCP协议是双向通道,所以建立链接需要通过三次握手,断开链接则需要进行四次挥手,如下图所示(图
片来自网络)

在这里插入图片描述
TCP 握手

TCP三次握手的过程如下:
1. 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
2. 服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
3. 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

1. 简单来说就是首先客户端向服务端发送通道建立申请是为第一步
2. 服务端同意申请此时客户端向服务端单向通道建立,然后同时服务端向客户端发送建立申请为第二步
3. 最后客户端同意申请此时服务端向客户端的单向通道建立是为第三步

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

TCP 挥手

TCP四次挥手过程:
1. 某个应用进程首先调用close,称该端执行主动关闭(active close)。该端的TCP于是发送一个FIN分
节,表示数据发送完毕。
2. 接收到这个FIN的对端执行被动关闭(passive close),这个FIN由TCP确认。
注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进
程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
3. 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个
FIN。
4. 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。


1. 简单来说就是首先客户端发起断开请求是为第一步。
2. 服务端同意请求此时客户端到服务端的单向通道关闭是为第二步,但是服务端需要考虑还有没有数据要发送
给客户端所以不会同时向客户端发送关闭请求。
3. 等服务端检查完毕后会向客户端发送断开请求是为第三步。
4. 客户端同意请求,此时服务端到客户端的通道关闭是为第四步.

四次挥手完成,所有链接关闭。
UDP协议
1. UDP协议又被称之为不可靠协议、丢包协议。
2. 当应用程序希望通过UDP通信时,传输数据之前源端和终端不建立连接。
3. 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。数据发送没有通道的
概念,发送出去了就不管了。QQ使用的是UDP
UDP和TCP的比较
1. TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务;
2. TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数
据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序
3. UDP 具有较好的实时性,工作效率较 TCP 协议高;
4. TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可
靠性要求高的通信系统往往使用 TCP 传输数据。比如 HTTP 运用 TCP 进行数据的传输。

# 面试题
# 问:TCP协议之所以比UDP协议可靠 就是因为有双向通道 对不对?
# 答:TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制,基于TCP发送的消息会在本地
# 先保存该消息 如果地方确认收到才会删除否则在一定的时间内会频繁的多次发送知道确认或者超时为止,
# UDP 协议发送数据之后会立刻删除内存数据 不会保留 

6. 会话层

这一层主要负责两个会话进程之间的通信,即两个会话层实体之间的信息交换,管理数据的交换。有着自动收
发包和自动寻址的功能。

7. 表示层

1. 这一层的主要功能是定义数据格式及加密。进行不同的格式之间的翻译
2. 例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内
容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标
准的ASCII转换成接收方计算机的字符集

8. 应用层

应用层是与终端用户直接交互的层,它提供为应用软件而设的接口,以设置与另一应用软件之间的通信
使用的协议有 HTTP、TFTP, FTP, NFS, WAIS、SMTP
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值