day28

C/S B/S架构

  • C:client 客户端
  • B:browse浏览器
  • S:server 服务端
C/S

C/S架构:基于客户端与服务端之间的通信

​ QQ、游戏、皮皮虾

​ 优点:个性化设置,响应速度快

​ 缺点:开发成本,维护成本高,占用空间,用户固定

B/S

B/S架构:基于浏览器与服务端之间的通信

​ 谷歌浏览器、360浏览器、火狐浏览器等等

​ 优点:开发维护成本低,占用空间相对低,用户不固定

​ 缺点:功能单一,没有个性化设置,响应速度相对慢一些

网络通信原理

网络通信模拟

80年代,固定电话联系(还没有推广普通话)

​ 1、两台电话之间一堆物理连接介质

​ 2、拨号,锁定对方电话的位置

由于当时没有统一普通话,所以你如果和河南,山西,广西,福建等朋友进行友好的沟通交流,你必须学当地的方言.

推广普通话,统一交流方式.

​ 1、两台电话之间一堆物理连接介质

​ 2、拨号,锁定对方电话的位置

​ 3、统一交流方式

全球范围内交流

​ 1、两台电话之间一堆物理连接介质

​ 2、拨号,锁定对方电话的位置

​ 3、统一交流方式(英语)

话题转回互联网通信

我现在想和美国的一个girl联系,你如何利用计算机联系?

​ 1、两台计算机要有一堆物理连接介质

​ 2、找到对方计算机软件位置

​ 3、遵循一揽子互联网通信协议

osi七层协议

单串联五层协议以及作用

  • ******************物理层

物理层指的就是网线,光纤,双绞线等等物理连接介质

物理层发送的是比特流: 01010101010101010101只是发送比特流有什么问题???

数据应该有规律的分组,分组是数据链路层做的事情.

  • ********************数据链路层

数据链路层对比特流进行分组.

最开始从事互联网企业的就是美国的几家公司,各家有各家自定的分组标准.后来统一了标准: 对数据分组的标准.

*******以太网协议: 对比特流进行合理的分组.

一组数据01010101 叫做一帧,数据报.

​ head | data(晚上约么)

head是固定的长度:18个字节

​ 源地址: 6个字节

​ 目标地址: 6个字节

​ 数据类型: 6个字节

data: 最少是46个字节,最大1500字节.

一帧数据: 最少64个字节,最大1518个字节.

一帧数据|一帧数据......

每个电脑上都有一个网卡,网卡上都记录一个独一无二的地址.

******************mac地址: 就是你的计算机上网卡上标注的地址.

12位16进制数组成 :前六位是厂商编号,后六位是流水线号.

源mac地址 目标mac地址 数据类型 | data

'1C-1B-0D-A4-E6-44'

计算机的通信方式:

同一个局域网内,通过广播的形式通信.

消息一经广播发出,村里所有的人(局域网所有的计算机都能接收到消息,分析消息,是否是找我的,不是就丢弃),

计算机只能在局域网内进行广播: 范围大了 广播风暴,效率极低.

还有两个没有解决:

1. 不同局域网如何通信?
2. 软件与软件的通信,而不是计算机之间的通信.
  • 网络层

IP协议: 确定局域网(子网)的位置.

​ 找到具体软件的位置,上一层的事情

  • 传输层

端口协议: 确定软件在计算机的位置

  • 应用层

自己定义的协议.

广播(局域网内) + mac地址(计算机位置) + ip(局域网的位置) + 端口(软件在计算机的位置)

有了以上四个参数:你就可以确定世界上任何一个计算机的软件的位置.

对五层协议详细的补充说明

  • 数据链路层补充

同一个局域网通过广播的形式发送数据.

交换机的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地址,2口再次发消息,就不会广播了,就会以单播发送.

我们的前提是什么? 你必须知道对方的mac地址你才可以以广播的形式发消息.实际上,网络通信中,你只要知道对方的IP与自己的IP即可.

  • 网络层

IP协议:

ip地址:四段分十进制 192.168.0.12

取值范围 0255.0255.0255.0255

子网掩码: C类子网掩码: 255.255.255.0

ip地址 + 子网掩码 按位与运算 计算出是否在统一局域网(子网,网段).

计算172.16.10.1 与 172.16.10.128

172.16.10.1:10101100.00010000.00001010.00000001

255.255.255.0: 11111111.11111111.11111111.00000000

从属于的局域网: 172.16.10.0

172.16.10.128:10101100.00010000.00001010.10000000

255.255.255.0: 11111111.11111111.11111111.00000000

从属于的局域网: 172.16.10.0

172.16.10.1 ~172.16.10.255

C类子网掩码 一个网段最多可以承载多个IP地址?

172.16.10.0 被占用.

172.16.10.255 广播地址 被占用.

172.16.10.1 被占用.

253台计算机.

如果你要想给另一个计算机发数据, 你一定要知道对方的ip地址.

ARP协议:通过对方的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 数据

总结:

前提:知道目标mac:

​ 计算机A 发送一个消息给 计算机B

​ 源码mac 目标mac 源IP 目标IP 数据

​ 单播的形式发送到交换机,交换机会检测自己的对照表有没有目标mac,如果有,单播传.如果没有,交由上一层: 路由器:

路由器收到消息: 对消息进行分析:

要确定目标计算机与本计算机是否在同一网段,

​ 如果在同一网段,直接发送给对应的交换机,交换机在单播发给目标mac.

​ 如果不是在同一网段: ?

前提:不知道目标mac:

​ 计算机A 发送一个消息给 计算机B

​ 源码mac 目标mac不知道 源IP 目标IP 数据

​ 单播的形式发送到交换机,交换机交由上一层路由器:路由器收到消息: 对消息进行分析:

要确定目标计算机与本计算机是否在同一网段,

​ 如果在同一网段通过 IP以及ARP协议获取到对方的mac地址,然后在通信.

​ 如果不是在同一网段: ?

  • 传输层

端口协议: UDP协议,TCP协议

65535端口

1~1024操作系统专门使用的端口

举例: 3306 数据库

自己开发软件都是8080以后的端口号

UDP TCP 协议

TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、流式协议, 传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;文件传输程序。

UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文(数据包),尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。

TCP协议的三次握手和四次挥手

syn洪水攻击:制造大量的假的无效的IP请求服务器.致使正常的IP访问不了服务器.

day28——C/S与B/S架构、网络通信原理、osi七层协议、UDP、TCP协议、TCP的三次握手与四次挥手的更多相关文章

  1. 网络通信 --> TCP三次握手和四次挥手

    TCP三次握手和四次挥手 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 一.TCP报文格式 如下图: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发 ...

  2. 【网络通信】TCP三次握手和四次挥手的示意图

    三次握手 TCP连接是通过三次握手来连接的. 第一次握手 当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为m,等待服务器确认,这时客户端的状态为SYN_SE ...

  3. 网络知识--OSI七层网络与TCP/IP五层网络架构及二层/三层网络

    作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识. 废话不多说!下面就逐一展开对这两个网络架构知识的说明:一.OSI七层网络协议OSI是Open System Int ...

  4. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络(转)

     reference:https://www.cnblogs.com/kevingrace/p/5909719.html https://www.cnblogs.com/awkflf11/p/9190 ...

  5. 开发架构+osi七层协议+socket(day26)

    目录 软件开发架构 C/S架构 B/S架构 网络编程 互联网协议/OSI七层协议 传输层 网络层 数据链路层 物理连接层 socket 什么是socket 为什么用socket 如何使用 软件开发架构 ...

  6. 软件开发架构与网络之OSI七层协议(五层)

    本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...

  7. 1、网络并发编程--简介、软件开发架构、OSI七层协议

    python复习 变量与常量 基本数据类型 内置方法 字符编码.文件操作 函数 函数参数.闭包函数.装饰器 面向对象 封装.继承.多态 """ 什么是对象 数据与功能的结 ...

  8. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端   24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器    想体验服务的时候 ...

  9. 软件开发架构、网络基础知识、osi七层模型

    一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以 ...

随机推荐

  1. Window IDEA开发工具 杀死指定端口 cmd 命令行 taskkill

    Windows平台   两步方法 :  1 查询端口占用,2 强行杀死进程 netstat -aon|findstr "8080" taskkill /pid 4136-t -f ...

  2. LOJ P10130 点的距离 题解

    这道题相当于倍增求LCA的板子,我们只要构建一棵树,然后距离就是x的深度+y的深度 - LCA(x,y)的深度: #include<iostream> #include<cstdio ...

  3. php Web 项目的文件/文件夹上传下载

    PHP用超级全局变量数组$_FILES来记录文件上传相关信息的. 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本 ...

  4. 如何把上传图片时候的文件对象转换为图片的url !

    getObjectURL(file) { var url = null; if (window.createObjectURL != undefined) { url = window.createO ...

  5. 关于新版本cube.js 集成preosto 的一个说明

    实际上cubejs cli 是可以使用的,只是官方文档对于dbtype 说明的问题 使用如下命令我们可以创建prestodb 的基本项目   cubejs create -d prestodb myd ...

  6. UOJ269【清华集训2016】如何优雅地求和【数论,多项式】

    题目描述:求 $$\sum_{k=0}^nf(k)\binom{n}{k}x^k(1-x)^{n-k}$$ 输入$n$,$f(x)$的次数上界$m$,$x$,$f(0,1,\ldots,m)$,对$9 ...

  7. Hungry Canadian

    Hungry Canadian(简单dp) 具体见代码注释 #include <iostream> #include <cstdio> #include <cstring ...

  8. es6学习2:变量的解构赋值

    一:数组的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 let [foo, [[bar], baz]] = [1, [[2], 3]]; foo bar ba ...

  9. 【软工实践】Beta版本演示

    团队信息 队名:女生都队 组长博客: 博客链接 成员 学号 史恩泽(组长) 031702122 施金海 031702121 阮君曦 031702116 陈银山 031702137 李季城 031702 ...

  10. skywalking6.3.0安装(centos7.6)

    先安装好jdk8(略),经测试高于jdk8不支持. http://skywalking.apache.org/downloads/wget --no-check-certificate --no-co ...