IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Python网络编程与并发(2) -> 正文阅读

[网络协议]Python网络编程与并发(2)

1.TCP与UDP协议

在TCP/IP网络体系结构中,TCP(传输控制协议)、UDP(用户数据报协议)是传输层最重要的两种协议,为上层用户提供通信可靠性。

传输控制协议(TCP):定义了两台计算机之间进行可靠的传输而交换的数据和信息的格式以及计算机为了确保数据的正确到达而采取的措施。TCP提供的是面向连接、可靠的字节流服务。

用户数据包协议(UDP):是一个简单的面向数据报的传输层协议,提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP层的数据发送出来,不能保证它们能到达目的地,因此报文可能丢失、重复以及乱序等。但由于UDP在传输前不在客户和服务器之间建立一个连接,且没有超时重发等机制,因此传输速度很快。

2.通道建立---三次握手

①在建立通道时,客户端首先要向服务器端发送一个SYN同步信号;

②服务端在接收到这个信号之后会向客户端发送SYN同步信号和ACK确认信号;

③当服务端的ACK和SYN到达客户端,客户端与服务端之间的这个通道就会被建立起来。

通道关闭---四次挥手

①在数据传输完毕之后,客户端会向服务端发出一个FIN终止信号;

②服务端在收到这个信号之后会向客户端发出一个ACK确认信号;

③如果服务端此后也没有数据发给客服端时,服务端会向客户端发送一个FIN终止信号;

④客户端收到这个信号之后会回复一个确认信号,在服务端收到这个信号后,服务端与客户端的通道也就关闭。

先发送数据的是客户端另一个是服务端。

3.HTTP协议

HTTP协议是简单的请求-响应协议,通常运行在TCP之上,是一个应用层协议。它指明了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:

①客户与服务器建立连接;

②客户向服务器提出请求;

③服务器接受请求,并根据请求返回相应的文件作为应答;

④客户与服务器关闭连接。

客户与服务器之间的连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回应答后,连接就会关闭。辎重一次性连接主要考虑到www服务器面向的是internet中有成千上万的用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态。

HTTP是一种无状态的协议,即服务器布保留与客户交易时的任何状态。HTTP时一种面向对象的协议,允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。

4.端口

端口指设备与外界网络进行通讯交流的出口,为了统一管理端口,给端口进行编号即端口号。

专用端口(范围是0~1023):80端口分配给HTTP服务;21端口分配给FTP服务。当某个程序需要使用专用端口时,需要有root权限。

动态端口:一般不固定分配某种服务而是动态分配,范围是1024~65535。

5.BS/CS架构

C/S是Client/Server的缩写。服务端常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQL Server。客户端需要安装专用的客户端软件。

B/S是Browser/Server的缩写,客户机上只需要安装一个浏览器,服务端安装Oracle、Sybase、Informix或SQL Server等数据库。用户完全通过浏览器实现,浏览器通过Web Server同数据库进行数据交互。

6.Socket套接字

Socket抽象层处在传输层与应用层之间,套接字相当于应用程序访问下层网络服务的接口。

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。它将复杂的TCP/IP协议隐藏在接口后面。

7.Socket编程

①一台机器上不同进程之间的通信方式:队列、同步(互斥锁、条件变量等)

网络中进程之间的通信:

网络层的IP地址可以唯一标识网络中的主机,而传输层的协议+端口可以唯一标识主机中的进程。

Socket是进程间的通信方式,能实现不同主机之间的进程间通信。

②Socket编程通过Python中的socket模块的函数socket实现。

socket.socket(AddressFamily,Type)

第一个参数指明网络通信还是本地通信,AF_INET用于网络进程间的通信,AF_UNIX用于同一台机器进程间的通信。

第二个参数是套接字类型,SOCK_STREAM基于字节流的套接字,主要用于TCP协议;SOCK_DGRAM数据报套接字,主要用于UDP协议。

③Socket发送数据实例

from socket import *
#1.创建一个UDP协议的套接字,然后发送一条数据到网络上的另一个进程
#创建套接字
client_socket = socket(AF_INET,SOCK_DGRAM)
#2.定义一个接受消息的目标
#8080是目标服务器的端口,127.0.0.1是目标服务器地址
server_host_port = ('127.0.0.1',8080)
#3.准备数据,encode将数据变为字节数组
datas = input("请输入要传输的数据:").encode('utf-8')
#4.发送数据
client_socket.sendto(datas,server_host_port)
print('发送完成')
#5.发送结束后关闭套接字,释放系统资源
client_socket.close()
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:38:29  更:2021-11-29 16:40:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:38:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码