软件开发架构介绍||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类:比如百度.知乎.博客园等使用浏览器访问就 ...
随机推荐
- C/C++静态代码安全检查工具
静态代码安全检查工具是一种能够帮助程序员自动检测出源程序中是否存在安全缺陷的软件.它通过逐行分析程序的源代码,发现软件中潜在的安全漏洞.本文针对 C/C++语言程序设计中容易存在的多种安全问题,分别分 ...
- leetcode_1. Two Sum
leetcode_1. Two Sum 前言: 这段时间开始敲leetcode.我认为这并不仅仅只是为了应付笔试,面试.而是确实有着一定的意义. 尤其,你提交代码后,网站会多方面验证你的答案. 另外, ...
- Python_替换当前目录下文件类型
''' 将当前目录的所有扩展名为html的文件重命名为扩展名为htm的文件 方法一 ''' import os file_list=os.listdir('.') for filename in fi ...
- Python_marshal模块操作二进制文件
import marshal #导入模块 x1=30 #待序列化的对象 x2=5.0 x3=[1,2,3] x4=(4,5,6) x5={'a':1,'b':2,'c':3} x6={7,8,9} x ...
- PHP 7 新特性
PHP 7 新特性 标量类型声明 PHP 7 中的函数的形参类型声明可以是标量了.在 PHP 5 中只能是类名.接口.array 或者 callable (PHP 5.4,即可以是函数,包括匿名函数) ...
- 论文笔记(2):A fast learning algorithm for deep belief nets.
论文笔记(2):A fast learning algorithm for deep belief nets. 这几天继续学习一篇论文,Hinton的A Fast Learning Algorithm ...
- Hadoop平台基本组成
1.Hadoop系统运行于一个由普通商用服务器组成的计算集群上,能提供大规模分布式数据存储资源的同时,也提供了大规模的并行化计算资源. 2.Hadoop生态系统 3.MapReduce并行计算框架 M ...
- List数组和集合相互转换
1.List的toArray()方法用于将集合转换成数组,但实际上改方法是在Collection中定义的,所以所有的集合都具备这个功能, 其有两个方法:Object[] toArray() 和 ...
- SSM-Spring-16:Spring中一些名词解释
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- JoinPoint(连接点):所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spri ...
- 深夜学算法之SkipList:让链表飞
1. 前言 上次写Python操作LevelDB时提到过,有机会要实现下SkipList.摘录下wiki介绍: 跳跃列表是一种随机化数据结构,基于并联的链表,其效率可比拟二叉查找树. 我们知道对于有序 ...