python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术
python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术
1. C/S、B/S架构
C、B、S代表含义:
C:client端(客户端)
B:browser(浏览器)
S:server端(服务器)
C/S架构:基于客户端与服务端之间的通信
例如:qq、游戏、抖音
优点:满足个性化设置,响应速度快
缺点:开发成本,维护成本高,占用空间,用户固定
B/S架构:基于浏览器与服务器之间的通信
例如:谷歌浏览器、火狐浏览器
优点:开发维护成本低,占用空间相对较低,用户不固定
缺点:功能单一,没有个性化设置,响应速度相对较慢
2. 网络通信原理
互联网,如何利用计算机进行联系
1.两台计算机要有一堆物理连接介质连接
2.找到对方计算机软件位置
3.遵循互联网通信协议
3. 简单串联五层协议以及作用
1. 物理层
物理层:
物理层指的就是网线,光纤,双绞线等物理连接介质,传输的是比特流
比特流:
bit就是0101跟水流一样的源源不断的发送01010101
2. 数据链路层
数据链路层由来:
单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思
数据链路层的功能:
定义了电信号的分组方式,数据链路层对比特流进行分组
以太网协议:
对比特流进行合理的分组.
早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet数据报:过网络传输的数据的基本单元,包含一个报头(header)和数据本身data
1.报头header包含:(固定18个字节):发送者源地址包含6个字节,接收者目标地址包含6个字节,数据类型包含6个字节
2.数据data包含:(最短46字节,最长1500字节) 3.总结:一帧数据, header长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送,不够64字节的话会补齐mac地址:
1.就是计算机网卡上记录的地址,世界上所有的计算机独一无二的标识,用于局域网内广播(单播)时查找的计算机位置 2.head中包含的源和目标地址由来:以太网协议(ethernet)规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址 3.源mac地址|目标mac地址|数据类型|date 4.根据mac地址就可以找到计算机位置
计算机的通信方式:
1.同一局域网内,通过广播的形式通信 2.消息广播一经广播发出,局域网内所有的计算机都能收到消息,分析消息,根据Mac地址判断是不是找自己的,不是就会丢弃. 3.在同一局域网内mac地址+广播 就可以通信了 4.计算机只能在局域网内进行广播,范围大了,会造成广播风暴,效率极低 5.单播/广播定义:单播是单独联系某一个人,广播是给所有人发送消息(群发)
交换机的mac地址学习功能:
一个交换机的5个接口: 5个计算机.
1: FF-FF-FF-FF-FF-FF
2: FF-FF-FF-FF-FF-FF
3: FF-FF-FF-FF-FF-FF
4: FF-FF-FF-FF-FF-FF
5: FF-FF-FF-FF-FF-FF 接口1: 源mac 1C-1B-0D-A4-E6-44 目标1C-1C-0D-A4-E5-44 |数据 以广播的形式发出
2,3,4,5口都会接收到消息,5口是最终的目标地址,交换机就会将5口与mac地址对应上.
1: 1C-1B-0D-A4-E6-44
2: FF-FF-FF-FF-FF-FF
3: FF-FF-FF-FF-FF-FF
4: FF-FF-FF-FF-FF-FF
5: 1C-1C-0D-A4-E5-44
当五个口都对应上具体的mac地址,再次发消息,就不会广播了,就会以单播发送. # 交换机:分流连接计算机的作用
# 知道对方的mac地址才可以以广播的形式发消息.实际上,网络通信中,只要知道对方的IP与自己的IP即可.
3. 网络层
网络层的由来:
有了以太网协议(ethernet)、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,这会是一种灾难必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关
网络层功能:
引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址
IP协议:(Internet Protocol)互联网协议,确定局域网(子网)的位置
1.规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4 2.一个ip地址通常写成四段十进制数,例:172.16.10.1 3.IP协议的作用:一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络
子网掩码:
1.C类子网掩码: 255.255.255.0 2.ip地址 + 子网掩码 按位与运算 计算出是否在统一局域网(子网,网段). 3.C类子网掩码 一个网段最多可以承载253个IP地址,172.16.10.255 广播地址 被占用;还有两个被占用
ARP协议:(Address Resolution Protocol)地址解析协议,通过对方的ip地址获取到对方的mac地址.
源码mac 目标mac 源IP 目标IP 数据
1C-1B-0D-A4-E6-44 FF:FF:FF:FF:FF:FF 172.16.10.13 172.16.10.156 数据 第一次发消息:发送到交换机---> 路由器,广播的形式发出去,目标计算机收到消息,就要回消息: 源码mac 目标mac 源IP 目标IP 数据
1B-1B-0D-A4-E6-54 1C-1B-0D-A4-E6-44 172.16.10.156 172.16.10.13 数据路由器种类、内网/外网、DHCP协议
1.路由器的种类:家用路由器,企业版路由器
2.外网(公网)IP, 是真实的ip
内网(局域网)IP 都是假的,都是由路由器虚拟的.
3.DHCP协议: 路由器自动分发的IP地址,网关等等.
4. 传输层
端口协议:
确定软件在计算机的位置, UDP协议,TCP协议
端口详细信息:
一台电脑一般有65535端口,1~1024操作系统专门使用的端口
常用端口:mysql数据库:3306,redis:6379,SSH:22,自己开发软件都是8080以后的端口号TCP协议
定义:面向连接的协议,流式协议,安全可靠效率低的协议,传输文件,浏览器等
UDP协议
定义:用户数据报协议,不可靠的、无连接的服务,传输效率高
TCP协议的三次握手和四次挥手
三次握手:(seq/序列号)
详细解释:
第一次握手:客户端发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,服务端由SYN=1,知道客户端要求建立联机; 第二次握手:服务端收到请求后要确认联机信息,向客户端发送ack number=(客户端的seq+1),syn=1,ack=1,随,随机产生seq=7654321的包; 第三次握手:客户端收到后检查ack_number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,客户端会再发送ack number=(服务端的seq+1),ack=1,服务端收到后确认seq值与ack=1,则连接成功。 完成三次握手后,客户端和服务端开始传送数据。
四次挥手:
为什么握手中间两次可以合并,而挥手中间两次不能合并
1.客户端发送完请求后一般就会关闭,这个时候可能服务端还没有发完 2.合并的话,意思就是客户端关闭的时候服务端也会一起关闭 3.可能客户端在关闭的时候,服务端可能还在发送数据,可能会造成数据丢失
syn洪水攻击
制造大量的假的无效的IP请求服务器,致使正常的IP访问不了服务器
5. 应用层
- 自己定义自己的协议
4. 五层协议流程图
五层协议流程图:五层协议:应用层,传输层,网络层,数据链路层,物理层
5. 两台计算机的通信流程
前提:知道目标mac
1.计算机A 发送一个消息给 计算机B: 源码mac 目标mac 源IP 目标IP 数据
2.单播的形式发送到交换机,交换机会检测自己的对照表有没有目标mac,
3.如果有,单播传.如果没有,交由上一层: 路由器:
4.路由器收到消息: 对消息进行分析:
5.要确定目标计算机与本计算机是否在同一网段,
如果在同一网段,直接发送给对应的交换机,交换机在单播发给目标mac.
如果不是在同一网段: 见下图前提:不知道目标mac
1.计算机A 发送一个消息给 计算机B: 源码mac 目标mac不知道 源IP 目标IP 数据
2.单播的形式发送到交换机,交换机交由上一层路由器:路由器收到消息: 对消息进行分析:
3.要确定目标计算机与本计算机是否在同一网段,
如果在同一网段通过 IP以及ARP协议获取到对方的mac地址,然后在通信.
如果不是在同一网段: 见下图不在同一网段,执行下图黑色箭头操作
6. 七层协议简述
七层协议:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
7. 端口映射技术
端口映射:
端口映射就是将外网主机的IP地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。
在浏览器输入www.JD.com发生了什么
python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术的更多相关文章
- day28——C/S与B/S架构、网络通信原理、osi七层协议、UDP、TCP协议、TCP的三次握手与四次挥手
day28 C/S B/S架构 C:client 客户端 B:browse浏览器 S:server 服务端 C/S C/S架构:基于客户端与服务端之间的通信 QQ.游戏.皮皮虾 优点:个性化设 ...
- python网络编程-01
python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...
- python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01
面向对象补充知识点(面向对象的应用) 扩展json序列化所支持的数据类型(分析源码) import json from datetime import datetime, date # ------- ...
- python网络编程01
1.什么是C/S架构? 客户端/服务器架构.实现服务端软件与客户端软件基于网络的通信. 2.互联网协议是什么?分别介绍五层协议中每一层的功能? 互联网协议是指用于互联网通信的规范.分为:osi七层.t ...
- 【网络编程01】socket的基础知识-简单网络通信程序
1.什么是socket socket(套接字),简单来说是IP地址与端口(port)的组合,可以与远程主机的应用程序进行通信.通过IP地址可以确定一台主机,而通过端口则可以确定某一个应用程序.IP+端 ...
- 图解Python网络编程
返回目录 本篇索引 (1)基本原理 (2)socket模块 (3)select模块 (4)asyncore模块 (5)asynchat模块 (6)socketserver模块 (1)基本原理 本篇指的 ...
- python 网络编程(Socket)
# from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...
- python 网络编程 IO多路复用之epoll
python网络编程——IO多路复用之epoll 1.内核EPOLL模型讲解 此部分参考http://blog.csdn.net/mango_song/article/details/4264 ...
- Python 网络编程——socket
一 客户端/服务器架构 客户端(Client)服务器(Server)架构,即C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务) 理想/目标状态—— 最常用的软件服务器是 ...
随机推荐
- [每日一题2020.06.16] leetcode双周赛T3 5423 找两个和为目标值且不重叠的子数组 DP, 前缀和
题目链接 给你一个整数数组 arr 和一个整数值 target . 请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target .可能会有多种方案,请你返回满足要求的两个子数组长度和的 ...
- (九)maven-compiler-plugin 插件详解
<plugin> <!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 --> <groupId> ...
- Java++:安全|API接口安全性设计
接口的安全性主要围绕 token.timestamp 和 sign 三个机制展开设计,保证接口的数据不会被篡改和重复调用,下面具体来看: Token授权机制: 用户使用用户名密码登录后服务器给客户端返 ...
- 东方步进电机马达驱动板CVK系列说明书
东方步进电机马达驱动板CVK系列说明书
- 循序渐进VUE+Element 前端应用开发(11)--- 图标的维护和使用
在VUE+Element 前端应用中,图标是必不可少点缀界面的元素,因此整合一些常用的图标是非常必要的,还好Element界面组件里面提供了很多常见的图标,不过数量不是很多,应该是300个左右吧,因此 ...
- JS新界面关闭原界面刷新的多种形式
------------恢复内容开始------------ 1.新界面为当前界面弹出的形式: 第一步:首先原界面的原生JS事件需要放到 (function () { ...... })(); 中 ...
- Beta冲刺<6/10>
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第六天(05.24) 作业正文 如下 其他参考文献 ... B ...
- Mac上使用brew另装ruby和gem的新玩法
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 众所周知,Mac ...
- vue通过属性绑定为元素设置class样式
第一种方式,直接传递一个数组,注意使用v-bind绑定 <h1 :class="['red','size'">这是一个h1文本</h1&g ...
- 《Java核心技术》笔记:第7章 异常、断言和日志
1. 异常 (P 280)异常处理需要考虑的问题: 用户输入错误 设备错误 物理限制 代码错误 (P 280)传统的处理错误的方法是:返回一个特殊的错误码,常见的是返回-1或者null引用 (P 28 ...