网络分层模型
四层、七层
Last updated
四层、七层
Last updated
TCP/IP 协议是目前事实上的网络通信标准,非常经典,研究它的实用价值很大。
TCP/IP 协议栈如下:
应用层
HTTP, Telnet, SSH, FTP, SMTP 等
message,消息或报文
传输层
保证数据在两个 IP 地址间传输 最经典的三次握手和四次挥手
segment,段
IP 层
用 IP 地址取代 MAC 地址
把许多局域网、广域网连接成一个虚拟的巨大网络
packet,包
MAC 层
工作在网卡层
使用 MAC 地址来标记网络上的设备
frame,帧
在应用层,提供 scheme 和 port
比如:底层的 TCP 通常是通过 network socket interface 向 application 提供 network connection 的抽象,而 TCP 会在 transport layer 处理所有 handshaking 和 transmission 细节
在传输层,通过 port 进行寻址,识别同一计算机中同时通信的不同应用程序
TCP,Transmission Control Protocol,传输控制协议。有状态,面向连接
socket address [transport protocol, IP address, port number]
UDP,User Datagram Protocol,用户数据报协议。无状态,不用事先建立连接
数据是分散的小数据包,顺序发、乱序收
在 IP 层(网际层),通过 IP 地址来寻找网络中互连的主机或路由器
IP,Internet Protocol,网际协议
IP packet 可能会 lost、duplicated 或乱序,由于以下原因:
network congestion(网络拥塞)
traffic load balancing(流量负载平衡)
其它不可预测的网络行为。
在 MAC 层(链路层),通过 MAC 地址来寻找局域网中的主机
MAC 地址,Media Access Control Address,也称局域网地址
它可以唯一地标识一个网卡,进而同时标识了此网卡所属的设备
真正进行端到端通信的实体是主机中的两个进程,即一个主机中的进程 A 与另一个主机中的进程 B 在交换数据。IP 协议负责把数据报文送到目的主机,传输层的协议负责交给主机中的具体应用进程。
OSI,Open System Interconnection Reference Model,开放式系统互联通信参考模型。
OSI 分层模型在发布时就明确表明这是一个参考,而不是强制标准。
第一层
物理层
网络的物理形式, 例如电缆, 光纤, 网卡, 集线器等等
第二层
数据链路层
基本相当于 TCP/IP 的 Mac 层
第三层
网络层
相当于 TCP/IP 里的 IP 层
第四层
传输层
相当于 TCP/IP 里的传输层
第五层
会话层
维护网络中的连接状态, 即保持会话和同步
第六层
表示层
把数据转换为合适的可理解的语法和语义
第七层
应用层
面向具体的应用传输数据
增加了物理层,细化了应用层。
OSI 补足了电缆网卡等物理设备的位置,让网络通信在理论层面更完整,而 TCP/IP 是个纯软件的栈。
OSI 为每层标记了明确了编号,从一层到七层,方便日常交流。比如:
七层负载均衡,是指工作在应用层上,看到的是 HTTP 协议,解析 HTTP 报文里的 URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器
四层负载均衡,是指工作在传输层上,基于 TCP/IP 协议的特性,例如 IP 地址、端口号等实现对后端服务器的负载均衡
三层路由,是指设备工作网络层,当数据包经过有路由功能的设备时,设备会分析头部信息,拿到 IP 地址,根据网段范围进行本地转发或选择下一个网关
二层转发,是指设备工作在链路层,当数据包在经过交换机设备时,设备会检查头部信息,拿到目标 MAC 地址和端口,进行本地转发和广播,进而决定往哪里转发
OSI 在四层以上分得太细了,因为 TCP/IP 实际应用时的会话管理、编码转换、压缩等和具体应用经常联系得很紧密,很难分开。比如 HTTP 协议就同时包含了连接管理和数据格式定义。
TCP/IP 协议栈核心的数据传输过程大约如下:
先忽略很多 TCP/IP 协议里的细节,比如建连、路由、数据切分与重组、错误检查等
HTTP 利用 TCP/IP 协议栈逐层打包再拆包,实现了数据的传输,但下面的细节并不可见。下层的传输过程对于上层是完全透明的,上层也不需要关心下层的具体实现细节,每层只要在数据里加上自己的专有头,对方就能原样收到。
TCP,Transmission Control Protocol,传输控制协议。
TCP 提供 reliable、ordered、error-checked 的八位字节流传输
TCP 是 connection-oriented,在发送 data 前 client 和 server 间的 connection 需建立好
确保 reliability(可靠性)的手段:(有状态,但增加了 latency 延迟)
three-way handshake:三次握手
ACK + retransmission:确认 + 重传
error detection:错误检测
关于 TCP 的三次握手、四次挥手,以及与之相关的 TCP 状态和 TCP 报文段首部,详见输入 URL 并按下回车之后的数据传输全过程。
IP,Internet Protocol,网际协议。
IP packets 可能会 lost、duplicated 或乱序,由于 network congestion(网络拥塞)、traffic load balancing(流量负载平衡)、不可预测的网络行为。