day28 客户端服务端架构介绍

摘要:
服务器将反馈数据发送回客户端(客户端与服务器交互)。还有与CS相对应的BS架构(浏览器和服务器软件)。为什么程序员应该理解互联网通信协议?1.稳定的运行(网络、硬件、操作系统、服务器应用软件)始终提供外部服务。2.服务器必须绑定到地址。什么是单点故障?互联网通信协议互联网协议是计算机行业中的英文网络电缆(物理连接介质)物理连接设备:

一.客户端与服务端架构介绍

客户端与服务端实现通信

客户端将处理好的数据发给服务端,服务端把反馈好的数据再发回给客户端(客户端与服务端实现交互)   

CS架构

跟CS相对应的还有一个BS架构 (浏览器和服务端软件)

day28 客户端服务端架构介绍第1张

为什么程序员要了解互联网通信协议?

程序员要写一个客户端和服务端的软件,两者实现基于网络通信,物理链接介质程序员不用管,但是协议需要管,

因为客户端产生数据后,照着某种协议的标准组织数据,然后把数据交给操作系统,操作系统帮我们调网络协议

,然后组织数据,然后调网卡,对方把数据解出来就可以了。

=================================================================================

服务端必须满足的要求:

1、稳定运行(网络、硬件、操作系统、服务端应用软件)对外一直提供服务

2、服务端必须绑定一个地址

什么是单点故障?

单点故障:某一个坏了另外一个顶

二.互联网协议

计算机与计算机之间必须有底层的物理连接介质,我们才能将计算机与计算机连接到一起进行网络通信

打电话(电话线连接,这是物理连接介质)    计算机(网线连接)

什么是互联网?

两大要素

1、底层的物理连接介质,是为通信铺好道路的

2、一套统一的通信标准,互联网通信协议

day28 客户端服务端架构介绍第2张

互联网协议就是计算机界的英语

 网线(物理连接介质)     物理连接设备:光缆,电缆,双绞线,无线电波

物理层:负责发送电信号 (高低电频,人为的将高电频定为1,低电频定为0)(调网卡往外发)

由网卡发给对方的物理层      

 ====================================================================================

数据链路层:要想把电信号对应出意义(例如:电信号010101)  需要进行分组操作,要想分组物理层干不了,要干这件事需要数据链路层来干这件事 一开始

各有各的标准,后来统一了标准,这套标准称之为以太网协议(ethernet)

一组电信号分为一个数据帧,或者叫一个数据包                             

任何一个数据包分为两大部分,称之为报头与数据部分(报头相当于信封,信封里面包的数据相当于里面的内容)

 为什么要固定?

为了将数字建立有意义,能跟人的意思建立好对应关系

自定义协议:

任何一种通信协议必须包含两部分:

1、报头:必须是固定长度

2、数据

 day28 客户端服务端架构介绍第3张

以太网协议规定但凡接入互联网的主机都必须有一块网卡称之为以太网卡

每一块网卡上必须有一个网址,这个网址就称之为mac地址

mac地址的组成

mac地址 发送端和接受端的地址称之为mac地址即网卡地址

以太网协议通信:采用最古老的方式,广播

广播风暴:交换机产生大量的广播

两台机器在一个局域网内以太网  (mac地址出不了广播域)

 ======================================================================================================

网络层

网络层有一个协议称之为IP协议

目前我们使用IP的版本是第四版本 称之为IPV4 ,目前我们正普及IPV6

IP这个协议规定 发送数据包分为两部分, 报头和数据与以太网一样。 IP协议的数据包用的是IP地址。以太网协议的数据包用的是以太网地址。

 day28 客户端服务端架构介绍第4张

IP地址与子网掩码

 两者都一样都是点分十进制

学IP地址的用处?

子网地址一样的情况下     子网地址(IP地址与子网掩码匹配出子网地址)

当主机分散在不同的局域网内,无法找到对方在哪,先要找到对方的局域网在哪里,单纯的IP地址标识不了还需要配套的子网掩码。然后得到子网地址

接着匹配子网地址。得到对方的子网地址和自己的子网地址地址是不是一样,如果一样就在一个局域网内,然后再用mac地址  

子网地址不一样的情况下

我自己有子网地址,对方也有子网地址IP与子网掩码的按位与运算,找到对方在哪个小圆圈,再根据mac地址,就能找到对方在哪个小圆圈的地址

IP+mac地址就能标识世界上独一无二的计算机(基于网络通信的前提一定要有标识地址的方式)

=======================================================================================================

光计算机通信就完了吗 是客户端软件与服务端软件进行通信,不光要找到计算机,还要找到计算机上面的应用软件,IP地址搞定不了 

每启动一个互联通信的程序都会对应一个端口1024-65535是自己的程序     0-1024是给操作系统预留的

传输层(TCP/UDP)

IP+mac+端口号(port)就能标识全世界独一无二的基于网络通信的应用软件(服务端不许换端口号,客户端可以换端口号)

========================================================================================================

应用层(跟应用软件有关)

http,ftp,mail (这些是通用的协议) 浏览器用的是http协议

如何用浏览器把对方主机上的内容下载到本地浏览的过程

上网的过程其实就是一个下载的过程。

应用层产生一个请求(数据),调本机的网卡,沿着网络发给对方的网卡,再让对方收到。应用程序交给操作系统,操作系统会包tcp的头,操作系统再包IP 头,再包以太网头。再把包打散形成0101的二进制,沿着网卡接着通过物理连接介质送给对方。接着交给对方的操作系统,然后进行解包的过程。

如何解呢?一层层解,物理层拆以太网协议头,再拆IP 头然后拆TCP头,露出应用层的数据然后交给服务端的应用软件来接受数据。

发数据事不断封包的过程,收数据事拆包的过程。

应用层以下的归操作系统管

应用层其实是发给操作系统,应用层只要把数据丢给操作系统就发完了,操作系统会照着协议自己运作就可以了。应用层的send是发给自己的操作系统

应用层的send是给自己的操作系统发的

浏览器与服务端的交互通过url

URL称之为统一资源定位符 在视频的 (1:23里解释) 用来标识全世界范围内独一无二的资源。再找到软件的基础上再加一层

URL地址建立在 IP地址mac地址及端口地址上的

http://应用层协议部分

www.cnblogs.com称之为域名

 此处还省略了端口号:80   这是服务端的端口号 (所有浏览器自动填充的端口号是80)

/linhaifeng/article/62300称之为文件的路径

网站的本质就是把一丢有价值的数据传到机器之上,起了服务端软件,管理这台机器上的文件。

域名一定是对应ip地址的。但是通过浏览器访问网站的时候没有指定IP,如何通过域名拿到IP地址呢?

通过一台机器来拿到DNS服务器

DNS称之为域名解析服务端。(通过他来拿到IP地址)

总的分析:浏览器如何从无到有访问一个网页的内容的

首先接受用户的交互操作,产生一个URL地址,然后浏览器不着急发请求,把域名交给网卡上配的DNS,DNS会反馈一个IP地址,拿到IP地址访问IP和端口

然后找到对方的机器。然后浏览器与对方软件建好联系(两条道),按照http协议去封装。            

互联网协议的补充(了解)

网络层和以太网协议 如何把包送给对方的  

先要拿到对面的IP地址,接下来算自己的IP和自己的子网掩码算一个网络地址,别人的IP和别人的子网掩码算一个网络地址。发现这两个一样在一个局域网

交换机有一个mac地址学习的功能,可以避免重复发广播包的问题

ARP协议算对方IP和子网掩码跟我的IP和子网掩码一样?

对方跟我在一个子网内基于mac地址的广播

mac地址通信只能在局域网内

网关与网关走的是路由协议   

一个局域网网关都一样

三次握手

客户端发请求,服务端就立马要求建连接

sy1=1这是一个请求包

ack=1代表确认的意思

seq=x 序列号,暗号

seq=x+1

一般都是写ack=1+x这里面有两层意思  第一层是确认信息的意思,第二层1+x是基于上一个请求而来的

seq=y这个包的序列号 服务端受到这个包下个连接也建成功了

为什么三次握手建连接中间两步可以并成一步呢?因为此时只是为了传真正数据铺路而已。铺路是为了客户端给服务端发数据,服务端给客户端回数据。

数据发完了丧失存在的意义。

四次挥手

数据发完了 客户端会请求服务端断掉上面的连接

fin=1代表断开连接

ack=1+x这里面有两层意思

免责声明:文章转载自《day28 客户端服务端架构介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇songshu-video-uniapp-YYC松鼠短视频前端源码-开源--优雅草科技官方发布Android学习之三:使用DDMS调试程序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTTP详解--请求、响应、缓存

1. HTTP请求格式              做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP协议传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,消息体是可选的,而消息头是必须的。每当我们打开一个网页,在上面点...

Django Restful Framework

你在浏览器中输入了一个地址的时候发生了什么事情? 1.HOST 2.DNS 3.HTTP/HTTPS协议 发送一个协议 4.进入了实现了WSGI协议的服务器(wsgiref uwsgi(C语言实现,多线程,多进程,PHP,TOMCAT)) 5.请求进入Django 6. 前后端不分离:中间件->路由分发->对应的视图函数->找到模板,渲...

JavaScript WebGL 绘制一个面

目录 引子 绘制三角形 执行过程 高清处理 绘制矩形 索引缓冲对象 参考资料 引子 JavaScript WebGL 基础疑惑点之后进行了一些优化,然后尝试绘制常见二维的面。 WebGL 中几何体最终都是由三角形构成,由三角形切入比较合适。 Origin My GitHub 绘制三角形 这是示例,基于绘制一条直线主要的变化有: 顶点...

Android LBS系列03 Geocoder类与地址显示

Displaying the Location Address  通过位置更新得到的数据是经纬度坐标值,这种格式在计算距离或者在地图上显示图钉标记很有用,但是这种十进制数字对于大多数终端用户来说没有什么意义,如果需要向用户显示一个地点,更好的做法是显示这个地点的地址信息。   Geocoder类简介   Geocoder可以在街道地址和经纬度坐标之间进行转...

NIO与AIO,同步/异步,阻塞/非阻塞

1.flip(),compact(),与clear()的使用 flip()内部实现,先将limit设为当前位置,再将缓冲区的postion设为0,所以是为将缓冲区的数据写出到其它通道或者get()作准备。 clear()内部实现,将limit设为缓冲区的容量,position设为0,limit的不同为clear()与flip()的区别,所以clear()是...

C#程序中从数据库取数据时需注意数据类型之间的对应,int16int32int64

 private void btn2_Click(object sender, RoutedEventArgs e)         {             using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=Test20140531;User ID...