Python_网络编程(IP 端口 协议)

网络编程:

              

      互联网时代,现在基本上所有的程序都是网络程序,很少有单机版的程序了。网络编程就是如何在程序中实现两台计算机的通信。Python语言中,提供了大量的内置模块和第三方模块用于支持各种网络访问,而且Python语言在网络通信方面的优点特别突出,远远领先其他语言。

基本概念:

        

IP是Internet Protocol Address,即"互联网协议地址"。用来标识网络中的一个通信实体的地址。通信实体可以是计算机、路由器等。比如互联网的每个服务器都要有自己的IP地址,而每个局域网的计算机要通信也要配置IP地址。路由器是连接两个或多个网络的网络设备。

IP地址就像是我们的家庭住址一样,如果你要写信给一个人,你就要知道他(她)的地址,这样邮递员才能把信送到。计算机发送信息就好比是邮递员,它必须知道唯一的“家庭地址”才能不至于把信送错人家。只不过我们的地址是用文字来表示的,计算机的地址用二进制数字表示。IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。

目前主流使用的IP地址是IPV4,但是随着网络规模的不断扩大,IPV4面临着枯竭的危险,所以推出了IPV6。

IPV4,采用32位地址长度,只有大约43亿个地址,它只有4段数字,每一段最大不超过255。随着互联网的发展,IP地址不够用了,在2019年11月25日IPv4位地址分配完毕。IPv6采用128位地址长度,几乎可以不受限制地提供地址。按保守方法估算IPv6实际可分配的地址,整个地球的每平方米面积上仍可分配1000多个地址。IP地址实际上是一个32位整数(称为IPv4),以字符串表示的IP地址如192.168.0.1实际上是把32位整数按8位分组后的数字表示,目的是便于阅读。IPv6地址实际上是一个128位整数,它是目前使用的IPv4的升级版,以字符串表示类似于2001:0db8:85a3:0042:1000:8a2e:0370:7334

公有地址公有地址(Public address)由Inter NIC(Internet NetworkInformation Center互联网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问互联网。私有地址私有地址(Private address)属于非注册地址,专门为组织机构内部使用。以下列出留用的内部私有地址

A类:10.0.0.0--10.255.255.255

B类:172.16.0.0--172.31.255.255

C类:192.168.0.0--192.168.255.255

 

实操:

1:windows下,我们可以通过命令ipconfig获取网卡信息。(Linux和Mac,是ifconfig)2通过ping查看网络连接:1ping www.baidu.com查看是否能上公网

2:ping 192.168.1.100查看是否和该计算机在同一个局域网3ping 127.0.0.1查看本机网卡是否可用

端口port端口号用来识别计算机中进行通信的应用程序。因此,它也被称为程序地址。一台计算机上同时可以运行多个程序。传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并准确地进行数据传输。

总结IP地址好比每个人的地址(门牌号),端口好比是房间号。必须同时指定IP地址和端口号才能够正确的发送数据。IP地址好比为电话号码,而端口号就好比为分机号。

端口分配端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程序。端口的表示是一个16位的二进制整数,对应十进制的0-65535。操作系统中一共提供了0~65535可用端口范围。按端口号分类:

公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。

注册端口(Registered Ports):从1024到65535。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。

网络通信协议:

国际标准化组织(ISO,即International Organization forStandardization)定义了网络通信协议的基本框架,被称为OSI(Open System Interconnect,即开放系统互联)模型。要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息给B电脑时是否需要B电脑进行反馈,A电脑传送给B电脑的数据格式又是怎样的?内容太多太杂,所以OSI模型将这些通讯标准进行层次划分,每一层次解决一个类别的问题,这样就使得标准的制定没那么复杂。OSI模型制定的七层标准模型,分别是:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。

网络协议的分层虽然国际标准化组织制定了这样一个网络通信协议的模型,但是实际上互联网通讯使用最多的网络通信协议是TCP/IP网络通信协议。TCP/IP是一个协议族,也是按照层次划分,共四层:应用层,传输层,互连网络层,网络接口层(物理+数据链路层)。把用户应用程序作为最高层,把物理通信线路作为最低层,将其间的协议处理分为若干层,规定每层处理的任务,也规定每层的接口标准。ISO模型与TCP/IP模型的对应关系如图所示。

                                   

TCP和UDP协议区别TCP和UDP的优缺点无法简单地、绝对地去做比较:TCP用于在传输层有必要实现可靠传输的情况;UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。TCP和UDP应该根据应用的目的按需使用。

               

TCP:TCP(Transmission Control Protocol,传输控制协议)。TCP方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。

UDP:UDP(User Data Protocol,用户数据报协议)UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

UDP方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。UDP因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用UDP而不是TCP

TCP和UDP区别这两种传输方式都在实际的网络编程中使用,重要的数据一般使用TCP方式进行数据传输,而大量的非核心数据则可以通过UDP方式进行传递,在一些程序中甚至结合使用这两种方式进行数据传递。由于TCP需要建立专用的虚拟连接以及确认传输是否正确,所以使用TCP方式的速度稍微慢一些,而且传输时产生的数据量要比UDP稍微大一些。

套接字编程实战socket编程介绍TCP协议和UDP协议是传输层的两种协议。Socket是传输层供给应用层的编程接口,所以Socket编程就分为TCP编程和UDP编程两类。

socket对象的内置函数和属性在Python语言中socket对象中,提供如表所示的内置函数。

持续通信【示例】UDP接收数据

结合多线程实现UDP双向自由通信UDP不同于TCP,不存在请求连接和受理过程,因此在某种意义上无法明确区分服务器端和客户端,只是因为其提供服务而称为服务器端。如下服务端、客户端代码几乎一模一样,注意接收和发送端口对应,即可。

  

 

   

TCP编程介绍面向连接的Socket使用的协议是TCP协议。TCP的Socket名称是SOCK_STREAM。创建套接字TCP套接字,可以调用socket.socket()。示例代码如下:、

【示例】TCP客户端发送数据到服务端

    

结合多线程实现TCP双向传送(自由聊天)

【示例】TCP服务端结合多线程实现自由收发信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1559787.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA毕业设计187—基于Java+Springboot+vue3的电动车销售管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3的电动车销售管理系统(源代码数据库)187 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、管理员两种角色 1、用户: 注…

不用PS!patchwork快速解决多子图组合问题~~

如果现在你还是将自己制作的图表放在PS或者PPT中进行随意组合的化,那么这篇文章你就得好好看看了,今天小编就给大家安利一个超强的突变自由组合包-patchwork,让你轻松实现多图的自由组合。 更多详细的数据可视化教程,可订阅我们的…

科研绘图系列:R语言绘制中国地理地图

文章目录 介绍加载R包导入数据图a图b图c图d系统信息介绍 文章提供了绘制图a,图b和图d的数据和代码。该图展示了不同省份的物种分布情况。 加载R包 library(geojsonsf) library(sf) library(ggplot2) library(RColorBrewer) library(ggspatial) library(</

Springboot网上书城小程序—计算机毕业设计源码38707

目 录 摘要 1 绪论 1.1 研究背景及意义 1.2国内外研究现状 1.3系统开发的内容 1.4论文结构与章节安排 1.5小程序框架以及目录结构介绍 2 网上书城小程序系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析…

PowerJob做定时任务调度

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、区别对比二、使用步骤1. 定时任务类型2.PowerJob搭建与部署 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; PowerJob是基于java开…

Android SELinux——安全策略(三)

SELinux 通过严格的访问控制机制增强了 Linux 系统的安全性。它通过标签和安全策略来控制进程和文件的访问权限&#xff0c;从而保护系统免受未经授权的访问和攻击。 一、策略介绍 1、主要组件 安全标签&#xff08;Security Labels&#xff09;&#xff1a;每个文件、目录、…

Nginx中,413 Request Entity Too Large错误

背景 在Nginx中&#xff0c;413 Request Entity Too Large错误通常发生在尝试上传或发送超过Nginx配置文件中的client_max_body_size限制的文件时。这个错误意味着请求的正文大小超过了Nginx允许的最大值。 解决这个问题的方法是在Nginx配置文件中增加client_max_body_size的值…

运动耳机选哪个品牌比较好?盘点五大高品质运动耳机推荐!

在骨传导耳机日益普及的同时&#xff0c;一个不容忽视的问题也逐渐暴露在大众视野之中。根据可靠消息&#xff0c;有超过九成的运动爱好者反馈在使用骨传导耳机时感到佩戴不适&#xff01;作为一名有着5年经验的运动达人&#xff0c;我秉持着对消费者负责的态度&#xff0c;同时…

【力扣刷题实战】(顺序表)移除元素

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 力扣题目&#xff1a; 移除元素 题目描述 示例 1&#xff1a; 示例 2&#xff1a; 解题思路 具体思路 题目要点 完整代码 兄弟们共勉 &#xff01;&#xff01;&#xff01; 每篇前言 博客主页&#xff1a;小卡…

【新品发布】数字能源EMS管理再掀新篇章

致远电子EM系列工商业储能网关累计装机容量突破2GWh&#xff01;聚焦数字综合能源应用&#xff0c;全新一代EM-800/EM-1000G发布&#xff0c;见证光储充时代的来临&#xff01; 早在2008年&#xff0c;致远电子的工程师在为国内某新能源企业设计光伏通讯管理机方案时&#xff0…

Leetcode 50. Pow ( x , n ) 快速幂、取模 C++实现

问题&#xff1a;Leetcode 50. Pow ( x , n ) 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数。 算法&#xff1a; 具体实现流程如下&#xff1a; 代码&#xff1a; class Solution { public:double myPow(double x, int N) {double ans 1;long long n N;if (n <…

研究生异地报名,需要社保缴费记录,没有社保记录怎么办。

1、户籍在安徽省&#xff0c;在北京工作&#xff0c;想报北京科技大学&#xff1b; 招生简章中没有提社保记录&#xff0c;但是在报名的时候&#xff0c;又出来要求&#xff1a;北京连续6个月的社保记录。这里是指在北京市考试的要求。没有连续社保缴费记录&#xff0c;肯定不能…

软考《信息系统运行管理员》- 4.1信息系统软件运维概述

4.1信息系统软件运维概述 信息系统软件运维的概念 信息系统软件运维是指信息系统软件在开发完成投入使用后&#xff0c;对信息系统软件进行的改正 性维护、适应性维护、完善性维护、预防性维护等软件工程活动。 信息系统软件的可维护性及维护类型 信息系统软件维护工作直接…

dvwa:sql注入、sql盲注全难度解析

sql注入 easy 单引号闭合 id2 and if(11,sleep(3),1) and 11 ​ 联合注入&#xff1a; id2 union select database(),user() -- ​ 报错注入&#xff1a; id2 and updatexml(1,concat(0x7e,database(),0x7e),1) -- medium mysql_real_escape_string() 调用 mysql 库的函数 mys…

gbase8s的事务、并发控制、锁机制、隔离级别

一、事务概念 事务是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成&#xff0c;否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元&#xff0c;可以简化错误恢复并使应用程序更…

SpringBoot美发店解决方案:打造智能门店

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理美发门店管理系统的相关信息成为必然。开发…

收银系统源码营销活动-商品组合套餐

1. 功能描述 商品组合套餐&#xff1a;商家可以把不同的商品组合成套餐在收银台售卖&#xff0c;同时可以利用该套餐做一些会员拉新活动&#xff0c;如设置该活动仅限会员用户才可以购买等。还可以针对套餐的商品选择进行设置&#xff0c;如超市开业活动&#xff0c;价值19.8元…

JVM性能调优-JVM工具使用

命令行工具 jps jps -q 只看进程id jps -l 显示java进程的完整类名 jps -m 查看传递给主类main()的参数 jps -v 列出虚拟机启动时的jvm参数 以上参数可以组合使用 jstat 查看JVM统计信息 例&#xff1a;jstat -gc -t 19788 1000 10 -gc&#xff1a;打印gc统计信息 ;-t&am…

微信+AI应用平台之BotChoice 插件实现灵活调用扣子、dify

github地址&#xff1a;https://github.com/javak8/bot_choice.git 说明 BotChoice项目插件是作者原创插件, 根据提示词调用不同bot/model,可以实现多指令执行 目前bot/model只支持openai接口规范 可以多指令执行 &#xff0c;比如&#xff1a; /热点文案 /搜图片 杭州超市…

【Elasticsearch 实战与原理解析】好书推荐

Elasticsearch 实战与原理解析 在当今这个信息爆炸的时代&#xff0c;数据的存储、检索和分析变得越来越重要。Elasticsearch&#xff0c;作为一个基于 Lucene 的开源搜索引擎&#xff0c;以其强大的全文搜索能力、分布式特性和易用性&#xff0c;成为了数据检索领域的佼佼者。…