目录

  • 网络架构及其演变过程

    • 单机架构
    • CS架构
    • BS架构
    • BS架构和CS架构的区别
      • C/S架构的优缺点:
      • B/S架构的优缺点:
  • 互联网与互联网的组成
    • 互联网的组成(教科书版)
    • 互联网的组成(科普版)
  • OSI七层协议
    • 物理层
    • 数据链路层
      • 以太网协议
      • Mac地址
      • 广播地址
    • 网络层
    • 传输层
    • 应用层
  • Socket抽象层
    • Socket抽象层

网络架构及其演变过程

单机架构

单机:顾名思义,就是不需要进行联网操作

  • 应用领域

    1. 俄罗斯方块
    2. 连连看

CS架构

CS架构:

  • C--client--客户端,用于安装用户软件,有很多个,如QQ,DNF

  • S--server--服务端,用于管理数据库的主机中的软件,兼顾还有处理业务逻辑,只需要一个就可以了

BS架构

BS架构:

  • B--browse--浏览器,安装在用户电脑浏览器上,访问同种类的网站,具体业务的处理根据相应协议和标准提供通用的服务器程序,在不同的服务器处理,如淘宝、京东

BS架构和CS架构的区别

C/S架构的优缺点:

  • 优点:

    1. 客户端因为是独立设计,所以可以实现个性化

    2. 因为客户端是需要进行安装的,可以不需要重复安装和加载

    3. 因为客户端是独立开发的,所以有能力对客户端进行安全设计

    4. 如果遇到不同的操作系统,需要为不同的操作系统各开发一套客户端

  • 缺点:

    1. 因为客户端是不需要重复安装,所以用户可以不更新与升级,增加了维护成本。

    2. 因为需要开发客户端和服务器两套程序,所以开发成本会增加

B/S架构的优缺点:

  • 优点:

    1. 因为B/S架构具备通用性,所以开发成本较低。

    2. 因为不需要安装客户端,所以客户端不需要进行升级,只需要更新后台代码即可实现所有客户端的更新。

    3. 因为B/S架构多用WEB网页进行开发,所以增、删功能也非常容易,只需要修改网页即可完成

  • 缺点:

    1. 耗流量,每次都要加载全部的内容(不过有缓存可以降低流量损耗)

    2. 因为没有独立的客户端,所以无法实现个性化(通过账号体系可以实现)

    3. 因为没有独立设计客户端,所以客户端难以实现安全控制(HTTPS、控件)。

    4. 难以实现特殊的操作(删本地文件),所以所有的杀毒软件都是C/S架构的。


B/S架构更多的时候是使用了HTTP协议、而C/S架构更多的时候使用的WinSocket协议(TCP、UDP)

互联网与互联网的组成

互联网的组成(教科书版)

互联网的拓扑结构按照工作方式划分,可分为两大部分:

  1. 边缘部分:这部分就是由互联网的主机(我们使用的计算机,包括服务器)组成,这部分是用户直接使用的,用来进行通信和资源共享。

  2. 核心部分:由网络和连接这些网络的路由器组成,这部分用来为边缘部分提供服务。

互联网的组成(科普版)

互联网一词我们大家都不陌生,我们所说的上网就是通过互联网获取数据,然后再去阅读数据

互联网的组成主要是由硬件和软件组成,就以我们打开淘宝网页进行举例:

  1. 打开浏览器,输入淘宝网址
  2. 浏览器请求域名服务器解析淘宝对应的IP
  3. 浏览器建立Socket连接,根据http协议获取http header,通过tcp/ip协议发送报文
  4. 然后通过一系列的路由器,找到淘宝网页存放的服务器
  5. 服务器将请求的数据打包,原路返回到浏览器上
  6. 浏览器解读数据,渲染成网页

OSI七层协议

互联网的本质就是一系列的网络协议,这个协议就是OSI协议,按照不同的功能,分工不同,有的人把它人为的分为七层,有的人分为五层,甚至四层

每一层都运行不同的协议,也就是不同的标准

七层划分:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

五层划分:应用层、传输层、网络层、数据链路层、物理层

四层划分:应用层、传输层、网络层、网络接口层

物理层

物理层功能:主要是基于电器的特性发送高低电压,也就是二进制0和1

物理层就是物理传输,硬件,物理特性。两个用户之间的信息交流,就需要两台终端设备,物理层的连接(路由器,光缆,电缆,无线电波)这中间传输的都是01011100...这些二进制

数据链路层

上面传输的一系列01011100...具有某种意义吗?单纯的一串二进制,谁也不知道代表的是什么,那怎样能让这些二进制具有意义呢?

我们可以进行人为的分组,规定多少位为一组,每一组又代表什么意思,这样接收端收到数据也能够按照那样的分组解析二进制,获得发送方想要表达的信息

数据链路层的由来:单纯的电信号0和1完全没有意义,必须规定多少位电信号为一组,每组什么意思

数据链路层的功能:定义的电信号的分组方式

以太网协议

早期的时候,数据链路层是来做信号分组的。以前每个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

ethernet规定:一组电信号构成一个数据报,叫做帧,每一数据帧分为:报头head和数据data两部分

  • head包括:(固定18个字节)

    • 发送者/源地址:6个字节
    • 接收者/目标地址:6个字节
    • 数据类型:6个字节
  • data包括:(最短46个字节,最长1500字节)

  • 数据报的具体内容:head长度+data长度=最短64字节,最长1518字节,超出最大限制就分片发送

Mac地址

head中包括源地址和目标地址的由来:ethernet规定internet的设备必须具备网卡,发送端和接收端的地址就是指网卡的地址,也就是Mac地址

  • Mac地址:每块网卡出厂时,都被打上唯一的Mac地址,长度为48位二进制,通常由12位16进制表示(前六位是厂商编号,后六位是流水线号)

广播地址

有了Mac地址后,计算机就可以进行通信了。

我们的计算机都是处在局域网中的,局域网中的计算机想要进行通信,但是又不知道对方的具体位置,所以只能通过群发的方式把信息发出去,在发信息的时候,会把自己的Mac地址,对方的Mac地址,还有数据打包成数据帧

然后把数据帧封装好后,到物理层转换为二进制,因为不知道对方的位置,所以就进行群发,这样同一局域网的计算机都能接收到,这就是广播

但是你群发出去以后,所有人都会接收到这个数据包,然后就会进行拆包,如果解析到head头里面的目标地址不是自己的Mac地址,就会把数据丢弃掉,只有对应的计算机才能接收到

网络层

网络层的功能:引入一套新的地址用来区分不同的广播域/子网,这套地址就是网络地址

网络层的由来:理论上来讲,我们有了ethernet,Mac地址,广播的方式,我们就能实现全世界通信了,但是世界范围的互联网是由一个个小的独立的局域网组成的,如果都是通过广播的方式进行传输信息,自己脑补一下,咦~ 好可怕

为了解决上述问题,网络层定义了一个IP协议

IP就是我们的局域网地址,我们数据包往外发送时,经过网络层时,会再加上局域网地址(IP地址),这样我们就能更快的传输信息

传输层

传输层的由来:网络层的IP帮我们区分子网,以太网的Mac帮我们找到主机,然后大家都是使用的应用程序,一台电脑上可能同时开启了好几个应用程序

当我们通过IP和Mac找到独一无二的主机时,但又如何找到对应的应用程序呢?这就需要通过端口来解决了。端口就是应用程序与网卡关联的编号

传输层的功能:建立端口到端口的通信

有了Mac地址+IP地址+端口,我们就能找到独一无二的一台计算机上的应用程序

应用层

应用层的由来:用户使用的都是应用程序,均作用于应用层,互联网是开放的,大家可以开发自己的应用程序,数据多种多样,所以我们必须规定好数据的组织形式

应用层功能:规定应用程序的数据形式

Socket抽象层

Socket抽象层

我们知道两个进程需要进行通讯最基本的一个前提就是能够标示一个进程,在本地进程通信中,我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的IP地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用IP地址+协议+端口号唯一标示网络中的一个进程。

能够唯一标示网络中的进程后,它们就可以利用Socket进行通信了,什么是Socket呢?我们经常把Socket翻译为套接字,Socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

Socket起源于UNIX,在Unix一切皆文件哲学的思想下,Socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

转载于:https://www.cnblogs.com/Hades123/p/11093410.html

网络编程之网络架构及其演变过程、互联网与互联网的组成、OSI七层协议、socket抽象层...相关推荐

  1. Android网络编程系列 一 Socket抽象层

    在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽象 ...

  2. 13、python网络编程之网络通信协议

    python网络编程之网络通信协议 一.C/S与B/S架构 B/S架构 B/S架构中省去了客户端的开发,是基于浏览器(Browser)与服务端完成数据的通信 二.网络通信 什么是网络 网络是用物理链路 ...

  3. 【网络编程】网络基础知识

    前言 小亭子正在努力的学习编程,接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ ...

  4. android网络编程及网络超时处理

    android网络编程及网络超时处理 本文是收录的两篇关于这方面的文章 Android超时机制的处理 由于手机端应用的响应,与当时的无线通信网络状况有很大的关联.而通信网络往往具有不稳定,延迟长的特点 ...

  5. 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等

    文章目录 网络编程概述 网络通信要素 要素一IP和端口号 要素二网络协议 TCP网络编程 UDP网络编程 URL网络编程 Java网络编程基础 网络编程概述 Java是Internet上的语言,它从语 ...

  6. 如何连接Linux上的服务器 网络编程,Linux 网络编程 一

    一.网络编程基础 网络编程本身是一门很大的学问,涉及到的东西也很多,尤其是各种协议.先看图: 正如上图所示,网络编程中包含五大层面(也有区分六个层面),从应用层到物理层可以明显看出 越往下越接近计算机 ...

  7. 网络编程:网络协议简介

    这是张富涛的第10篇原创 网络编程:网络协议简介 网络协议在网络编程中是一个比较神秘的概念,今天就由我们揭开它神秘的面纱吧. 1. 什么是网络协议? 网络协议是指对于网络中传输的数据格式的规定.在计算 ...

  8. python 网络编程是什么_什么是网络编程-Python 网络编程-嗨客网

    Python网络编程网络编程教程 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一 ...

  9. 【技术分享篇】从网卡到tcpip协议栈,再到应用程序丨tcp/ip网络编程丨网络api的实现原理丨sk_buff的作用

     从网卡 聊到tcp/ip协议栈,再到应用程序 1. posix tcp/ip网络编程 2. 网络api的实现原理 3. sk_buff的作用 [技术分享篇]面试中从网卡 聊到tcpip协议栈,再到应 ...

最新文章

  1. 067_this关键字
  2. java 反射获取泛型,用反射获取Java中的泛型参数的类型
  3. C语言学习之编写一个C程序,运行时输人abc三个值,输出其中值最大者。
  4. Python习题11
  5. docker 查看容器_Docker介绍
  6. element里面popover里面的高度_五斗柜的高度一般是多少 五斗柜放在什么位置好
  7. ux和ui_使用UX设计师为Amazon的Alexa学习会话式UI的基础
  8. mysql在恢复数据时出现“table full”报错
  9. LinuxCentos7 防火墙开放端口,查看状态,查看开放端口
  10. qt opengl 天空盒
  11. 介质天线的设计原理_以水为媒介的介质天线的制作方法
  12. MATLAB图像灰度图处理
  13. 乐优商城_第5章_-vue入门
  14. DAY7:尚学堂高琪JAVA(66~69)
  15. 多个杀毒软件共存有什么影响。
  16. html+js画一颗心形,用SVG和Vanilla JS框架创建一个“星形变心形”的动画效果
  17. php数据统计模板,PHP如何使用Echarts生成数据统计报表
  18. 合法的python赋值语句_关于Python赋值语句,以下选项中合法的是??()。
  19. 携程航班信息爬取(python)---第一次写博客,不好请别见外!
  20. php中如何导出表格,PHP如何实现表格Excel的导出

热门文章

  1. 闪屏,default
  2. NOI2006 最大获利
  3. Sketch小技巧—画出各种星型和多边形的简单方法
  4. Flink SQL Client的Rolling Aggregation实验解析
  5. 为什么spark没有java的交互模式?
  6. softmax with cross-entropy loss求导(转载+细节整理)
  7. hive中的数据库与mysql中的hive数据库的关系
  8. 多进程fork()函数
  9. tensorflow学习笔记:tf.data.Dataset,from_tensor_slices(),shuffle(),batch()的用法
  10. VSFTP服务--Linux学习笔记