一、网络和网络通信

同一个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)

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

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

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

IP地址不能相同

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

作用

网络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地址,只要涉及本机内部通信,那么就不再走网络
端口

当前主机 运行了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地址和域名的映射关系,能够使用户更方便地访问互联网

网络通信整个流程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    为什么是三次链接不是两次
    确认双方都具有接收和发送功能

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

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

为什么是四次挥手

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

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

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

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

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

python_网络和网络通信相关推荐

  1. 【网络】网络通信原理

    网络通信原理初识 文章目录 网络通信原理初识 ==网络发展史== 独立模式 网络互连 局域网 组建局域网的方式 1. 基于网线直连 202208301341047 3. 基于交换机 4. 基于路由器 ...

  2. socket recv 服务端阻塞 python_网络编程(基于socket编程)

    网络编程(基于socket编程) socket套接字:应用程序通常通过socket"套接字"向网络发送请求或应答网络请求,是主机间或同一计算机中的进程间相互通讯 socket是介于 ...

  3. 什么叫爬虫python_网络爬虫是什么?

    互联网诞生之初,是为了让人们更容易的分享数据.交流通讯.互联网是桥梁,连接了世界各地的人们.网站的点击.浏览都是人为的,与你聊天的也是活生生的人.然而,随着技术的发展,人们对数据的渴望,出现了各种网络 ...

  4. 网络工程师为什么要学python_网络工程师学python

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  5. 爬虫用java还是python_网络爬虫是用python比较好,还是Java比较好呢?

    eechen 2016/07/11 14:17 可以看看PHP的几个DOM操作库: Simple-HTML-DOM , phpQuery, Ganon 比如轻松抓取PHP官方首页新闻的标题和发布时间: ...

  6. java 存储关系网络_java网络通信:HTTP协议 之 Sessions与Cookies

    通过前一篇博客的讲解,我们大体知道了HTTP协议是什么,它有什么组成,以及它的工作原理,那么在HTTP的很多特点中,有一点叫做,无状态,就HTTP是一个无状态的协议,如果需要前面的信息用于处理后边的请 ...

  7. Hyper-V 配置网络 (高级篇)

    配置虚拟网络 MS官方文档: http://technet.microsoft.com/zh-cn/library/cc816585(WS.10).aspx 更新时间: 2009年2月 应用到: Wi ...

  8. 详细讲解Hyper-V虚拟机的网络配置

    近几年最火热的IT术语就是虚拟化.云计算,随着Hyper-v2.0的发布,服务器虚拟化又一次走近我们的身边,在任何虚拟化环境,都需要考量虚拟网络的配置,那么,hyper-v如何支持网络,又是如何配置的 ...

  9. 无法读取源文件或磁盘_系统监控之磁盘和网络监控工具

    一:硬盘基础知识: 1.1:硬盘IOPS理论: IOPS (Input/Output Per Second) 是衡量磁盘性能的重要指标,IOPS指的是每秒磁盘可以处理的请求数据和返回数据的次数,一次请 ...

最新文章

  1. 甘肃黄土山地数十载现“满眼绿” 护林员四季不歇护植被
  2. python多值参数函数介绍,数字累加例子
  3. Web服务必须要知道的几个概念
  4. HR面 - 十大经典提问
  5. unrecognized selector sent to instance
  6. django 博客一
  7. Java生成随机常用汉字或姓名
  8. 微信小程序如何搭建自己的后台(超详细,超完整)(上线必备)!!!
  9. 新站seo如何进行站内优化
  10. 顺丰控股亏损:或时效件面临见顶危机,或下沉市场厮杀,或为220亿定增设局?
  11. java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...
  12. 苹果认怂了!iPhone 将改用 USB-C 接口
  13. 为双系统 Ubuntu grub启动项中添加Windows启动项
  14. FPGA 视频处理中外部SDRAM的作用
  15. 《30岁之前的每一天》读书笔记
  16. csp试题1:小明种苹果
  17. linux内核漏洞查询,GitHub - F1uYu4n/linux-kernel-exploits: linux-kernel-exploits Linux平台提权漏洞集合...
  18. 手办 android app,hpoi手办维基
  19. Hibernate一对多/多对一关系映射详解及相应的增删查改操作
  20. VM安装mac及dmg文件转换iso

热门文章

  1. 组建RAID从认识开始 手把手教你建磁盘阵列
  2. Derby 使用的2种方式:内嵌和独立
  3. 目前最流行的开发模式DevOps究竟是什么鬼?
  4. stm32开发板下esp8266通信
  5. 经典排序算法(1)——冒泡排序算法详解
  6. 两句话轻松掌握python最难知识点——元类
  7. Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
  8. vscode代码片段
  9. R语言Kruskal-Wallis检验检验多组组独立样本数据是否来自同分布(均值是否相同):为研究4种不同药物对儿童咳嗽的治疗效果,相似的病人随机分为4组、使用不同药物进行治疗、判断治疗效果是否相同?
  10. 斯坦福大学计算机科学phd,斯坦福大学计算机科学