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. CLR如何将SEH异常映射到托管异常类型

    托管异常处理构建在Windows操作系统的结构化异常处理之上,通常称为SEH.这意味着CLR了解如何在SEH和托管异常系统之间进行互操作,这是一个非常关键的点,因为SEH基于异常代码的概念,而托管异常 ...

  2. C++中继承 声明基类析构函数为虚函数作用,单继承和多继承关系的内存分布

    1,基类析构函数不为虚函数 #include "pch.h" #include <iostream> class CBase { public: CBase() { m ...

  3. NOI 2019 游记

    day -1 去报了个到,顺便买了一大堆衣服. 感觉学校饭堂不太行. day 0 上午是开幕式,. 下午是笔试,顺利获得 \(100\) 分. day 1 先看题. 第一题看到 \(At^2+Bt+C ...

  4. struct iphdr

    struct iphdr { #if defined(__LITTLE_ENDIAN_BITFIELD) __u8 ihl:, version:; #elif defined (__BIG_ENDIA ...

  5. 微信小程序 wxs的简单应用

    Demo地址:微信小程序wxs的简单应用 案例分析 张三.李四.王五,各自分别都有数量不等的车,现在需要列表显示名字及他们拥有车的数量, list数据结构如下,当我们使用wx:for进行显示时,发现个 ...

  6. kvm错误:failed to initialize KVM: Permission denied

    错误1: 启动kvm容器报错: # virsh start hadoop-test error: Failed to start domain hadoop-testerror: internal e ...

  7. koa post提交数据,koa-bodyparser中间件来获取post提交数据

    原生 Nodejs 获取 post 提交数据 首先创建并初始化一个node应用,根路由使用index.ejs模板 var Koa=require('koa') var router = require ...

  8. JavaWeb项目启动过程与ServletContext

    ServletContext的官方名称叫Servlet上下文,服务器会为每一个工程创建一个对象,这个对象就是ServletContext.一个项目只有一个ServletContext对象,工程内的所有 ...

  9. 可伸缩性架构常用技术——之数据切分 Data Sharding/Partition

    1. 简介 本来想写一篇可伸缩性架构方面的文章,发现东西太多了,久久未能下笔,这里首先把大家最关注的数据切分(Partition/Sharding)方面的内容先写完,给大家参考. 我们知道,为了应对不 ...

  10. MySQL事务部分回滚-回滚到指定保存点

    我们可以在mysql事务处理过程中定义保存点(SAVEPOINT),然后回滚到指定的保存点前的状态. 定义保存点,以及回滚到指定保存点前状态的语法如下. 定义保存点---SAVEPOINT 保存点名; ...