jjzjj

CS、BS架构和网络通信协议

suncolor 2023-04-16 原文

1. CS架构

CS架构其实在我们身边比比皆是,手机里的app大多都是CS架构,比如腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频。

这里的腾讯视频是客服端client,腾讯也有一个自己的服务端server

这种自己开创一个客服端的方式叫做CS架构。

CS架构的好处是:可以自定义发送数据的格式与方式

2. BS架构

BS架构其实也是CS架构中的一种,只不过需要我们独立开发的客户端变成了浏览器,我们就不需要再去开发客服端了!

BS架构的好处是:省去了开发客户端,都是必须按照浏览器的

3. 网络通信协议

3.1 什么是网络

没有网络的话,如果我需要另一台电脑上的一些小视频、小音频,我就需要拿个U盘跑到那台机器上,把那台机器上的东西拷贝下来,这就有个问题,如果我离那台电脑很远,我就需要耗费很大的精力去到那台电脑旁边。

这样显示是很不方便的,网络的产生就是为了解决上述问题,网络=物流链接介质+互联网通信协议,网络间的通信能够实现跨地域传输数据

3.2 osi的七层协议(重点)

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

我们一般只需要了解应用层、传输层、网络层、数据链路层、物理层这五层结构!!

每层的协议是指规定传输数据的组织格式
格式:头部+数据部分

这里其实可以把数据部分看成是一个包裹头部当成包裹上的面单,两台计算机之间的数据传输其实就是封包和拆包的过程。

1.物理层

一组物理层数据称之为:位(Bit)
物理层负责发送电信号0/1
单纯的电信号毫无意义,必须要对其进行分组

2.数据链路层:ethernet以太网协议

数据链路层定义了电信号分组的方式
数据链路层有几个规定:
规定1:一组数据组称之为一个数据帧
规定2:数据帧分为两部分——>头+数据
头部包含了源地址,目标地址,数据类型等等,头部的地址是mac地址
数据包含的是网络层传来的整体内容
规定3:但凡接入互联网的主机必须有一块网卡。每块网卡在出厂前都会烧制好一个全世界独一无二的mac地址
注意:计算机通信基本靠吼,即以太网协议的工作方式是广播

3.网络层:IP协议

网络层是用来划分广播域的
每一个广播域但凡需要接通到外部,一定需要一个网关帮内部的计算机转发包到公网
网关与外界通信走的是路由协议

网络层也有几项规定:

1.一组数据称之为一个数据包
2.数据包分为两部分——>头+数据
头部包含:源地址,目标地址,数据类型等等,头部的地址是ip地址
数据包含的是传输层传来的整体内容

总结:
1.ip地址+mac地址 =》标识世界上独一无二的一台计算机
2.ip地址也可以标识世界上独一无二的计算机
3.ip+(mac)+port 标识世界上独一无二的计算机上的基于网络通信的软件

4.传输层:tcp/udp协议=》基于端口的协议

端口的范围是0-65535,其中0-1023是系统占用端口

4.1 基于tcp通信协议

基于tcp协议通信之前,必须建立一个双向通信的链接,这就需要提供三次握手,建立链接为传输数据做准备,它是一个可靠的传输。

通信完毕时需要断开链接,这时需要四次挥手

4.2 基于udp的通信协议

不需要和服务端建立连接,直接发送数据,所以这种方式是不可靠的,数据容易丢失,一般像广播、直播这样的就是udp

5.应用层

在应用层可以自定义协议,格式为:头部+数据部分
头部的长度必须固定,因为接收端需要通过头部获取需要接收数据的详细信息

4.层级之间的流程图

有关CS、BS架构和网络通信协议的更多相关文章

  1. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  4. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  5. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  6. ruby - Ruby 和 Ruby on Rails 中的三层架构 - 2

    我是一名决定学习Ruby和RubyonRails的ASP.NETMVC开发人员。我已经有所了解并在RoR上创建了一个网站。在ASP.NETMVC上开发,我一直使用三层架构:数据层、业务层和UI(或表示)层。尝试在RubyonRails应用程序中使用这种方法,我发现没有关于它的信息(或者也许我只是找不到它?)。也许有人可以建议我如何在RubyonRails上创建或使用三层架构?附言我使用ruby​​1.9.3和RubyonRails3.2.3。 最佳答案 我建议在制作RoR应用程序时遵循RubyonRails(RoR)风格。Rails

  7. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  8. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  9. ruby - HTTP POST 上的 SSL 错误(未知协议(protocol)) - 2

    尝试通过SSL连接到ImgurAPI时出现错误。这是代码和错误:API_URI=URI.parse('https://api.imgur.com')API_PUBLIC_KEY='Client-ID--'ENDPOINTS={:image=>'/3/image',:gallery=>'/3/gallery'}#Public:Uploadanimage##args-Theimagepathfortheimagetoupload#defupload(image_path)http=Net::HTTP.new(API_URI.host)http.use_ssl=truehttp.verify

  10. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

随机推荐