python实现网络通信数据传输的示例

这篇文章给大家分享的是有关python实现网络通信数据传输的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

python实现网络通信数据传输

  • 前言

  • 基础知识学习


    • 1、流格式套接字SOCK_STREAM

    • 2、数据报格式套接字(SOCK_DGRAM)

    • 一、同步异步

    • 二、 什么是 socket

    • 三、socket套接字的分类


    • 四、IP地址、MAC地址、端口地址

  • 结束语

前言

我不是通信信息专业的,但是最近接触了一些这方面的知识感觉挺有意思就学习了一下,并将学习结果记录在这里,以便给更多人学习,要是能得到大佬的指点就美滋滋啦!!!

基础知识学习

一、同步异步

  • 同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。是一种线性执行的方式,执行的流程不能跨越。一般用于流程性比较强的程序,比如用户登录,需要对用户验证完成后才能登录系统。
    (发送方发一个,接收方接收一个,是同步的。)

  • 异步则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。是一种并行处理的方式,不必等待一个程序执行完,可以执行其它的任务,比如页面数据加载过程,不需要等所有数据获取后再显示页面。
    (发送方发送数据,接收方有一个缓存区,可以按照自己的规律去接受,当然发送方也可按照自己的规律去发送,两者是异步的)

二、 什么是 socket

  • socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,计算机之间建立网络连接。

  • 为了方便理解,我们可以类比插座,我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网的工具。

  • 与 UNIX/Linux 不同的是,Windows 会区分 socket 和文件,Windows 就把 socket 当做一个网络连接来对待,因此需要调用专门针对 socket 而设计的数据传输函数,针对普通文件的输入输出函数就无效了。

三、socket套接字的分类

主要常用两种是流格式套接字(SOCK_STREAM)和数据报格式套接字(SOCK_DGRAM)。

1、流格式套接字SOCK_STREAM

  • 有以下几个特征:
    数据在传输过程中不会消失;
    数据是按照顺序传输的;
    数据的发送和接收是异步的。

  • 它使用了 TCP 协议(The Transmission Control Protocol,传输控制协议),TCP 协议会控制你的数据按照顺序到达并且没有错误。
    强调高质量。

2、数据报格式套接字(SOCK_DGRAM)

  • 计算机只管传输数据,不作数据校验,如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救的。也就是说,数据错了就错了,无法重传。因为数据报套接字所做的校验工作少,所以在传输效率方面比流格式套接字要高。

  • 它有以下特征:
    强调快速传输而非传输顺序;
    传输的数据可能丢失也可能损毁;
    限制每次传输的数据大小;
    数据的发送和接收是同步的。
    数据报套接字也使用 IP 协议作路由,使用 UDP 协议(User Datagram Protocol,用户数据报协议)。

  • 注意: SOCK_DGRAM 没有想象中的糟糕,不会频繁的丢失数据,数据错误只是小概率事件。

四、IP地址、MAC地址、端口地址

  • IP地址:是 Internet Protocol Address 的缩写,译为“网际协议地址”。目前大部分软件使用 IPv4 地址,但 IPv6 也正在被人们接受,尤其是在教育网中,已经大量使用。
    对于IPV4,一个计算机一个IP地址是不现实的,所以一般是一个局域网一个IP地址。路由器会根据 IP 地址找到对方的地里位置,路由器有非常高效和智能的算法,很快就会找到目标局域网。

  • MAC地址:

    python实现网络通信数据传输的示例