自学教程 从零学编程

网络协议简介

什么是网络协议

简单来说,网络协议就是计算机之间通信的一套约定好的规则。

人与人交流需要语言,计算机、服务器、手机、路由器之间互相传递数据,同样需要一套双方都能看懂的“语言”,这套语言就是网络协议。

协议规定了:数据长什么样、怎么打包、谁先发、谁应答、出错了怎么办、数据如何寻址转发。只有通信双方遵守同一套协议,二进制数据才能被正确识别,信息才能正常传递。

网络协议三要素:

  1. 语法:数据的格式、结构,数据包头部、字段排列;
  2. 语义:每个字段代表什么含义,是请求、应答还是报错;
  3. 时序:通信顺序、收发速率、超时重传等交互规则。

为什么要分层?

网络通信这件事很复杂:既要处理网线/无线信号,又要寻址路由,还要保证数据可靠,最后交给应用程序。如果把所有逻辑写在一个协议里,会极其臃肿,难以维护和排错。

于是采用分层思想:每一层只负责自己的工作,上层依赖下层服务,同层之间进行虚拟通信。
有两套经典模型:OSI七层模型(理论模型)、TCP/IP四层模型(互联网实际使用)。

OSI七层模型(理论)

层级名称作用典型协议
7应用层应用程序访问网络服务HTTP、DNS、FTP
6表示层数据加密、压缩、格式转换编码、加密处理
5会话层建立、管理、断开通信会话会话同步
4传输层端到端传输,可靠/不可靠传输TCP、UDP
3网络层IP寻址、跨网络路由转发IP、ICMP
2数据链路层局域网内帧封装、差错校验以太网
1物理层传输原始比特电信号网线、光纤、无线电

TCP/IP四层模型(实际互联网)

TCP/IP是现实互联网使用的协议栈,合并简化了OSI模型:

  1. 应用层:合并OSI的5、6、7层。直接为软件提供网络能力,HTTP、HTTPS、DNS、SMTP都属于这一层;
  2. 传输层:负责两台主机进程之间的数据传输。TCP可靠传输;UDP轻量无连接;
  3. 网际层(互联网层):核心协议IP,负责IP寻址、路由,让数据包跨多个网络传输;
  4. 网络接口层:合并物理层+数据链路层,负责在物理介质传输数据帧。

分层的好处:解耦。某一层技术升级,其他层不受影响;网络故障可以逐层排查。

常见网络协议快速认识

  • IP:网络层,给数据包打上源IP、目标IP,负责跨网络寻址;
  • TCP:传输层,面向连接、可靠传输,三次握手、重传机制,网页、文件下载常用;
  • UDP:传输层,无连接,开销小、速度快,直播、语音通话、游戏常用;
  • HTTP/HTTPS:应用层,网页访问协议,HTTPS带加密;
  • DNS:域名解析,把域名(shturl.cc/i)翻译成IP地址;
  • ICMP:网络探测协议,ping命令基于ICMP;
  • FTP:文件上传下载协议。

数据封装与解封装(核心概念)

数据从发送端应用程序发出,从上到下逐层打包,每一层加上自己的头部信息,这个过程叫封装;
到达接收主机后,从下到上逐层拆掉头部,解析数据,称为解封装。

举个例子:浏览器发送HTTP请求

  1. 应用层:HTTP报文
  2. 传输层:加上TCP头部 → TCP段
  3. 网际层:加上IP头部 → IP数据包
  4. 网络接口层:加上以太网头部 → 数据帧
  5. 通过网线/无线,以比特流发送出去

接收端反向操作,逐层剥掉头,最后把原始HTTP数据交给浏览器。

小结

网络协议是互联网的基础,分层设计是网络协议最重要的设计思想。OSI七层用于理论学习,TCP/IP四层是真实互联网的协议体系。
数据在传输时会逐层封装,到达目标主机逐层解封装。后续章节我们会逐层深入,讲解各层协议原理、报文结构,以及抓包实操。

思考题:TCP和UDP的核心区别是什么,分别适合什么场景?

标签:

0 条笔记