软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
一、网络编程
软件开发架构
C/S架构
C:客户端 想体验服务的时候才会去找服务端体验服务
S:服务端 24小时不间断的提供服务,即时监听,随时待命
B/S架构
B:浏览器 想体验服务的时候才会去找服务端体验服务
S:服务端 24小时不间断的提供服务,即时监听,随时待命
实际上B/S架构也是C/S架构的一种
两种事物要想相互通信最基本的方式是通过一个规定好的协议去执行,然后就能得到有效沟通(通信),比如不同国家的人要想互相通话就得有个全球的语言标准——英语,全世界基本语言就是英语,我们知道都懂英语,就能和全世界任何懂英语的人进行沟通交流了。
同样的,计算机要想与计算机沟通交流也得需要这么一个规范,也就是前提条件,所有计算机都执行这个前提条件后,就能互相愉快的传输信息了
这个规范就是:OSI七层协议
在python里面我们需要了解五层就可以了:
应用层
传输层
网络层
数据链路层
物理层
接下来从下至上分别说说各层的作用:
1、物理层:
实现计算机之间的物理连接,传输数据通过0101的二进制,0或1分别代表高电频和低电频
电信号工作原理:高低电频
2、数据链路层:
如果只是01010101010这种二进制高低电频的电信号之间传输是远远不够的,因为我们根本不知道他们的含义,或者说获取数据该怎么取正确读取,所以在物理层上面就规定了一个数据链路层,也就是我们听过的‘以太网协议’
协议规定:
1—二进制数据的分组方式
- 一组电信号构成一个数据包,叫做‘帧’
- 每一数据帧分成:报头head和数据data两部分
head | data |
2—只要是接入互联网的计算机,都必须有一块网卡!
网卡上面在出厂的时候就刻有世界唯一的编号,这个编号就叫 mac地址
长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
类似这种:C8-5B-76-D6-EE-F1
特别强调:其实有了物理层和数据链路层的话,就可以实现基本的网络通信了,即基于以太网协议通信,这种通信基本靠吼!!!
实现过程类似这样:比如电脑A要找电脑B通信,电脑就会把这个‘我要找mac地址为***的电脑,信息广播出给所有的电脑,所有已经连接的电脑就会听到,只有mac地址匹配的电脑B才会得到相应与电脑A通信。
弊端:广播风暴
这里还有一个事情需要去做,一台电脑和另外一台电脑通信可以连一根网线,那一台电脑和多态电脑通信呢,岂不是多台电脑都需要来一个网线插到那一台电脑上,这样的做肯定是不符合现实的。所以就有了交换机
交换机:如果没有交换机,你的电脑就变成了马蜂窝,有了交换机之后,所有的电脑只需要有一个网卡连接交换机
即可实现多台电脑之间物理连接
3、网络层:(IP协议)
通过交换机只能实现局域网中的电脑之间的通信,要想一个计算机与局域网以外的任何一个局域网里的电脑实现数据传输的话,就需要引入网络层了,也就是ip协议
IP协议规定:计算机必须有一个ip地址
ip地址的特点:点分十进制
有两个版本:ipv4和ipv6
最小0.0.0.0
最大255.255.255.255
ip协议可以跨局域网传输
ip地址能够唯一标识互联网中独一无二的一台机器
这里有个arp协议:根据ip地址解析mac地址
4、传输层(端口协议)
TCP,UDP基于端口的工作协议
计算机之间的通信本质上来说是计算机上面的应用程序之间的通信,我们知道了ip是电脑标识的唯一,那么电脑上我们实际上使用的是操作系统(本质上也是软件),应用程序来实现网络通信(数据传输)的话同时进行是否会打架呢?
这里就引出端口,端口就是唯一标识一台计算机上某个基于网络通信的通道
注意:一台计算机上同一时间一个端口号只能被一个应用程序占用
小结:
ip地址:唯一标识全世界接入互联网的独一无二的机器
port端口号:某一时间段,唯一标识一台计算机上的某一个应用程序
ip+port:能够唯一标识全世界上独一无二的一台计算机上的某个应用程序
TCP协议:(流式协议,可靠协议)
三次握手四次挥手
三次握手:建立连接
四次挥手:断开连接
TCP协议是一种安全的协议:变现在:建立连接后才可以传输数据,数据传输完成后才能断开连接。
软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)的更多相关文章
- 1、网络并发编程--简介、软件开发架构、OSI七层协议
python复习 变量与常量 基本数据类型 内置方法 字符编码.文件操作 函数 函数参数.闭包函数.装饰器 面向对象 封装.继承.多态 """ 什么是对象 数据与功能的结 ...
- TCP协议之三次握手四次挥手
一.TCP协议简述 TCP协议位于传输层用来建立传输数据的通道以及传输数据,那么在这一层的tcp协议就涉及到客户端与服务端通信的连接,数据的传输.关闭连接. 通信的连接使用的就是客户端与服务端的三次握 ...
- 软件开发架构与网络之OSI七层协议(五层)
本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...
- python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01
面向对象补充知识点(面向对象的应用) 扩展json序列化所支持的数据类型(分析源码) import json from datetime import datetime, date # ------- ...
- 软件开发架构,网络编程简介,OSI七层协议,TCP和UDP协议
软件开发架构 什么是软件开发架构 1.软件架构是一个系统的草图. 2.软件架构描述的对象是直接构成系统的抽象组件. 3.各个组件之间的连接则明确和相对细致地描述组件之间的通讯. 4.在实现阶段,这些抽 ...
- 网络架构,七层协议,三次握手四次挥手,socket套接字简单编程
一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...
- Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)
Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: ...
- OSI七层协议&TCP协议(三次握手四次挥手)
今日内容 python 基础回顾 软件开发架构 网络理论前戏 OSI 七层协议(五层) TCP协议 三次握手与四次挥手 UDP协议 内容详细 一.python 基础回顾 1.基本数据类型 整型 int ...
- python基础(29):网络编程(软件开发架构、网络基础、套接字初使用)
1. 软件开发架构 我们了解的程序之间通讯的应用可分为两种: 第一种是应用类:qq.微信.百度网盘.腾讯视频这一类是属于需要安装的桌面应用. 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就 ...
随机推荐
- SQL Server中表锁定的原理及解锁演示
有几个朋友留言建议结合例子来演示一下, 上篇已经说过锁的几种类型, 可以利用系统动态视图sys.dm_tran_locks查看到,重要的栏位如下: resource_type 被锁的资源类型(Data ...
- Django入门五之admin管理
1. 准备工作 #settings.py #urls.py 2. 创建管理员账号 进入CMD 3. 运行服务器 登录后,发现没有数据的 4. 创建数据 在website/blog/ 新建一个admin ...
- Python 描述符是什么?以及如何实现
先看一个例子,@property.被@property修饰的成员函数,将变为一个描述符.这是最简单的创建描述符的方式. class Foo: @property def attr(self): pri ...
- arcEngine开发之根据点坐标创建Shp图层
思路 根据点坐标创建Shapefile文件大致思路是这样的: (1)创建表的工作空间,通过 IField.IFieldsEdit.IField 等接口创建属性字段,添加到要素集中. (2)根据获取点的 ...
- RocketMQ部分数据消费不了问题排查
问题现象 今天忽然收到RocketMQ预警信息如下: 提醒有部分数据没有消费,产生堆积情况. 打开RocketMq-Console-Ng查看如下图形式: 备注:第一反应是Consumer Group内 ...
- MySQL松散索引扫描与紧凑索引扫描
什么是松散索引? 答:实际上就是当MySQL 完全利用索引扫描来实现GROUP BY 的时候,并不需要扫描所有满足条件的索引键即可完成操作得出结果. 要利用到松散索引扫描实现GROUP BY,需要至少 ...
- MQ、JMS 关系的理解
MQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传 ...
- 建立CMenu菜单项,实现选中菜单项点击左键响应事件
这里我只是根据自己的项目做了一些总结,实现点击右键弹出菜单项,点左键选择菜单项: CMenu menu; VERIFY(menu.CreatePopupMenu());//新建一个cmenu菜单项 m ...
- ConnectionString 属性尚未初始化
关于"ConnectionString 属性尚未初始化"的问题(如下图), 我在下面一段代码中发现了问题所在: public bool ReturnFlag(stri ...
- [Poi2012]Festival 差分约束+tarjan
差分约束建图,发现要在每个联通块里求最长路,600,直接O(n3) floyed #include<cstdio> #include<cstring> #include< ...