《透视HTTP协议》是
罗剑锋
(奇虎360技术专家)在极客时间开的一门专栏课,笔者记录一下学习笔记,仅供参考。后端
层次图以下:服务器
负责在以太网、WiFi 这样的底层网络上发送原始数据包,工做在网卡这个层次,使用 MAC 地址来标记网络上的设备,因此有时候也叫
MAC 层
。网络
IP 协议
就处在这一层。由于 IP 协议定义了IP 地址
的概念,因此就能够在连接层
的基础上,用 IP 地址取代MAC 地址
,把许许多多的局域网、广域网链接成一个虚拟的巨大网络,在这个网络里找设备时只要把 IP 地址再“翻译”成 MAC 地址就能够了。app
保证数据在 IP 地址标记的两点之间“可靠”地传输,是 TCP 协议工做的层次。负载均衡
TCP
:是一个有状态的协议,须要先与对方创建链接而后才能发送数据,并且保证数据不丢失不重复UDP
:则无状态,不用事先创建链接就能够任意发送数据,但不保证数据必定会发到对方。字节流
,有前后顺序
,而 UDP 则是分散的小数据包,是顺序发
,乱序收
。有各类面向具体应用的协议。例如
Telnet、SSH、FTP、SMTP、HTTP
。学习
MAC 层的传输单位是帧
(frame)。编码
IP 层的传输单位是包
(packet)。操作系统
TCP 层的传输单位是段
(segment)。翻译
HTTP 的传输单位则是消息或报文
(message)。code
能够统称为数据包
。
OSI,全称是
开放式系统互联通讯参考模型
(Open System Interconnection Reference Model
)。
OSI 模型分红了七层,以下图:
TCP/IP
的连接层TCP/IP
里的网际层TCP/IP
里的传输层大概的一个对应关系:
TCP/IP
里无对应TCP/IP
的连接层TCP/IP
的网际层TCP/IP
的传输层TCP/IP
的应用层TCP/IP 实际应用时的
会话管理
、编码转换
、压缩
等和具体应用常常联系的很紧密,很难分开。例如:HTTP 协议就同时包含了链接管理
和数据格式定义
。
四层负载均衡:就是指工做在传输层
上,基于 TCP/IP
协议的特性,例如 IP 地址、端口号等实现对后端服务器的负载均衡。
七层负载均衡:就是指工做在应用层
上,看到的是 HTTP 协议,解析 HTTP 报文里的 URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器。
小窍门(不是绝对的):
“两个凡是”:凡是由操做系统负责处理的就是四层或四层如下,不然,凡是须要由应用程序(也就是你本身写代码)负责处理的就是七层。
一、HTTP 协议的传输过程就是这样经过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,而后经过下层发送出去。
二、接收数据则是相反的操做,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到本身的数据。