Python之网络编程 osi协议
网络协议篇(osi七层协议)
一 互联网的本质
互联网通信的原理:
通过各种物理连接介质连接 网线 电话线 无线传输 基站 等
找准确确定对方计算机(准确到软件)的位置 类似电话的拨号
通过统一的彼标准(一揽子协议)进行数据的收发
一揽子协议 : 指的是互联网协议 , 一个个的标准
英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite).
互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。
互联网协议按照功能不同分为 osi 七层或 tcp / ip 五层或 tcp / ip 四层
C/S 与 B/S架构
C : client端 , 客户端
B : browser端
S : server端
C/S 客户端与服务器之间的架构
: QQ 微信 游戏 等 APP 都属于C/S 架构
优点 : 安全性高, 个性化设置, 功能全面 响应速度快
缺点 : 开发成本高, 维护成本高, (基于APP), 面向的客户固定
B/S 游览器与服务器之间的架构 : 他属于C/S架构 最近几年比较流行的特殊的C/S架构
优点 : 开发维护成本低, 面向的用户广泛
缺点 : 安全性相对较低, 响应速度相对慢, 个性化的设置单一
osi七层协议(五层协议)
物理层
一系列的物理连接介质: 网线 光纤 电缆等
发送的数据就是0100比特数据流, 这些数据连续不断地收发 , 不过物理层拿到比特流没有用, 不知道这些数据代表的意义, 数据要进行分组(按照一定规则),数据分组这件事物理层做不了
数据链路层: 以太网协议
一组电信号构成一个数据报, 叫做 帧
每一个数据帧分成: 报头head 和 数据date两部分
数据头(head) | date数据
数据头: 固定长度18个字节
源地址 , 目的地址 , 数据类型
date数据: 46 字节 < = date <= 1500字节
数据头为什么要固定?
固定就是个标准 统一 为了提取源地址以及目标地址
以太网协议中源目标地址如何设置唯一?
网线直接接触的硬件就是网卡.网卡上有一个地址,mac地址,确定计算机的唯一性的物理地址.
网卡上: 12位 16进制组成的一串数字: 前六位 厂商编号: 后六位:流水线号.
网络层: IP 协议层 确定对方的局域网的位置
广播 mac地址+ ip == 可以查找世界任意一台计算机
计算机的通信 : 计算机的软件与服务器的软件进行的通信
传输层:端口协议
广播 mac地址 + ip + 端口 == 可以找到世界上任意一台计算机对应的软件
应用层: 软件自己定义的协议
QQ 发送数据 : "今晚请我吃饭" ---> {id:'念','content':'今晚请我吃饭'}
将数据按照自己定义的协议进行封装 http FTP协议
五层协议重新梳理:
服务器: 大黑盒子, 机房声音很大,对温度,湿度,等环境都有要求,双电源,双网卡,系统linux.
详细解释中间环节一些特殊的功能:
数据经过以太网协议封装后,先要从局域网内进行吼.每次发消息,每次都要吼,这样效率也是很低的.(数据给交换机,交换机在分发出去.)
交换机的自主学习功能:
广播: 吼.
单播: 单线直接联系.
物理层---> 数据链路层(以太网协议(mac地址)) ---->网络层(IP协议) ----> 传输层(端口协议(TCP,UDP协议)) ---> 应用层:
mac地址 + 广播形式 + ip地址 + 端口 == 锁定全世界范围内的任意一个计算机的某软件的位置.
ip地址 + 端口 == 锁定全世界范围内的任意一个计算机的某软件的位置.
传输层: 端口协议.
TCP协议,UDP协议.
端口: 0~65535端口号.
1~1023系统占用的端口号.
1024~8000之内:一般的是有软件占用.
TCP的三次握手四次挥手
客户端 与 服务端第一次建立通信联系 需要三次''握手''.
建立的链接不能一直连接着.
TCP协议: 好人协议,不会拒绝别人.
syn洪水攻击: 黑客会虚拟很多的假IP,然后访问你的服务器,半连接池,缓冲效果.
四次挥手:
udp与tcp
tcp协议:
优点:好人协议,流式协议.稳定,安全,
缺点: 效率低,
使用TCP的应用:Web浏览器;文件传输程序。
udp协议:
优点: 效率高,传输快.
缺点: 不安全,不是面向连接的,不可靠
使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP),微信qq。
转载于:https://www.cnblogs.com/Jacob-yang/p/11228925.html
- 点赞
- 收藏
- 分享
- 文章举报
- 【python】网络编程-UDP协议套接字
- Python基础第十八天(网络编程,UDP协议,TCP协议)
- 第一阶段:Python开发基础 day33 网络编程之socketsever模块和udp协议
- Python网络编程之TCP与UDP协议套接字用法示例
- 网络编程的OSI协议和TCP/IP协议
- PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
- 3.10 学网络编程 协程 osi七层协议-物理层-数据链路层-网络层
- python学航_OSI七层网络协议
- python(12 网络编程 网络协议tcp/ip协议 IP地址 端口 )
- 第一阶段:Python开发基础 day31 网络编程之基础--五层协议
- Python3之基于UDP协议的网络编程
- python(12-2 网络编程 udp ,tcp 协议)
- 网络编程之服务端和客户端【Python版】
- python 网络编程学习: 1 初识 SOCKET
- python网络编程-TCP协议中的三次握手和四次挥手(图解)
- python-网络编程基础(2)
- python网络编程
- Python 网络编程
- python网络编程-Select\Poll\Epoll异步IO
- python之网络编程