python_网络和网络通信

一、网络和网络通信

同一个python程序内的不同函数如何共享数据
同一个电脑2个python程序如何共享数据
那么不同电脑如何实现共享数据
image

那么有了网络之后,可以QQ 百度网盘,微信等等实现数据的共享
以上都是网络的体现, 因为有了网络才实现了通信以及数据共享

不管是你的手机和你的电脑,或者是你的手机和别人的手机,或者是你的电脑和别人的电脑,只要有网都可以进行通信
使用qq、微信聊天等
通过浏览器来浏览页面、看京东的网站等
通过优酷、快播看片等等等
网络
网络的核心, 让你的数据和另外一方的数据共享, 不管是通过有线, 或者无线等等, 都可以称之为网络功能

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

二、软件开发架构
两个程序之间的通信大致分为两种

应用类:QQ、微信、soul、优酷等等需要安装的app或桌面应用
web类:百度、京东等需要使用浏览器浏览
以上分别对应了两个软件开发架构:

1、C/S架构
客户端(Client): 需要时才请求,像QQ、微信、优酷、新浪app 等需要下载的app或者桌面应用程序

服务端(Server): 一直运行,等待被连接或被请求并提供服务

腾讯 / 游戏选区选择的就是服务器
服务器就是一台为我们提供服务的机器
客户端就是接收数据的那一个应用程序
2、B/S架构
浏览器(Browser): 通过浏览器浏览网页
服务端
使用浏览器浏览京东网页的时候,浏览器是客户端,京东是服务端
3、B/S 与 C/S 之间的关系
包含关系

浏览器也是一种客户端, 只不过这里面的客户端是用浏览器实现的, 所以他又有了另外一个名字
网络通信基本概念
网卡
将计算机或者路由器连接到传输介质上的接口,传输介质可以是有线,也可以是无线, 又称网络接口控制器,网络适配器(network adapter)或局域网接收器(LAN adapter)

image

MAC地址
MAC地址,也叫硬件地址
是物理设备的唯一标识,出厂的时候被设定,每块网卡出厂时都被烧制上一个mac地址,一个设备的mac地址是全球唯一的
MAC地址用于在网络中唯一标识一块网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址
IP地址
在网络中, 使用飞秋发消息, 并且指定发送人, 消息就可以被送达指定地址, 因为被标记了一个唯一的地址, IP地址

就像寄快递, 写明收件人, 那么快递就会按照收件人的地址送达指定位置
image

IP地址是指互联网协议地址,是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,IP地址唯一标记了网络中的每一台主机

IP地址不能相同
image

IP地址重复,会导致数据送达位置不准确, 影响两台主机正常的网络通信
查看本机IP地址
打开网络和共享中心 --> 更改适配器 --> 找到对应网卡 --> 修改属性 --> Ipv4
win + R --> cmd --> ipconfig
IP地址版本
ipv4(ip version4)
.***.***.
256256256*256

实际上 : 0不能用, 255不能用

全球ip每个国家,每个省份等等还会划分属于自己的IP地址
ipv6
为了解决日后全球IP不够用的问题诞生了ipv6
IP地址的组成
image

网络号
主机号
网络号用于标记网络, 区分属于哪一个局域网
主机号标记同一个局域网的某一台主机

IP地址的分类
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。

同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机有一个主机ID与其对应

Internet委员会定义了5种IP地址类型以适合不同容量的网络(根据网络里用到的主机数不一样, 划分了5种类型),即A类~E类

image

随着时代的发展, 社会的进步, 那么256已经不能满足人们的需求, 于是乎诞生了B 类IP

随着时代的发展, 社会的进步, 那么256已经不能满足人们的需求, 于是乎诞生了A 类IP

D 类是用于广播,多点广播地址用来一次寻址一组计算机

E 类不用,早起发明的时候,是为了留存,后来诞生了ipv6, 基本不使用, 仅实验和开发用

其中A、B、C 3类(如下表格)由InternetNIC在全球范围内统一分配,D、E类为特殊地址
image

局域网和广域网
局域网
1、 局域网就是在固定的一个地理区域内由2台以上的电脑用网线和其他网络设备搭建而成的一个封闭的计算机组
2、 局域网可以是独立封闭运行的,也可以是和外网相连接的
广域网
又称广域网、外网、公网

1、 是连接不同地区局域网的通信远程网。通常跨接很大的物理范围,它是由无数个局域网+独立服务器构成的。
2、 所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络
交换机
解决多台电脑同时通信就需要借助交换机

image

交换机主要是用于组建局域网

网关
网关(Gateway)又称网间连接器、协议转换器。它是局域网通往外界的一大关卡, 是一个网络连接到另一个网络的“关口”
image

作用

网络A的IP地址范围为“192.168.1.1~192.168.1.254”,子网掩码为255.255.255.0
网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0

两个网络中的主机处在不同的网络里
要实现这两个网络之间的通信,则必须通过网关。

如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。
所以说,只有设置好网关的IP地址,才能实现不同网络之间的相互通信
路由
路由器是一个物理设备, 负责让主机连接外网

1、 一台路由器下可以有多个计算机,而且这些计算机各有各的局域网IP地址
2、 局域网电脑访问外部需要通过路由器, 从路由器出去之后,会被分配一个公网IP地址,也叫外网IP,同一局域网共用一个路由器的外部IP地址,通过外网IP上网
IP 地址的类型
公网ip
公网ip具有世界范围的唯一性,在广域网内,公网IP地址都是唯一的

私网ip
在同一局域网内,私网IP地址是唯一的。每台电脑都可以自己分配自己的IP,但是这个IP只在局域网中有效
同一个局域网内共用一个外网IP
局域网的ip地址范围,只要ip地址在这些范围内的就只能在局域网中通信

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
特殊IP:
127.0.0.1
这是本机的ip地址,只要涉及本机内部通信,那么就不再走网络
端口
image

当前主机 运行了3个应用程序, 需要和另外一台主机的一个应用程序实现通信,
除了通信内容和目标IP, 还需要一个端口号, 识别主机上的不同应用程序
发送 : 内容 + 目标IP + 目标端口

接收 : 原IP + 原端口 + 内容 + 目标IP + 目标端口

端口号分类
打开一个应用程序,操作系统会给这个运行起来的程序一个编号,就是端口号

1、知名端口
知名端口是众所周知的端口号,一般是从0-1023(不让用的端口号)

知名电话号 : 119 120 110

21/tcp FTP 文件传输协议
22/tcp SSH 安全登录、文件传送(SCP)和端口重定向
23/tcp Telnet 不安全的文本传送
25/tcp SMTP Simple Mail Transfer Protocol (E-mail)
69/udp TFTP Trivial File Transfer Protocol
79/tcp finger Finger
80/tcp HTTP 超文本传送协议 (WWW)
88/tcp Kerberos Authenticating agent
110/tcp POP3 Post Office Protocol (E-mail)
113/tcp ident old identification server system
119/tcp NNTP used for usenet newsgroups
220/tcp IMAP3
443/tcp HTTPS used for securely transferring web pages
2、动态端口
动态端口的范围一般是从1024到65535 (让用的端口号)

一般不固定分配某种服务,而是动态分配
动态分配是指当一个系统进程或者应用程序进程需要网络通讯时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用, 当这个进程关闭时,同时也就释放了所占用的端口号
DNS
负责解析IP地址和域名的映射关系,能够使用户更方便地访问互联网

image

网络通信整个流程
image

1、打开浏览器,想要访问京东首页,在地址栏输入了网址:www.jd.com

2、先将请求信息发给了交换机,然后交给了路由器(网关)

3、 路由发给DNS服务器,通过DNS服务器去解析京东的服务器IP

4、 路由器通过路由协议找到一个路由转发的最优路径,定位京东服务器,发送给京东的路由器

5、 京东的路由器发给京东的服务器

6、 服务器处理请求,按照来时的路径,返回到给电脑一个京东首页的html文件

7、 电脑收到消息,通过端口号找到浏览器

8、 浏览器渲染内核解析渲染, 呈现网页

image

网络通信协议
互联网协议 : 定义计算机如何接入internet,以及接入internet的计算机通信的标准

我们用网址去请求京东服务器,那京东怎么知道我们发的是什么意思, 我们要的是什么东西

那京东给我们返回来信息时, 京东怎么做能保证他给我们返回来的内容或者数据格式我们能看的懂

那么就需要一系列的标准来规范以上所有的通信行为, 这些标准称之为互联网协议,互联网上的所有行为都是通过一个一个协议来规范的,又称为‘互联网协议族’(Internet Protocol Suite)
TCP/IP协议簇
TCP/IP不是一个协议,而是一组协议的统称, 协作完成网络通信
分层和多协议的,每一层都是通过若干协议实现
因为TCP、IP协议是协议族中很重要的两个协议,所以以此命名
组成
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层(一般理解4层即可)

image

image

tcp/ip五层模型
应用层,表示层,会话层并作应用层

每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件
自上而下逐级依赖
物理层
通过用光缆、电缆、双绞线、无线电波等方式把电脑进行连接, 是把电脑连接起来的物理手段,负责传送0和1的电信号
image

数据链路层
单纯的0和1没有任何意义, 多少个电信号算一组?每个信号位有何意义?

确定0和1的分组方式, 也是定义了电信号的分组方式,一组电信号构成一个数据包,
这一层通常还提供错误检测和纠正,以确保数据的可靠传输
image

网络层
网络层的功能是建立主机到主机的通信
引进一套新的地址,使得我们能够区分不同的计算机以及不同的网络,这套地址就叫做”网络地址”,简称”网址”或IP地址
规定网络地址的协议叫ip协议
根据IP协议发送的数据,就叫做IP数据包
image

“标头”部分主要包括版本、长度、IP地址等信息,”数据”部分则是IP数据包的具体内容
传输层
建立”端口到端口”的通信
网络层的IP帮我们区分局域网以及主机, 通过ip可以确定唯一一台主机,如何标识这台主机上的应用程序, 就是通过端口
真正的通信指的的是主机中的应用程序间的通信。IP协议虽然能把数据送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用程序之间的通信。
image

“标头”部分主要定义了发出端口和接收端口,”数据”部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的”数据”部分
UDP协议
UDP:用户数据报协议,是OSI模型中一种无连接的传输层协议,它提供无连接的、不可靠的、无确认的端对端数据传送服务
image

传输数据之前源端和终端不建立连接
知道主机和端口号,直接发数据,不用先通气,不安全,简单,速度快, 有可能丢数据
1、特点:
无连接。使用UDP传输数据时不需要建立和释放连接,从而减少了数据传输的开销和时延。
不可靠性,安全性差。不能保证他们是否能到达目的地, 容易丢包
传输速度快,没有超时重发机制
2、应用
QQ (早期)
发邮件
飞秋
某些实时直播:要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延
如IP电话、实时视频会议,可靠数据传输对于这些应用来说并不是最重要的,数据出现较大的延迟,才是它们不可容忍的
Tcp 传输控制协议
是一种面向连接的、可靠的、基于字节流的传输层通信协议
image

步骤
建立连接
收发数据
关闭连接

  • 通过TCP协议与应用程序通信时,会先发送一个通信请求。这个请求必须被送到一个确切的地址。如果没有收到可以有一个重发机制
  • 在双方“握手”之后,TCP才会在两个应用程序之间建立一个通信连接, 通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止
    应用 :
    打电话: 在通讯之前,一定要先建立相关链接,才能开始说话
    特点:
    建立连接的基础上实现通信
    数据传输安全,稳定性好,可靠
    有超时重发机制,效率相对较慢,相对复杂
    tcp三次握手
    确认双方都具有接收和发送功能的过程
    在这里插入图片描述
    为什么是三次链接不是两次
    确认双方都具有接收和发送功能

如果C发送一个请求,没有及时送到服务器, 服务器实际上并没有收到, 那么C等待之后,没有响应会在重新发送 。服务器就收到了两个请求,服务器会分别应答。但是对于客户端来说,第一个是无效连接

image

四次挥手
断开一个TCP连接时,需要客户端和服务端共发送4次确认才会真正的断开
imageimage

为什么是四次挥手

TCP建立的是全双工通道,客户端发送断开请求后,服务器还是可以继续发送数据,当服务器确认断开后,才是真正的断开

应用层
应用层是最接近用户的一层

应用程序收到”传输层”的数据,展示给用户之前需要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则无法按照统一格式进行解读。”应用层”的作用,就是规定应用程序的数据格式

不同的协议分别用于规定电子邮件、网页、文件传输数据的格式,例如smtp http ftp

很多这样的协议共同构成了应用层

image

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python提供了多种库和模块来进行网络通信。其中,常用的是urllib和requests模块。 通过使用urllib模块,可以实现GET请求和POST请求。GET请求可以使用urllib.request的urlopen方法来发送请求并读取响应数据。下面是一个例子: ```python import urllib.request url = 'http://localhost:8080/NoteWebService/note.do?action=query&ID=10' req = urllib.request.Request(url) with urllib.request.urlopen(req) as response: data = response.read() json_data = data.decode() print(json_data) ``` 这个例子展示了如何发送一个GET请求并打印返回的JSON数据。 如果要发送POST请求,可以使用urllib.request的urlopen方法,并在请求中指定请求方法为POST。同时,还需要通过urllib.parse模块将请求的参数进行编码。下面是一个发送POST请求的例子: ```python import urllib.request import urllib.parse url = 'http://localhost:8080/NoteWebService/note.do' data = urllib.parse.urlencode({'action': 'query', 'ID': '10'}).encode() req = urllib.request.Request(url, data=data) # 指定请求方法为POST,并将参数编码后作为请求体 with urllib.request.urlopen(req) as response: data = response.read() json_data = data.decode() print(json_data) ``` 这个例子展示了如何发送一个带有参数的POST请求,并打印返回的JSON数据。 另外,还可以使用requests模块来进行网络通信。这个模块提供了更简洁和方便的接口。下面是一个使用requests模块发送GET请求的例子: ```python import requests url = 'http://localhost:8080/NoteWebService/note.do?action=query&ID=10' response = requests.get(url) json_data = response.text print(json_data) ``` 这个例子展示了如何使用requests模块发送一个GET请求并打印返回的JSON数据。 总结起来,Python提供了多种库和模块来进行网络通信,其中urllib和requests是常用的两个模块。通过它们,可以实现GET请求和POST请求,并处理返回的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [(十三)python网络通信](https://blog.csdn.net/m0_56517198/article/details/128943900)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [python_网络网络通信](https://blog.csdn.net/cwy0502/article/details/93058042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值