首先介绍
OSI模型:
开放式系统互联通信参考模型,简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。
人与人的交流靠的是语言,在互相连接的计算机之间,它们的交流也是需要共同遵守一个大家都能听懂的“语言”,这个语言就是大家加共同遵循的交流规则,即协议。 制定规则,计算机之间遵循这一规则进行处理。
那为什么网络的模型会分层?建立一个网络,是一个非常艰巨的事。想想最先的计算机网络,计算机的接口不同,不同的局域网中,大家相互交流的方式也不同,不同局域网之间的连接是一件复杂且麻烦的事。为了可以建立一个给所有计算机连接的网络,就必须有一个标准,这个就是协议。但是我们的需求是不断变化的,不可能每一个协议都要从规定以太网接口的样子开始到程序调用协议的引用结束,只是来实现不同的功能需求。可以一下子就想到了,我们只需要制定规则实现应用功能就可以了,根本不需要管网络电缆的粗细和接口的形状。这就对了,我们对互联网的需求不是不变的,相对于总是摧毁房子再建,我们更喜欢只修改添加我们需要的部分。
而这就是互联网分层的意义。
(1)层间的标准接口方便了工程模块化。 (2)创建了一个更好的互连环境。 (3)降低了复杂度,使程序更容易修改,产品开发的速度更快。
OSI将计算机网络体系结构划分为以下七层: 1、物理层: 将数据转换为可通过物理介质传送的电子信号 相当于邮局中的搬运工人。 2、数据链路层: 决定访问网络介质的方式。 在此层将数据分帧,并处理流控制。本层指定拓扑结构并提供硬件寻址,相当于邮局中的装拆箱工人。 3、网络层: 使用权数据路由经过大型网络 相当于邮局中的排序工人。 4、传输层: 提供终端到终端的可靠连接 相当于公司中跑邮局的送信职员。 5、会话层: 允许用户使用简单易记的名称建立连接 相当于公司中收寄信、写信封与拆信封的秘书。 6、表示层: 协商数据交换格式 相当公司中简报老板、替老板写信的助理。 7、应用层: 用户的应用程序和网络之间的接口。
相对来说,OSI模型是理想中的结构。然而,TCP/IP和OSI不能准确地匹配。参考OSI模型,出现了TCP/IP四层模型。我在接下来要介绍的就是四层模型。
它将OSI模型中的会话层、表示层、应用层合并为应用层;物理层和数据链路层合并为网络接口层。 即接口层、网络层、传输层、应用层。
先简单介绍一下数据在传出计算机的过程: 其中一个重要的概念就是封装。 首先我们需要知道,计算机的数据都是由1和0组成的。就拿网络四层体系来说,我们需要传输的数据是在应用程序中产生的,在应用层中称之为上层数据。数据在互联网中必须要通过一个介质进行传输,也就是数据最后应该是在最底层经过接口层,或通过光缆,或通过无线电,传输出去。既然目的地是接口层,应用层把数据交给传输层,传输层协议模块会给数据加上一个传输层头,可以理解为传输的备注信息。就像你写一封信在新的封面写上XX收。数据经传输层加工后交给网络层,同样的给数据(传输层头+上层数据)加上一个数据头,再次封装。之后交给接口层,添加上MAC头,通过介质发送出去。同样的接收数据就是一个拆解封装的过程。 可以发现数据传输,是一个不断的封装与解封的过程。
接下就简单介绍不同网络层的特点和功能以及经过这些网络层数据是怎么变化的。
接口层
接口层对应OSI模型的数据链路层和物理层。
物理层
物理层通过把上层的比特流(0、1的二进制流)转换为电压的高低、灯光的闪灭等物理信号,将数据传输出去。而接收端收到这些物理的信号以后再将这些物理信号恢复为比特流。因此,物理层的规范中包括比特流转换规则、缆线结构和质量以及接口形状等。
物理层要关注的四大特性: 1、机械特性:网络设备与传输介质之间连接器的外观和尺寸、接口引线数目、引线排列方式、固定和锁定装置 2、功能特性:规定接口上各种信号线以及各种电平出现的先后顺序,即那根信号线先动作,那根信号线后动作 3、电气特性:接口引线上信号电平表示,什么电平代表1,什么电平代表0 4、规程特性:规定接口某一条引线上出现某一电平表示的含义
典型的数据编码:
数据链路层
数据链路层的主要功能是完成帧发送和帧接收,包括负责对用户数据进行帧的组装与分解,随时监测物理层的信息监测标志,了解信道的忙闲情况,实现数据链路的收发管理。
数据链路层实现的是互联计算机之间相互通信,负责某一区间之间的通信传输,因此数据链路层的通信为逐跳传递。
相对网络层的IP地址,数据链路层也有MAC地址用于定位主机。
数据链路层将数据划分为一个个数据帧进行传输。 实际中大多数以太网的帧体格式是前者。而后者是IEEE的标准。
根据介质是否共享,可以分出非共享介质型网络和共享介质型网络 1、非共享介质型网络(对介质采取专用):网络中每个站直连交换机,由交换机负责转发数据帧。 2、共享介质型网络:多个设备共享一个通信介质的网络。 共享介质型网络中有两种介质访问控制方式:争用方式和令牌传递方式。 (1)争用方式(CSMA/CD):争夺获取数据传输的权力。产生冲突现象会导致网络拥堵与性能下降。 空闲发送,冲突停发,随机延时等待 (2)令牌传递方式:沿着令牌环发送一种叫做“令牌”的特殊报文,是控制传输的一种方式。只有获得令牌的站才能发送数据。不会用冲突且每个站都有通过平等循环获得令牌的机会,因此,即使网络拥堵也不会导致性能下降。
网络层
网络层的主要作用是“实现终端节点之间的通信”。这种终端节点之间的通信也叫“点对点(end-to-end)通信。
IP
IP协议主要作用就是在复杂的网络环境中将数据包发送给最终的目标地址。
IP地址唯一标识一台网络设备,由32个二进制位组成 IP地址采用点分十进制格式显示 IP地址分为两部分:网络地址和主机地址
IP地址分成五类: A类:1.0.0.0~126.155.255.255 B类:128.0.0.0~191.255.255.255 C类:192.0.0.0~223.255.255.255 D类:224.0.0.0~239.255.255.255 E类:240.0.0.0~255.255.255.255
私网IP分类: A类:10.0.0.0~10.255.255.255 B类:172.16.0.0~172.31.255.255 C类:192.168.0.0~192.168.255.255 私有IP是一段保留的IP地址,只能在局域网中使用,无法在Internet上使用。
网络掩码: 使用掩码区分网络部分和主机部分,它使用与IP地址一样的格式。 将网络掩码和IP地址进行与操作就可以得到网络地址。
分片
以太网和FDDI对数据帧的长度都有一个限制,其最大值分别是1500字节和4352字节。链路层的这个特性称为MTU,即最大传输单元。
然而,IP上一层可能会要求传送比MTU更大的数据,因此IP包需要进行分片处理,将较大的IP包分成多个较小的IP包。分片的IP包到达目标地址后会被再组合起来传给上一层。抽象了数据链路层,使得从上层更不容易看到底层网络构造的细节。
路由
路由控制是指将分组数据发送到最终目标地址的功能。通过路由控制确定到达目标地址的通路。
路由器中时刻维持着一张路由表,所有报文的发送和转发都通过查找路由表从相应端口发送。 路由表可以是静态配置的,也可以是动态路由协议产生的。 路由表包含目标地址、网络掩码、输出接口、下一站。
网络层路由:
传输层
传输层为应用程序提供服务,定义了端到端的连通性。
大家想象一下,通过网络层和接口层协议,数据已经可以到达目标计算机了。但实际上我们要求的是数据交给某一特定的程序进行处理,到达计算机并没有实现我们需要的功能。这就引出了一个概念,就是端到端通信。 在网络中,我们的计算机都有65535个端口,每个端口都对应着一个应用程序。比方,通过IP和MAC地址,你的包裹已经送到了你住宿楼门口,但是这一栋楼里的住户(应用程序)很多,你根本不知道这个包裹是谁的,而传输层端到端的通信就解决了这个问题——通过端口这个“窗口”包裹被送到了正确的住户手上。
类似IP的分类,端口也有一套分类。 IANA(Internet Assigned Numbers Authority,互联网地址指派机构)将端口号划分为3个范围:熟知的、注册的和动态的(或私有的)。
熟知端口:0~1023,由IANA指派和控制 注册端口:1024~49151,IANA不指派也不控制。 它们只能在IANA注册以防止重复。 动态端口:49152~65535,既不用指派也不注册。它们可以由任何进程来使用,是临时的端口。
一个例子,我浏览器向一个服务器发送一个HTTP连接请求,目标端口80,但是发出的端口是随机的动态端口;浏览器再请求一个新的服务器,从随机端口发出请求。这样就有两个相互不影响的页面。请求的都是HTTP服务,但实际上接收数据包的端口不一样,形成了会话,彼此的数据传输不受其它应用的干扰。
TCP
TCP为应用程序提供一种面向连接的、可靠的服务。 TCP的可靠性: 1、面向连接的传输 2、最大报文段长度 3、传输确认机制 4、首部和数据的校验和 5、流量控制
TCP报文结构:
建立和切断链接
三握手,四挥手
分段与重组
最大报文段长度(MSS)是TCP协议的一个选项,用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度(不包括文段头)。 MSS=MTU-(TCP Header)-(IP Header) 即MSS的大小不包括TCP头和IP头
MSS在建立连接时由双方协商确定。
确认与重传
其中的重发时间与主机的网络环境有关,TCP会监视传输时延,由自适应算法动态调整。 因为要给每个数据包进行确认应答,所以当包的往返时间变长,网络的吞吐量会变差,所以可以一次发送多个数据包和给多个数据包进行确认应答。
TCP流量控制:
UDP
UDP为应用程序提供面向无连接的服务。传输数据之前源端和目的端不需要建立连接。 不需要维护连接状态,收发状态等,因此服务器可同时向多个客户端传输相同的消息。 UDP适用于对传输效率要求高的运用。
UDP报文结构: 相对TCP,UDP连接速度更快。
应用层
在应用层有很多协议,可以提供不同的服务。它们定义了应用程序进程如何互相传递报文,以及理解分析数据实现不同的功能。
应用层中的应用软件服务模式: 1)客户/服务器(client/server) 客户端请求服务器,服务器响应客户端。 2)P2P 也称为对等体系结构。P2P相当于每个人的电脑都可以充当服务器和客户端,不单单限制只能客户端访问服务器。 你自己的计算机可以访问别人计算机上的内容,别人同样可以访问你计算机上的内容,达到一种共享的状态。
HTTP与HTTPS
HTTP特点: 1、无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力。 2、无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次挥手四次握手,和服务器重新建立连接。 3、基于请求和响应:基本的特性,由客户端发起请求,服务端响应。 4、简单快速、灵活 5、通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
HTTPS特点: 基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护 1、内容加密:采用混合加密技术,中间人无法之间查看明文内容 2、验证身份:通过证书认证客户端访问的是自己的服务器 3、保护数据完整性:防止传输的内容被中间人冒充或篡改
HTTP请求过程:
HTTP有很多请求方式:
下图是HTTP请求和响应报文的格式:
在应用层还有很多的协议,比如 电子邮件还可以使用POP3协议,以及我们使用的QQ采用OICQ协议,等等
最后
我们平时使用的网络时相当复杂的,我们一眼能看到的只是它的冰山一角,要想深入学习互联网掌握一些基本的协议时相当重要的,我上面写的只是这些协议最最浅显的东西。根据TCP/IP协议栈的四层模型的讲解,估计大家已经对网络的构成有了基本的认识,不过要想更深入的学习,还是需要研读书籍,多思考!
|