OkHttp学习前奏-OIS、TCP/IP、HTTP
近期打算探索下OkHttp框架,因为了解到OkHttp内部实现是socket,对应到传输层,并实现了应用层协议,本篇作为第一篇,先学习下相关基础知识哈~
1、OSI参考模型
1.1、OSI的来源
OSI(Open System Interconnect),即开放式系统互联。一般都叫OSI参考模型。是国际标准化组织(ISO)在1985年研究的网络互联模型。如果所有公司都使用这个规范来控制网络,就能互联了。
1.2、OSI七层模型的划分
1.2.1、OSI定义了网络互联的七层模型。
从上往下分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
某一层的服务就是该层及其下一层的一种能力。通过接口将服务提供给上层。
1.2.2、各层的定义
应用层:OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。
如: FTP(文件传输协议),为用户直接提供文件传输服务
表示层:表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
应用层的数据转换翻译。假定两家不同国家公司要进行通信,表示层就好比公司文秘,要把通信内容进行翻译,同时因为是商业信息,要做适当的加密处理。这就是表示层的作用,将应用层的数据转换翻译,加密等。
该层及其下层为应用层提供数据编码和转换服务
会话层: 会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
这一层和其下层,负责管理通信,建立通信,将表示层的数据发给接收方,确认接收方收到后,终止会话。好比管理着电话本,负责拨打电话,将内容告知对方,对方收到信息后,挂电话
传输层:传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。
该层及其下层为会话层提供端到端的链接。屏蔽掉通信细节。好比打电话,只管拨打对方号码,但是中间的线路切换对上层是屏蔽了的。
网络层:本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。
该层及其下层为传输层提供的服务就好比要打长途电话,中间可能要经过多个多个长途转接局,选择合适的转接局,保证通话能正确无误的连接上就是该层及下层提供的服务
数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。
物理链路(物理线路):是由传输介质与设备组成的。原始的物理传输线路是指没有采用高层差错控制的基本的物理传输介质与设备。
数据链路(逻辑线路):在一条物理线路之上,通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路,从数据发送点到数据接收点所经过的传输途径。当采用复用技术时,一条物理链路上可以有多条数据链路。
该层及其下层为网络层提供可靠的数据传输。可靠指的是数据不丢失,不出差错。好比电话传送信息过程中,保证了声音信息不失真,不丢失
物理层:实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。
这层就当做是电话线吧~
2、TCP/IP
2.1、TCP/IP的来源
TCP/IP协议在一定程度上参考了OSI的体系结构。OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。但是这显然是有些复杂的,所以在TCP/IP协议中,它们被简化为了四个层次。
2.2、TCP/IP四层模型的划分
下图我OSI七层模型和TCP/IP四层模型的对应关系
TCP/IP应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。
(1)对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。
(2)应用层还能加密、解密、格式化数据。
(3)应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。
上面的描述来自于百度百科,就是将OSI的前三层合并为了一层,以拨打电话为例,只管拨打电话就好,至于中间的翻译加密这些功能都屏蔽在这一层内部了
TCP/IP传输层:作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。
后续的文章再看TCP、UDP在代码中的实现哈
网络层:网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。
网络接口层:在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。
划重点啦:传输数据、准确无误
3、HTTP
3.1、HTTP的定义
http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
3.2、HTTP1.0和HTTP1.1
HTTP1.0:一次请求一次响应,然后断开。每一次请求都需要建立连接(三次握手),每次响应结束后都需要断开连接(四次挥手)
HTTP1.1: 建立连接后,允许多次请求多次响应,只需要一次建立连接和断开连接的过程。提高了性能,但同时会加大服务器的压力(HTTP1.1新增了较多新的特性,这里只是说了keep-alive这个特性,不是只改了这个特性哦~)
本篇就到这里啦,后续咱再接着看OkHttp是如何对应到网络模型如何实现的,加油!