网络架构

单机架构

  • 单机游戏

以下两个基于网络

CS架构

  • cs-->client客户/server服务
  • 客户端: 用户安装的软件
  • 服务端: 统一管理数据库的主机中的软件就叫做服务端, 后来服务端不光只管理数据,也会处理一些业务逻辑

服务端(应用程序)一个就够了,客户端(应用程序)可以有多个

服务端和客户端都是应用程序,两个都可以储存数据,那么他们的区别如下:

  • 服务端: 很多人都可以用,它一次更新,也要求用户更新, 能保证数据的安全
  • 客户端: 非常快,但如果本地保存帐号密码,安全性非常低,客户端不联网,数据不更新

BS架构

  • 网页程序: 如京东淘宝
  • bs-->browser浏览器/服务
  • 把程序放在浏览器上

互联网和互联网的组成(教材版)

边缘部分:

  • 客户端/服务端, 两端的计算机,负责接收/发送数据

核心部分:

  • 传输网络数据的设备,路由,基站等

互联网的组成

硬件

  • 提供给你网络

软件

  • 应用程序, 完成具体的任务

传输数据只能传输电信号,0和1,OSI协议把0和1从无意义的东西变成有意义的东西

打开网页的过程(科普版)

  1. 打开浏览器(客户端)
  2. 输入www.taobao.com --> 地址指向淘宝的服务端
  3. 按enter键客户端把 www.taobao.com 解析成淘宝的地址
  4. 发送一条请求给淘宝,让淘宝把数据发给你
  5. 客户端数据渲染

物理层

计算机与计算机之间传输数据(局域网)

  • 光缆/网线: 传输信号,连接两端的计算机

客户端 ---010101010101100101010101000111---> 服务端

数据链路层

让同一局域网下计算机连接在一起

把010101 010101 100101 010101 000111 变得有意义,分组,每几位为一组

以太网协议: 规定物理层中传输的0和1的格式

head:

​ 收件人地址;

​ 数据类型;

​ 发件人地址;

data: 内容

  • 发件人地址就是mac地址,计算机上网卡的地址,这个地址固定不变,并且唯一,每一台电脑有自己固定的mac地址
  • 广播: 你一定知道自己的mac地址,还有收件人的mac地址,通过某一台设备(交换机),但是交换机不知道mac地址所对应的计算机是哪一台, 交换机就会以广播的形式发送给所有的计算机,收件人的计算机输到了就会解析这条命令,拿到内容之后,交换机也会对这两个地址进行记录

网络层

让不同局域网下面的计算机连接在一起

叫做ip地址,只知道mac地址是无法连接到其他局域网的计算机的,因为mac地址只会被交换机识别,然后不同局域网的交换机也不同,所以现在定义了一个新的地址表明是哪个局域网,通过路由器传输

在数据链路层的基础上,再包一层ip头

现在已经知道了淘宝的ip地址和mac地址,你会把自己的mac地址和ip地址一起发送过去,路由器会发送淘宝的ip地址和mac地址,自带mac地址(路由器的)和ip地址(路由器的), 淘宝接受到之后把数据传输给路由器,路由器再传输给客户端

mac地址(局域网) + ip地址(互联网)就能找到全世界独一无二的电脑

传输层

组织网络带来的传输

端口号,找到一个固定的应用程序,一个端口号就对应一个应用程序

mac地址(局域网) + ip地址(互联网) + 端口号就能找到独一无二的电脑的独一无二的应用程序

数据, 0和1发给应用程序,tcp/udp协议

抽象层

客户端和服务端的应用程序想通信,两者传输的数据必须是一样的,

socket抽象层就是写出一个全世界独一无二的计算机上的应用程序,既可以是客户端,也可以服务端

使用socket编写的客户端服务端写一个文件拷贝的cs架构的软件

day41 网络编程的更多相关文章

  1. 猫哥网络编程系列:HTTP PEM 万能调试法

    注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...

  2. python select网络编程详细介绍

    刚看了反应堆模式的原理,特意复习了socket编程,本文主要介绍python的基本socket使用和select使用,主要用于了解socket通信过程 一.socket模块 socket - Low- ...

  3. Linux Socket 网络编程

    Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...

  4. 猫哥网络编程系列:详解 BAT 面试题

    从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...

  5. 浅谈C#网络编程(一)

    阅读目录: 基础 Socket编程 多线程并发 阻塞式同步IO 基础 在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践. Socket是一种网络编程接口,它是对传输层T ...

  6. C++11网络编程

    Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台.十行代码即可完成一个完整的网络服务器. 下面是echo服务器的代码: #include <handy/handy.h&g ...

  7. Java - 网络编程

    Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh.     参考:  

  8. Linux网络编程-IO复用技术

    IO复用是Linux中的IO模型之一,IO复用就是进程预先告诉内核需要监视的IO条件,使得内核一旦发现进程指定的一个或多个IO条件就绪,就通过进程进程处理,从而不会在单个IO上阻塞了.Linux中,提 ...

  9. Python Socket 网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

随机推荐

  1. 1.4-动态路由协议OSPF⑧

    OSPF认证(保证寻路协议级别的网络安全) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 按照参与认证的成员,进行分类: 1:链路认证(参与认证的成员 ...

  2. uva 11212 - Editing a Book(迭代加深搜索 IDA*) 迭代加深搜索

    迭代加深搜索 自己看的时候第一遍更本就看不懂..是非常水,但智商捉急也是没有办法的事情. 好在有几个同学已经是做过了这道题而且对迭代加深搜索的思路有了一定的了解,所以在某些不理解的地方询问了一下他们的 ...

  3. JDK部分源码阅读与理解

    本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/article/2016/05/31/JDK部分源码阅读与理解/ 不喜欢重复造轮子,不喜欢贴各种东西.JDK ...

  4. JSP页面的跳转及传值

    1.response.sendRedirect("跳转到页面的URL"); 该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容. ...

  5. 怎么看待MYSQL的性能

    MySQL在单实例性能方面和Oracle相比还有一些差距,我们通过规范和技术手段来降低这些性能差距带来的问题. 首先,大量甚至海量数据的增删改.查询.聚合查询的性能还有待提高.为了规避这些问题,我们在 ...

  6. myeclipse配背景色

    1:使jsp,html等页面为纯黑色. 2:发现JS的背景颜色还是默认的.而且还是块状的.将它设置背景为黑色的. *效果图: 参考:http://blog.csdn.net/ltqwby/articl ...

  7. [Swift通天遁地]四、网络和线程-(9)上传图片并实时显示上传进度

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. Elasticsearch如何做到亿级数据查询毫秒级返回?

    阅读本文大概需要 6 分钟. 如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有 ...

  9. Fib(兔子问题)python实现多种方法

    # 斐波那契数列是学计算机入门最经典的一道题目 # 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci) # ...

  10. 【BZOJ1939】[Croatian2010] Zuma(动态规划)

    题目: BZOJ1939(权限题) 分析: 这题很容易看出是DP,但是状态和转移都不是很好想-- 用\(dp[l][r][c]\)表示在\(l\)前面已经新加了\(c\)个和\(l\)一样的弹子时,使 ...