OSI 参考模型和 TCP/IP 参考模型

数据通信是很复杂的,很难在一个协议中完成所有功能。因此在制定协议时经常采用的思路是将复杂的数据通信功能由若干协议分别完成,然后将这些协议按照一定的方式组织起来。最典型的是采用分层的方式来组织协议,每一层都有一套清晰明确的功能和任务,这些功能和任务相对独立,这样就可以把复杂的网络问题分解成一层一层简单的模块;每一层都对上一层通过接口提供一定的服务,高层不需要了解低层的工作机制、使用设备和技术细节,只需知道低层通过接口提供哪些服务。

目前,最典型的计算机网络体系结构有 OSI 参考模型和 TCP/IP 参考模型。

OSI 参考模型:

OSI 参考模型将整个网络的通信功能分为七层,自下而上分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。OSI 参考模型是法律标准。

TCP/IP 参考模型:

TCP/IP 参考模型包括四层,自下而上分别是网络接口层、网络层、传输层、应用层。现实生活中的网联网世界用的就是 TCP/IP 模型。

TCP/IP 参考模型对 OSI 参考模型的分层进行了合并,将应用层、表示层、会话层合并为了应用层,将数据链路层、物理层合并为了网络接口层。

TCP、UDP 协议属于传输层。

超文本传输协议 HTTP、文件传输协议 FTP、域名系统 DNS 属于应用层。

TCP 协议的三大阶段:

  1. 建立连接(三次握手):建立连接的阶段通信双方会传输三个 TCP 段,称为三次握手。
    • 握手 1:客户端给服务器端发送 SYN 段,表示客户端向服务器端请求连接。
    • 握手 2:服务器端给客户端发送 TCP 段,这个段既是 SYN 段,也是 ACK 段,表示服务器端确认接受客户端的连接,并且服务器端向客户端请求连接。
    • 握手 3:客户端给服务器端发送 ACK 段,表示客户端确认接受服务器端的连接。
  2. 传输数据:是全双工通信。客户端可以给服务器发送数据,服务器也可以给客户端发送数据。
  3. 释放连接(四次挥手):释放连接的阶段通信双方会传输四个 TCP 段,称为四次挥手。
    • 挥手 1:客户端向服务器端发送 FIN 段,表示客户端向服务器释放连接。
    • 挥手2:服务器端向客户端发送 ACK 段,表示服务器端确认释放客户端的连接。此时,客户端无法再给服务器发送数据,只能服务器给客户端发送数据。
    • 挥手 3:服务器端向客户端发送 FIN 段,表示服务器端向客户端释放连接。
    • 挥手 4:客户端向服务器端发送 ACK 段,表示客户端确认释放服务器端的连接。此时,客户端和服务器端互相就无法再给对方发送数据了,通信结束。

SYN 段:表示这是一个请求连接的报文;ACK 段:表示这是一个确认报文;FIN 段:表示这是一个释放连接的报文。

TCP 协议和 UDP 协议的区别:

  1. TCP 是有连接的,可靠的。能够确保数据完整正确,但是开销大、实时性差。HTTP、FTP 基于 TCP。
  2. UDP 是无连接的、不可靠的。数据可能出错丢失,但是速度快、开销小。DNS 基于 UDP。

有连接:发送消息前,要先建立连接,再发送消息;发送完消息后,还需要释放连接。

无连接:发送消息前,不需要先建立连接,直接发送消息;发送完消息后,也就不需要释放连接了。
可靠传输:接收方使用确认机制让发送方知道哪些数据已被正确接收。可靠传输需要基于有连接的方式。

不可靠传输:接收方无论收没收到数据、数据是否正确,都不给发送方返回。

相关推荐
iOS技术狂热者4 小时前
wireshak抓手机包 wifi手机抓包工具
websocket·网络协议·tcp/ip·http·网络安全·https·udp
Dontla16 小时前
HTTP查询参数示例(XMLHttpRequest查询参数)(带查询参数的HTTP接口示例——以python flask接口为例)flask查询接口
python·http·flask
今夜有雨.18 小时前
使用C++实现HTTP服务
开发语言·网络·c++·后端·网络协议·tcp/ip·http
气π20 小时前
【JavaWeb-Spring boot】学习笔记
spring boot·http·tomcat
信徒_1 天前
一个完整的 HTTP/HTTPS 请求流程
网络协议·http·https
forestsea1 天前
HTTP 黑科技
科技·网络协议·http
网络安全天地1 天前
使用 Flutter 制作地图应用
websocket·网络协议·tcp/ip·http·网络安全·https·udp
洗发水很好用2 天前
Nginx接收https并内部转发成http
nginx·http·https
无名之逆2 天前
探索轻量高性能的 Rust HTTP 服务器框架 —— Hyperlane
服务器·开发语言·windows·后端·http·rust
无名之逆2 天前
Hyperlane:高性能 Rust HTTP 服务器框架评测
服务器·开发语言·windows·后端·http·rust