网络分层和http

1,037 阅读6分钟

网络分层

OSI模型

OSI 模型(Open System Interconnection model)是一个由国际标准化组织提出的概念模型,试图提供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。 它将计算机网络体系结构划分为七层,每层都可以提供抽象良好的接口

  • 物理层:物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输
  • 数据链路层:数据链路层通过物理网络链路提供数据传输。不同的数据链路层定义了不同的网络和协 议特征,其中包括物理编址、网络拓扑结构、错误校验、数据帧序列以及流控
  • 网络层:网络层负责在源和终点之间建立连接,此处需要确定计算机的位置,怎么确定?IPv4,IPv6!
  • 传输层:传输层向高层提供可靠的端到端的网络数据流服务,每一个应用程序都会在网卡注册一个端口号,该层就是端口与端口的通信!常用的(TCP/IP)协议
  • 会话层:会话层建立、管理和终止表示层与实体之间的通信会话
  • 表示层:表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别
  • 应用层: OSI 的应用层协议包括文件的传输、访问及管理协议(FTAM),以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等

常见的应用层协议

TCP/IP四层模型

OSI七层模型是学术界提出的,从层数上就知道它更把网络分的更加详实,从而也使得它的实现更加复杂,因此它的学术价值更大。 而 TCP/IP 网络模型是由计算机寡头提出并实现,是OSI七层模型的简化版;属于开源产品,能直接提供给用户使用

  • 网络接口层:网络接口层与OSI参考模型中的物理层和数据链路层相对应,它负责监视数据在主机和网络之间的交换,事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接,地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层
  • 网络互联层:网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题,它所包含的协议设计数据包在整个网络上的逻辑传输,注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由,该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)
  • 传输层:在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol),TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务
  • 应用层:应用层对应OSI参考模型的应用层、表示层和会话层

http 概念

http:hypertext transfer protocol 超文本传输协议,是一个客户端和服务器端请求和应答端标准。

特点:

  1. 基于请求/响应模型的协议
  2. 简单快速 协议简单,程序规模小,通信速度快
  3. 灵活 允许传输任意类型的数据对象,content-type标识
  4. 无状态 对事务的处理没有记忆能力

组成:http协议是由http请求和http响应组成

http请求包含请求行、请求头、请求体

http响应包含响应行、响应头、响应体

请求行:包含请求方法、请求URL、HTTP协议及版本

例如:POST /chapter17/user.html HTTP/1.1

请求方法:

  1. get:将请求参数追加在URL后面,url长度限制get请求方式数据的大小,没有请求体
  2. post
  3. head:HEAD跟GET相似,不过服务端接收到HEAD请求时只返回响应头,不发送响应内容。所以,如果只需要查看某个页面的状态时,用HEAD更高效,因为省去了传输页面内容的时间
  4. delete
  5. options:用于获取当前URL所支持的方法,若请求成功,会在http头中包含一个"allow"的字段,值是所支持的方法
  6. put

请求头:包含若干属性,格式为"属性名:属性值"

请求体:请求的内容放在请求体中

响应行:协议及版本 状态码及状态描述

状态码:

  1. 1XX 消息 指示消息,表示请求已经接收,继续处理
  2. 2XX 成功,表示请求已经成功接受处理
  • 200 OK 客户端请求成功
  • 204 No Content 无内容。服务器成功处理,但未返回内容。一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况。不会刷新页面
  • 206 Partial Content 服务器已经完成了部分GET请求(客户端进行了范围请求)。响应报文中包含Content-Range指定范围的实体内容
  1. 3XX 重定向
  • 301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其他位置
  • 302 Found:临时重定向,表示请求的资源临时搬到了其他位置
  • 303 See Other:临时重定向,应使用GET定向获取请求资源。303功能与302一样,区别只是303明确客户端应该使用GET访问
  • 304 Not Modified:表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足。返回304时,不包含任何响应主体。虽然304被划分在3XX,但和重定向一毛钱关系都没有
  1. 4XX 请求错误
  • 400 Bad Request:客户端请求有语法错误,服务器无法理解
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 404 Not Found:请求资源不存在。比如,输入了错误的url
  • 415 Unsupported media type:不支持的媒体类型
  1. 5XX 服务器错误

响应头:和请求头一样 包含若干属性,格式为"属性名:属性值"

响应体:服务器回写给客户端的页面正文