我是靠谱客的博主 孝顺汉堡,最近开发中收集的这篇文章主要介绍13、python网络编程之网络通信协议python网络编程之网络通信协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

python网络编程之网络通信协议

一、C/S与B/S架构

在这里插入图片描述

B/S架构

B/S架构中省去了客户端的开发,是基于浏览器(Browser)与服务端完成数据的通信

二、网络通信

什么是网络

网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。

网络即一种物理链接介质

什么是通信

通信是人与人之间通过某种媒体进行的信息交流与传递。

通信即数据与信息的传输

什么是网络通信

网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。

网络通信即计算机与计算机之间通过物理介质和某种协议进行的数据与信息的传输

了解了以上知识后我们就可以发现,计算机之间需要完成通信,必要的条件有两个:

  • 物理链接介质
  • 通信协议

物理链接介质我们这里不做深入研究,下面我们来学习一下互联网的通信协议。

三、互联网通信协议

OSI协议

OSI模型是由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。OSI协议根据功能不同,分工不同,被人为的分为七层协议。

实际中还有人划分为五层、四层协议

七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

五层划分为:应用层、传输层、网络层、数据链路层、物理层

四层划分为:应用层、传输层、网络层、网络接口层

在这里插入图片描述

在这里插入图片描述

为什么要有协议?

协议用来规定数据的组成格式,是的不同的计算机之间可以识别传输的数据。

物理层

主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0。在网络通信的过程中,物理层负责发送电信号。一组物理层数据称之为位。

物理链路层:Ethernet

我们知道单纯由0和1组成的电信号没有意义,无法进行识别,这时候我们需要物理链路层,它定义了电信号的分组方式。常见的物理链路层的协议有以太网协议(Ethernet)

以太网协议规定:

  1. 一组数据称之为一个数据帧
  2. 数据帧分为两部分组成:头部 + 数据
    - 而在数据帧的头部中包含了源地址(6bytes)、目标地址 (6bytes)和数据类型(6bytes),其中的源地址和目标地址 均为mac地址。
    - 数据部分包含了网络层的整体数据内容
  3. 接入互联网的主机必须有一张网卡,每张网卡出厂时都有一个唯一的mac地址。
  4. 以太网的工作方式是广播
网络层:IP

网络层走的是IP协议,主要用于划分广播域,每一个广播域需要通过网关将包转发到公网,网关走的是路由协议。

IP协议规定:

  1. 一组数据称之为一个数据包。
  2. 数据包分为头部和数据
    1. 头部包含源地址和目标地址,该地址是IP地址,IP地址分为网络部分和主机部分。主机部分即IP地址,网络部分即子网掩码,用于划分广播域。
    2. 数据包含传输层的整体数据内容

在网络层还有一个非常重要的协议ARP协议,ARP协议是地址解析协议,它是根据IP地址获取物理地址(mac地址)的一个TCP/IP协议。IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。img

传输层:TCP/UDP等

TCP/UDP协议是基于端口的一种协议,端口范围是0-65535,期中0-1023端口为系统占用端口。

有了tcp/udp协议后,我们可以通过ip+端口标识全世界范围内独一无二的一个基于网络通信的应用程序,但在基于tcp协议通信之前,必须建立一个双向通信的链接。一般通过三次握手建立一个双向通信的链接。

在这里插入图片描述

但在切断链接过程中是通过四次挥手进行切断。因为在切断链接的过程中有可能涉及到仍有一端再进行单向数据传输,只有当数据传输完成后这一向的链接才切断。

img

应用层:http,ftp等

在应用层我们可以自定义协议,但自定义协议的工程过于庞大,软件开发中我们一般采用http、ftp等已存在的协议。应用层的协议也同样包含头部和数据两部分。

最后

以上就是孝顺汉堡为你收集整理的13、python网络编程之网络通信协议python网络编程之网络通信协议的全部内容,希望文章能够帮你解决13、python网络编程之网络通信协议python网络编程之网络通信协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部