软件开发架构介绍||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类:比如百度.知乎.博客园等使用浏览器访问就 ...
随机推荐
- 44.1khz 16位比特双声道一分钟的音乐文件占多少硬盘空间?
2*2*44.1*1000*60=10584000字节=10M2个声道*(16比特/8比特)字节*采样率(每秒采样44.1*1000次)*一分钟有60秒16比特是精度,描述振幅的,16比特等于2个字节 ...
- 使用float属性的一些小技巧
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPwAAACJCAIAAACHJsJCAAAKUUlEQVR4nO2dTY8cxRnHd73LLsusDd ...
- 通过数据流处理-微信小程序生成临时二维码
1.小程序代码 onLoad: function (options) { var that = this api.Login(function (login) { var codeModel = ne ...
- 节流throttle和防抖debounce
underscore.js提供了很多很有用的函数,今天想说说其中的两个.这两个函数都用于限制函数的执行. debounce 在解释这个函数前,我们先从一个例子看下这个函数的使用场景.假设我们网站有个搜 ...
- 【转】IntelliJ IDEA中文乱码问题
1.首先是编辑器的乱码,这个很好解决,file->settings->appearence里面有个Name设置成支持中文的字 体(这个很重要) 同样还要再settings中的Eidtor- ...
- (七)SpringBoot2.0基础篇- application.properties属性文件的解析及获取
默认访问的属性文件为application.properties文件,可在启动项目参数中指定spring.config.location的参数: java -jar myproject.jar --s ...
- sap 内表
内表的目的在ABAP/4中,主要使用表格.表格是R/3系统中的关键数据结构.长期使用的数据存储在关系数据库表格中.关于如何读取和处理数据库表格的详细信息,参见读取并处理数据库表.除了数据库表格,还可以 ...
- Spring提取@Transactional事务注解的源码解析
声明:本文是自己在学习spring注解事务处理源代码时所留下的笔记: 难免有错误,敬请读者谅解!!! 1.事务注解标签 <tx:annotation-driven /> 2.tx 命名空间 ...
- 关于SELinux
出现背景以及发展历程 SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」 和SCC(Secu ...
- CFile类的open方法中的参数说明
CFile::Open是在MFC里面,打开一个文件的方法. Open函数的原型如下: virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, ...