十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章给大家分享的是有关python实现网络通信数据传输的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联专注于网站建设,为客户提供网站建设、网站设计、网页设计开发服务,多年建网站服务经验,各类网站都可以开发,品牌网站制作,公司官网,公司展示网站,网站设计,建网站费用,建网站多少钱,价格优惠,收费合理。
前言
基础知识学习
1、流格式套接字SOCK_STREAM
2、数据报格式套接字(SOCK_DGRAM)
一、同步异步
二、 什么是 socket
三、socket套接字的分类
四、IP地址、MAC地址、端口地址
结束语
我不是通信信息专业的,但是最近接触了一些这方面的知识感觉挺有意思就学习了一下,并将学习结果记录在这里,以便给更多人学习,要是能得到大佬的指点就美滋滋啦!!!
同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。是一种线性执行的方式,执行的流程不能跨越。一般用于流程性比较强的程序,比如用户登录,需要对用户验证完成后才能登录系统。
(发送方发一个,接收方接收一个,是同步的。)
异步则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。是一种并行处理的方式,不必等待一个程序执行完,可以执行其它的任务,比如页面数据加载过程,不需要等所有数据获取后再显示页面。
(发送方发送数据,接收方有一个缓存区,可以按照自己的规律去接受,当然发送方也可按照自己的规律去发送,两者是异步的)
socket的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,计算机之间建立网络连接。
为了方便理解,我们可以类比插座,我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网的工具。
与 UNIX/Linux 不同的是,Windows 会区分 socket 和文件,Windows 就把 socket 当做一个网络连接来对待,因此需要调用专门针对 socket 而设计的数据传输函数,针对普通文件的输入输出函数就无效了。
主要常用两种是流格式套接字(SOCK_STREAM)和数据报格式套接字(SOCK_DGRAM)。
有以下几个特征:
数据在传输过程中不会消失;
数据是按照顺序传输的;
数据的发送和接收是异步的。
它使用了 TCP 协议(The Transmission Control Protocol,传输控制协议),TCP 协议会控制你的数据按照顺序到达并且没有错误。
强调高质量。
计算机只管传输数据,不作数据校验,如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救的。也就是说,数据错了就错了,无法重传。因为数据报套接字所做的校验工作少,所以在传输效率方面比流格式套接字要高。
它有以下特征:
强调快速传输而非传输顺序;
传输的数据可能丢失也可能损毁;
限制每次传输的数据大小;
数据的发送和接收是同步的。
数据报套接字也使用 IP 协议作路由,使用 UDP 协议(User Datagram Protocol,用户数据报协议)。
注意:SOCK_DGRAM 没有想象中的糟糕,不会频繁的丢失数据,数据错误只是小概率事件。
IP地址:是 Internet Protocol Address 的缩写,译为“网际协议地址”。目前大部分软件使用 IPv4 地址,但 IPv6 也正在被人们接受,尤其是在教育网中,已经大量使用。
对于IPV4,一个计算机一个IP地址是不现实的,所以一般是一个局域网一个IP地址。路由器会根据 IP 地址找到对方的地里位置,路由器有非常高效和智能的算法,很快就会找到目标局域网。
MAC地址:是物理地址,一个局域网地址有多个计算机的MAC地址,数据包中除了会附带对方的 IP 地址,还会附带对方的 MAC 地址,当数据包达到局域网以后,路由器/交换机会根据数据包中的 MAC 地址找到对应的计算机
端口地址:一台计算机可以同时提供多种网络服务,例如 Web 服务(网站)、FTP 服务(文件传输服务)、SMTP 服务(邮箱服务)等,仅有 IP 地址和 MAC 地址,计算机虽然可以正确接收到数据包,但是却不知道要将数据包交给哪个网络程序来处理,所以通信失败。
为了区分不同的网络程序,计算机会为每个网络程序分配一个独一无二的端口号(Port Number)。端口(Port)是一个虚拟的、逻辑上的概念。可以将端口理解为一道门,数据通过这道门流入流出,每道门有不同的编号,就是端口号。如下图所示:
补充:今天刚刚看了下 串口和端口的概念:
串口是I/O通讯的接口,是硬件范畴,因为使用了串行的信号通讯而简称串口。
端口(指一般的PC机操作系统中,单片机不算)只是一个16位的数字标识,用来在网络通讯中标识不同的通讯进程,是操作系统定义的,就是说没有操作系统的话也没有端口的概念
感谢各位的阅读!关于“python实现网络通信数据传输的示例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!