架构师是怎样炼成的 8-1 网络

用户头像
闷骚程序员
关注
发布于: 2020 年 07 月 29 日

作为架构师而言,算法可能并不太关注关系也并不是很密切,更多关注的是一个复杂的系统如何设计,模块职责功能如何拆解关联。



1. 网络

互联网应用都是通过网络连接起来的。网络是基础设施,基本的网络通讯基本概念,关键知识点还是要了解的。



1.1 一个用户请求所经过的网络历程



  1. 请求从客户端发起,通信都是通过ip协议通信的,ip从哪儿来?客户端通过域名从域名服务器获取服务器的ip和端口。如果访问的是静态资源,那么使用静态资源的域名可以获取到CDN服务器的ip地址,如果访问的是动态资源,则使用动态资源域名获取到负载聚恒服务器的ip地址。

  2. 访问静态资源的时候,CDN直接返回本地资源,如果本地没有资源,则也是发请求到负载均衡服务器从服务端获取资源(数据源)。

  3. 负载均衡服务器把请求转发给反向代理。

  4. 反向代理检查本地有没有客户端访问的资源,如果有就直接返回,没有则继续把请求发送到网关服务器的负载均衡服务器。

  5. 网关服务负载均衡服务器把请求分发给网关服务器。

  6. 网关服务器进行微服务调用,获取资源,并打包返回。



以上这些请求的消息的流转中,都是通过tcp网络通信,用户只发起了一个请求,但是整个过程中经过了很多的服务器,很多网络通信。



1.2 网络分层模型





  • 物理层:把数据在设备与设备直接传递。如wifi,光纤,双绞线等。传输的数据都是0和1,设备与设备之间要能识别出来。高电平是1,低电平是0。

  • 链路层:用于流量控制,错误检测(校验,数据是否出错)。设备地址(网卡mac地址)。

  • 网络层:路由选择,从客户端出发怎么样最终到达服务器(怎么样算建立连接了)。选择最短路径等。ip协议

  • 传输层:通过端口确定请求是发送给哪个进程的。握手,以及消息的重发。

  • 会话层:保持会话连接,实际上按照网络编程的说法,这一层是已经拿到了客户端连接的socket了,随时可以进行消息的收发。

  • 表示层:消息发送之前和消息处理之前的消息格式处理,比如:websocket消息发送之前要进行打包,接收到消息需要解包,http也是,因为tcp发送和接收的都是字节流。数据加密解密和压缩解压缩等。

  • 应用层:处理用户发送过来的请求,如:用户登录,则取数据库查询用户密码,以检查用户的用户名和密码是否正确。充值,转账,这些都是应用层需要处理的东西。





每一层都有自己的协议,同层之间可以相互理解的,知道对方发了什么数据。



发送的数据从上到下(应用层到物理层)一层一层的打包,接收方从下往上(物理层到应用层)一层一层的解包。应用代码处理数据。如下图所示:最里面的是应用层,最外面的是物理链路层。



1.3 tcp连接3次握手

tcp通信中,一定存在2个角色,一个是服务端(绑定端口),一个是客户端(通过ip和端口主动连接到服务端)。

  1. 客户端先发送包(SYN=1, Seq=x),表示请求建立连接,x是一个随机数。

  2. 服务端接收到报文后,应答(SYN=1, ACK=x+1, Seq=y),表示同意建立连接。

  3. 客户端接收到报文后,检查ACK是否为x+1。确认连接建立,并发送ACK=y+1的报文给服务器。服务器收到报文后检测ACK是否为y+1。确认建立连接。至此客户端和服务端的tcp连接建立起来了,就可以进行数据传输了。



1.4 tcp连接关闭的四次挥手

之所以需要四次,是因为服务端和客户端2放都可以发起关闭请求。具体流程如下图所示:



用户头像

闷骚程序员

关注

还未添加个人签名 2018.11.15 加入

还未添加个人简介

评论

发布
暂无评论
架构师是怎样炼成的 8-1 网络