我是靠谱客的博主 柔弱世界,最近开发中收集的这篇文章主要介绍回顾下计算机网络——网络协议栈为了解决什么问题访问浏览器的一次行为网络协议栈各自解决的问题关于生产与拓展,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
目录
- 访问浏览器的一次行为
- 网络协议栈
- 各自解决的问题
- 关于生产与拓展
- HTTP协议的性能
- RPC框架
- "第四点五层" service mesh
访问浏览器的一次行为
- 上图大致回答了一个经典问题:用户从浏览器地址栏输入一个网站首页后,系统和网络中发生了什么。
- 其中无论是DNS解析,TCP连接建立还是HTTP请求,都要经过复杂的网络拓扑。
- 网络协议栈就是对复杂的网络通信进行抽象,每层协议职责分明解决其需要应对的具体问题。层与层之间以服务的方式屏蔽底层复杂度。
网络协议栈
各自解决的问题
7层?5层?4层? 怎么划分不重要。关注下层次解决的问题就好了。以五层网络协议栈为例:
-
物理层:屏蔽物理介质的机械、电气、过程、功能差异。作用范围在物理介质两端。
比如:- 用双绞线还是铜线,光纤还是无线。电压电流代表什么意思。物理信道如何复用(波分、码分、频分)等问题
-
数据链路:取上层数据封装成帧,提供差错校验,透明传输的功能。简单理解就是作用范围在局域网(以太网)的服务协议。
其提供服务:- 差错校验:避免底层码失真,添加FCS序列,用CRC校验(算法:n位fcs码,被除数就补n个0,除商定除数P,得出余数就是FCS,接收方只要再进行这种算法,余数是0就OK)确保无比特差错
- 透明传输:避免传输内容出现帧定界等关键字,字节填充转义,传输前后无感知。
- 封装成帧:取IP数据报头尾补充帧定界
提一下其协议与关键字:PPP,广播通信与CSMA/CD,MAC地址
-
网络(IP):路由寻址,网络定位,找到目的主机。作用范围在因特网。
相关协议:- IP地址相关概念:ABC三类地址以及无分类编址,子网掩码。
- ARP地址解析:IP转MAC
- 路由
- 内部网关:RIP/OSPF (距离向量与开放最短路径)
- 外部网关BGP
- ICMP:网际控制协议->路由或者终端是否可达
-
传输层 (举例TCP):保障进程间跨网络通信,上述基层仅做到差错校验,尽最大可能交付。而一次TCP会话的语义可靠是没法保障的,比如路由丢数据报,丢帧,本层网络拥塞等问题都会导致通讯不完整。SO?怎么控制传输呢。
- 抽象出可靠与否的核心问题:能否保障传输信道无差错,速度不受限。显然不可能,网络拓扑那么复杂,硬件软件各不相同,还要考虑成本和效率。。需要依赖传输控制来确保传输信道的可靠。
- TCP提供的服务
- 流量控制:滑动窗口
- 拥塞控制:慢开始,拥塞避免,快重传,快恢复
- 连接建立:三握四挥
-
应用层(举例HTTP)
- 上面的一次用户访问浏览器输入首页地址例子,就是通过HTTP请求万维网资源。HTTP协议定义了浏览器(万维网客户端进程)如何和WEB服务器交互的。
- 应用层为相同类型的应用,端与端的不同进程定义了数据规范,交互规范。
关于生产与拓展
HTTP协议的性能
- 上文提过,为了万维网传输超文本内容,应用层HTTP孕育而生。
- 而随着互联网行业发展,服务器压力越来越大,服务接口数据传输如果依旧采取HTTP协议,那么将浪费大量的网络带宽
- 传输数据冗余:HTTP沉重的请求响应头行结构
- 序列化性能差:流/字符/对象的转换消耗性能
RPC框架
RPC(远程接口调用)横跨tcp层与应用层。可以对数据交互的格式进行重新定义,减少冗余传输数据,甚至定制序列化方案。
- dubbo:
- 默认dubbo网络协议,也支持、rmi、hessian、http、webservice、thrift、redis等多种协议
- 默认序列化:dubbo序列化,也支持其他的。
- 我司osp:网络协议栈基于netty开发,序列化基于thrift
当然:这里的rpc相对宏观,除了rpc调用过程,还涵盖服务治理等一系列功能。上述两家都是如此。
“第四点五层” service mesh
- 当企业组织架构越来越复杂,开发团队越来越多,线上的服务拓扑逐步复杂。对服务进行治理成了刚需。
- 在微服务盛行的当下,service mesh概念孕育而生。它就是两两服务网格之间的互连代理,使得了接口服务调用方和提供方的编码难度。
- 提供的帮助
- 服务注册发现
- 负载均衡
- 熔断
- 路由
- 流量控制
- 安全
- 监控/日志
FCS mori.wang
最后
以上就是柔弱世界为你收集整理的回顾下计算机网络——网络协议栈为了解决什么问题访问浏览器的一次行为网络协议栈各自解决的问题关于生产与拓展的全部内容,希望文章能够帮你解决回顾下计算机网络——网络协议栈为了解决什么问题访问浏览器的一次行为网络协议栈各自解决的问题关于生产与拓展所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复