应用层
- internet是符合tcp/ip协议的
网络应用的体系结构
- 网络聊天,看新闻,淘宝等等
网络应用与单机应用的区别
- 与单机应用有哪些本质的不同
- 需要网线,物理媒介,路由器,网线,软件
- 软件,存储搜索软件等
- 需要有网络的基础环境,有一部分跑在我们自己的计算机上,还有一部分跑在互联网的某些服务器上,这两部分软件之间进行相互交互才构成了一个网络应用
网络应用采用什么样的体系结构
- 客户机/服务器结构(Client-server,C/S)
- 点对点结构(Peer-to-peer,P2P)
- 混合结构(Hybrid)
客户机/服务器结构(Client-server,C/S)
- 服务器在互联网上,客户机和服务器进行交互
- 客户机/服务器:功能角色上的划分,服务器是对外提供服务器的软件,客户机使用服务提供的服务
- 服务器农场:大批量的服务器(数据中心里会出现)
- 客户机:服务的消费者
点对点结构(Peer-to-peer,P2P)
- 平等的
- 可以对外提供服务,同时也消费其他节点提供的服务
- 文件共享服务例如:BT,文件传输,下载
- BT是一种互联网上新兴的P2P传输协议,全名叫"BitTorrent",中文全称:“比特流” ,最初的创造者是布拉姆·科恩,现在则独立发展成一个有广大开发者群体的开放式传输协议。BT下载是目前互联网最热门的应用之一,其通过一个P2P下载软件来实现,克服了传统下载方式的局限性,具有下载的人越多,文件下载速度就越快的特点。因此吸引着众多的网民使用。BT下载不需要资源发布者拥有高性能服务器就能迅速有效地把发布的资源传向其他的BT客户软件使用者,而且大多数的BT软件都是免费
- 与cs的有点与缺点
- 有点:高度可伸缩,可扩展
- 缺点:难于管理
混合结构(Hybrid)
- 含有中央服务器
- 其他节点与中央服务器构成c/s关系(文件利用者,文件提供者)
- 文件提供者,向中央服务器报告文件属性(文件名称,文件大小,标注等等)
- 文件利用者,向中央服务器进行查询,需要的文件
- 当利用者需要下载的时候,文件提供者与利用者保持的是p2p结构,直接进行传输,避免了都从中央服务器进行传输,避免服务器性能瓶颈
- c/s:有道云笔记,浏览器,京东,美团,饿了么
- p2p:FTP管理工具
- Hybrid:电影天堂
网络应用进程通信
进程间通信
- 有的服务在远端的服务器上,有的在自己的主机上,两者需要正确协作,才能完成对应的功能,才能保证网络性能
- pc机上运行的服务的进程,和服务器端所运行的进程之间需要进行通信的
- 两个进程之间进行通信
- 不同主机上运行的进程间,如何通信:消息交换或者报文交换
- P2P架构也是有客户机进程与服务及进程之分的:因为也许要通过消息交换。
套接字:socket
- 网络间交互是通过消息传输,或消息交换
- 进程标识:寻址
- 寻址:非常普遍的问题,应用层有寻址,网络层也有寻址等等
- ip地址能标识Internet上的唯一一台主机
- 进程标识,只有一个ip地址就可以吗
- 不是的,一台主机上会跑很多进程,当有消息从网线中过来的时候怎么才能正确送到我们要接收的应用上,而不是送给其他应用呢
- 还需要端口号
- 0-65536之前的有一些是可以用来做自己的网络应用的
- ip+端口号标识了网络上的唯一进程
- 不是的,一台主机上会跑很多进程,当有消息从网线中过来的时候怎么才能正确送到我们要接收的应用上,而不是送给其他应用呢
应用层协议
- 具体的消息交换怎么做,消息格式,消息顺序进行交换,依靠的是应用层协议
- 协议三要素:语义,语法,时序
- 并不是网络应用只有应用层协议,比如web应用,包括浏览器软件,web服务器软件,html文件等,不只是一个http协议,这些软件需要遵循符合HTTP协议的
- 公开协议(RFC(Request For Comments))定义是由:IETF组织维护的
- 允许互操作
- 比如我写了一个web客户端浏览器服务,都遵循HTTP协议,那么你的浏览器软件,就可以来我的服务器软件上获取网页
- 非常重要
- 如果想仔细的研究某一个协议,就需要去RFC文档上查看
- 允许互操作
- 私有协议:不公开,例如p2p共享应用,生意竞争会私有协议
- 原则上来说,应用应尽可能的遵循某种公开协议,因为会获取更多的资源
- 如果现有的协议并没有很好的解决我的需求,可以设计新的协议
应用层协议的内容
- 消息类型:例如HTTP
- 消息的语法:HTTP请求消息的格式
- 字段语义
- 规则描述
网络进程之间依靠的是消息交换
网络应用的需求与传输层服务
- 计算机网络应用依靠的是不同进程之间的消息交换,依靠遵循相同应用层协议,正确的进行消息交换,并不是消息层自己做的
- 按照TCP/IP来说:由传输层以及传输层之下,网络层,网络接口层等共同来提供传输的基础服务
- 网络应用不同的应用对消息传输的需求是不一样的
- 底层传输层到底为传输层提供什么服务
网络应用对传输服务的需求
- 数据丢失:分组到达一个节点,正当这个节点缓存满了的的情况,就会丢包
- 时间延迟
- 网络电话的时候,网络特别慢,延迟特别大,说一句话对方很久才收到,延迟特别高
- 带款
- 看视频带宽特别低的时候,特别卡,不连续
- 文件下载,email
典型应用对传输服务的需求
可靠性,带宽要求,时延要求
- e-mail,可靠性要求100,带宽没有要求,时延没有要求
Internet提供的传输服务
- internet是主流的网络,但不是唯一的
- TCP
- 面向连接:全双通
- 可靠传输:能把底层的不可靠转成可靠的,能实现不丢包,可靠的传输
- 流量控制
- 拥塞控制
- 不提供时延方面的保障
- 不提供最小带宽的保障
- UDP
- 比较简单,ip层上没有做太多的东西,无连接的
- 不可靠
- 为什么需要它
- udp做了的事情:任何一个传输层都必须要做的基本的事情,除此之外它不做
- 服务这么低,为什么还用
- 因为自由,网络穿透过来,给用户足够空间,掌控数据传输的能力
典型网络应用所使用的传输层服务
网络电话 UDP,应用层做很多事情,保证带宽
微信:聊天功能,tcp协议,无时延要求,怕丢
虎牙直播:UDP