一:网络通信
为了保证数据能够从目标源到达目的地,并且保证数据的完整性,两端都要使用的规范就是协议,协议是决定了数据的格式和传输的一组规则或者惯例。而数据是经过转化为电子信号的形式在目标之间进行传递,在目的地的时候再把数据还原成原始状态,为了降低网络设计的复杂性,开发人员对协议进行了分层设计,意义在于使应用层协议的设计只需要关注应用层本身,而不需要关心底层是怎么实现的。于是,OSI网络7层架构模型诞生了,如下图:
在网络分层架构中是原始数据经过一层层处理,变成电子信号,到达目的地后,从电子信号开始一步步往上解析,最终还原为原始数据。然而,在这个过程中是什么保证了数据在还原时候不会出错呢?答案就是协议,在每次处理数据的时候,都会给这个数据加上自己的一个协议包头,这样在解析数据的时候只要按照这些包头操作就不会出错了。
网络协议就好像我们现实生活中的合同,想要正常的合作,就要有合同,Internet网络体系结构以TCP/IP为核心,TCP/IP是一组用于实现网络互联的通信协议。如下图:
TCP/IP模型 各层的协议,如下图:
数据是怎么完整准确地传递的?先通过应用层协议封装后发送给传输层,传输层封装TCP头部之后发送给网络层,网络层封装IP头部后发送给数据链路层,数据链路层封装以太网首部和尾部再发送给物理层,物理层以比特流的形式把数据传输到物理的线路上,如下图:
简述一下TCP/IP各层的主要作用,如下:
物理层,又为最底层,主要是通过传输介质发送和接收二进制比特流。
数据链路层:是为网络层提供服务的,解决了两个节点之间的通信问题,传输单元为帧。该层负责网卡设备的驱动,帧的同步,冲突检测,数据差错校验等工作,数据帧中包含物理地址(MAC地址)、控制码、数据及校验码等信息,通过校验、确认、反馈转发等手段,把不可靠的物理链路转换为对网络层来说无差错的链路。交换机运行在数据链路层,被称为第二层网络设备,一般只能识别帧中的源和目的地的MAC地址进行数据传输。优点:算法简单,转发效率极高;缺点:只能识别MAC地址,不能划分子网。
网络层:负责点到点的传输,通过全局唯一的IP地址来保证数据准确无误地到达指定的目标端。为传输层提供服务,主要作用是提供全局唯一的IP地址,网络层地址(网络地址+主机地址),数据单位是IP数据报。路由器在网络层,被称为第三层设备,互联网有大量的路由器负责根据IP地址选择合适的路径转发数据包,数据包从源到目的地,往往要经过十几台路由器。IP协议并不能保证数据传输的可靠性,数据包在传输过程中可能丢失。注意:TOP/IP协议中,是IP负责数据的传输,而TCP负责数据的可靠性。
传输层:该层向高层屏蔽了下层数据通信的细节,使用户看到的只是在两个传输实体间的一条从主机到主机的、可由用户控制和设定的、可靠的数据通路。该层的数据单元是段或者报文,主要有TCP协议(面向连接的可靠传输)和UDP协议(提供简单的无连接服务)。
应用层:传输层保证了数据的可靠,但却不能确定数据的准确去向,该层为用户提供所需的各种服务,是用户与网络的接口。
二:HTTP协议和工作流程
HTTP协议位于最上层的应用层,所有的www文件都必须遵守这个协议。HTTP协议永远都是客户端发起请求,服务器端做出响应。HTTP协议是一种无状态协议,无状态是指客户端和服务器端不需要建立持久的连接,只在请求响应的时候需要建立连接,流程一结束就马上关闭连接,服务器端不会保留有关请求的有关信息。
HTTP请求 = HTTP消息头 + HTTP消息体。消息头告诉服务器该请求是做什么的,消息体告诉服务器该怎么做。
HTTP消息体 = 请求行 + 请求头 + 请求正文
HTTP工作流程六步骤:
①地址解析
主机名,可以准确定位到要访问的那台服务器,而IP地址是可以唯一标识服务器地址,但IP地址很繁琐难记忆,所以通过域名和IP进行一一对应,这样通过域名也就可以访问到对应服务器,人们把这些一一对应的关系放在一台统一的服务器上,这台服务器被称为DNS域名解析系统,负责把域名解析成对应的IP。端口,一台服务器有很多个服务或者应用,通过端口才能访问到指定的服务或应用。
②封装HTTP请求,把url和本机的一些信息封装成一个HTTP请求数据包
③封装TCP包,建立TCP连接,即“三次握手”
④客户端发送请求命令,即连接建立之后,客户端发送请求给服务器端,请求相关的信息存在请求头和请求体
⑤服务器端响应,根据客户端的请求做出响应,相关的响应信息包含在响应头和响应体
⑥服务器端响应结束后马上关闭连接,但当请求的头信息中有Connection-alive,那么服务器端会等所有请求都响应完再关闭连接,这样就大大节省了带宽2和 I/O资源。
~~~~~~~~~~~~~~~~~~~
文章就叙述到这里了,在此做一点点学习记录,我也是正在学习ing
网友评论