参考:https://blog.csdn.net/guoguo527/article/details/52078962
本节讲述网络编程的框架,分层思想和TCP/IP协议的介绍,BS架构和CS架构的介绍等。
3.9.1.1、网络是分层的
(1)OSI 7层模型
传输层-应用层:定义应用程序的功能, 剩下三层主要通过网络的端到端的数据流。OSI七层模型是一个理论模型,更多的则是把它作为分析、评判各种网络技术的依据。
物理层 为数据链路层提供物理链接,在其串行传送比特流(传送数据的单位比特)。
数据链路层 负责在网络节点间德尔线路上通过检查、流量控制和重发手段,无差错的传送数据(帧单位)。为做到这一点,在每一帧中必须同时带有同步、地址、差错控制及流量控制等信息。
网络层 网络层的任务就是选择合适的路由和交换节点,使数据源在传送层传下来的分组信息能够无误的按照地址找到目的地,并交付给相应的传输层,也就是完成网络的寻址功能。
传输层 传送层是高低层之间的接口层。数据传送的单位是报文,当报文较长时将它分割若干组,然后交给网络层进行传送。传输层是计算机网络协议最关键的一层,该层以上的个各层不在管理信息传输问题。
会话层 该层对传输的报文提供管理服务,在两个不同的系统互相通信的应用进程之间建立、组织、协调交互。列如:确定是双工或者是半双工工作
表示层 该层的任务是把传送的数据的抽象语法变为传送语法、即把不同计算机内部不同表示形式转换为通信中的标准鄙视形式。此外对传送的数据加密或解密、正文压缩或解压。
应用层 该层直接面向用户,是OSI中最高层。为用户提供应用的接口,既提供不同计算机间的文件传送、访问与管理、电子邮件的处理、不同计算机通过网络交互访问的需您终端功能。
七层结构记忆方法:应、表、会、传、网、数、物
应用层协议需要掌握的是:HTTP(Hyper text transfer protocol)、FTP(file transfer protocol)、SMTP(simple mail transfer rotocol)、POP3(post office protocol 3)、IMAP4(Internet mail access protocol)
(2)网络为什么要分层:网络太复杂了
(3)网络分层的具体表现
3.9.1.2、TCP/IP协议引入
(1)TCP/IP协议是用的最多的网络协议实现
* TCP/IP是一个计算机通信的一组协议,称它为TCP/IP协议族。在其中还包含了其他的协议(http、telnet、icmp、arp、rarp),正因为TCP/IP协议很重要,就以它们两个命名。
(2)TCP/IP分为4层,对应OSI的7层
* 应用层:对应OSI中的应用层、表示层、会话层
* 物理链路层:对应OSI中的数据链路层、物理层(也有叫网络接口层)
OSI七层和TCP/IP四层的关系
* OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
* OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。
* OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。
TCP:transmission control protocol 传输控制协议UDP:user data protocol 用户数据报协议
(3)我们编程时最关注应用层,了解传输层,网际互联层和网络接入层不用管
1、TCP/IP为应用提供服务(所谓的everything over Ip)
2、TCP/IP允许IP协议在各式各样的网络构成的互联网上运行(所谓的IP over everything)
UDP和TCP对比
UDP是一个不可靠,无链接的协议,主要适用于不需要对报文进行排序的流量控制的场合。
TCP是一个面向链接的,可靠的协议。它将一台主机发送的字节流无差错地发往互联网的其他主机。
在发送端,TCP负责把上层传送下来的字节流分成报文段并传递给下层。
在接收端,TCP负责把收到的报文进行重组后递交给上层。
TCP协议还要处理端到流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方的大量数据。
IP协议是TCP/IP协议族中最核心的协议,它提供不可靠,无链接的服务,也即依赖其他层的协议进程差错控制。在局域网中,IP协议往往被封装在以太网帧中传输。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传输。
TCP为点对点协议,这意味这各个客户需要分开客户机/服务器链接,因而无法在网络级实现对多个客户机的数据广播。如果有一个数据流必须同时被传送到多个客户机,服务器必须传送数据流的副本到各个客户机。
TCP能够根据网络带宽和拥挤程度动态地调节传送速度并重新发送丢失的数据包,这样虽然保证了数据传输的可靠性,但是对服务器资源耗费较大,在数据流大的场合难以保证数据流传输的实时性。
UDP为不可靠传送协议,在发送段,UDP传送数据的速度仅仅是受应用程序生成数据的速度,计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
UDP协议不需要维护连接状态,也不认为每个数据包都必须到达接受端,因此网络负荷比TCP小,传输速度也要比TCP快;但在网络越拥挤时,越有更多的数据包丢失。
RTMP协议是一个专门为高效传输视频,音频和数据而设计的协议。它通过建立一个二进制TCP连接或者连接HTTP隧道实现实时的视频和声音传输。
共享对象是RTMP数据中一种比较重要的数据类型,任何客户端改变数据时,共享对象能够及时更新服务器段的数据,这样,每个客户端都能够及时了解到数据的变化。
RTMP比传统媒介服务器流出的媒介协议支持更多。 它支持可能包含声音,影像和脚本数据从服务器到客户和从客户到服务器多条线路的动态传输。RTMP对声音、影像和脚本数据分别处理。
声音和视频数据被分开地缓冲在服务器中。如果声音数据在声音缓冲器中达到某一极限,所有在缓冲器中的数据将被丢掉,并且最近到达的数据被允许开始收集在缓冲中并被送到各个客户。视频数据被以相似的方式处理,不同是当新的关键帧到达时,缓冲器中数据才被清除。在丢掉旧的帧数据时,如果发现客户端的数据有误,则将新旧两个不同的帧进行拟合。
RTMP对数据给予不同的优先级别。在实时交谈中,声音是最重要的,影像给予低优先级,而脚本数据被给予的优先权介于声音和影像中间。
RTMP协议可以创建多个数据流,但是每个数据流只能有一个方向。
使用RTMP可以构建这样的一个系统,客户端可以同时与RTMP服务器和应用服务器进行交互,使得服务端的负荷得以分散,虽然在这种改进的系统结构中,RTMP服务器的性能要求比较高。
3.9.1.3、BS和CS
(1)CS架构介绍(client server,客户端服务器架构)
(2)BS架构介绍(broswer server,浏览器服务器架构)