1. 为什么要对网络协议分层
- 简化问题难度和复杂度。由于各层之间独立,我们可以分割大问题为小问题。
- 灵活性好。当其中一层的技术变化时,只要层间接口关系保持不变,其他层不受 影响。
- 易于实现和维护。
- 促进标准化工作。分开后,每层功能可以相对简单地被描述。
2. 网络协议常见分层方式
TCP/IP是一个四层的体系结构,主要包括:应用层、运输层、网际层和网络接口层。
五层协议的体系结构主要包括:应用层、运输层、网络层,数据链路层和物理层。
OSI七层协议模型主要包括是:应用层(Application)、表示层 (Presentation)、会话层(Session)、运输层(Transport)、网络层 (Network)、数据链路层(Data Link)、物理层(Physical)。
- 物链网输会示用(物联网叔会使用)

3. 应用层
定义应用进程间的协议
比如
- 电子邮件
- SMTP(简单邮件发送协议)
- POP3(邮局协议)、IMAP(网际报文存取协议)
- 万维网
- HTTP(超文本传输协议)
- 包含的具体请求有:
- GET:对服务器资源的简单请求
- POST:用于发送包含用户提交数据的请求
- HEAD:类似于GET请求,不过返回的响应中没有具体内容,用于获取报头
- PUT:传说中请求文档的一个版本
- DELETE:发出一个删除指定文档的请求
- TRACE:发送一个请求副本,以跟踪其处理进程
- OPTIONS:返回所有可用的方法,检查服务器支持哪些方法
- CONNECT:用于ssl隧道的基于代理的请求
- HTTP(超文本传输协议)
- FTP(文件传输协议)
- DNS 域名服务
HTTP和HTTPS的区别
概述:HTTPS简单讲是HTTP的安全版。只是HTTPS加密信任这个环节,需要信任机构颁发可信证书。
1、关于端口区别:HTTP:80端口、HTTPS:443端口。
2、数据传输区别:HTTP数据明文传输、HTTPS数据加密传输。
3、真假网站识别:HTTP很容易被复制、HTTPS网站使用OV或EV证书必须要实名,而且要求很严格,尤其是EV证书,地址栏将直接展示名称,比如各大银行的网站。
4、应用传输:HTTP工作于应用层、HTTPS工作在传输层。
5、地址协议区别:
http://开头(浏览器情况下显示问号、不安全)
https://开头(浏览器展示安全,绿色小锁图标)
6、协议门槛:HTTP不需要证书、HTTPS需要Gworg机构颁发SSL证书。
解析URL的过程
- DNS解析
- TCP连接
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束
4. 传输层
传输层主要负责主机之间的数据传输服务
主要用以下两种协议
- 传输控制协议-TCP:提供面向连接的,可靠的数据传输服务。
- 用户数据协议-UDP:提供无连接的,尽大努力的数据传输服务(不 保证数据传输的可靠性)。
| 具体内容 | UDP | TCP |
|---|---|---|
| 是否连接 | 无连接 | 面向连接 |
| 是否可靠 | 不可靠传输,不使用流量控制与拥塞控制 | 可靠传输,使用流量与拥塞控制 |
| 连接对象个数 | 支持一对一、一对多、多对一和多对多交互通信 | 只能是一对一 |
| 传输方式 | 面向报文 | 面向字节流 |
| 首部开销 | 首部开销小,仅8字节 | 首部20~60字节 |
| 场景 | 适用于实时应用(IP电话、直播视频等) | 适用于要求可靠传输的应用(如文件传输) |
TCP
TCP报文格式
seq:第一字节编号
ack:期望收到下一段的第一个序号
有六个控制位需要重点介绍:
- URG 紧急位
- ACK 确认位 建立连接后始终为1
- PSH 推送位 取1 时尽快交付,不需要缓存满
- RST 复位 取1 时连接出错,要先释放,再建立
- SYN 同步位 连接请求,接受报
- FIN 终止位 取1时发送完数据释放连接
连接控制:三次握手、四次挥手
两张图参考了:https://blog.csdn.net/qzcsu/article/details/72861891 讲的也很好
- 三次握手
动图
静止
- 第一次握手:
- Client 什么都不能确认;
- Server 确认了对方发送正常,自己接收正常
- 第二次握手:
- Client 确认了:自己发送、接收正常,对方发送、接收正常;
- Server 确认了: 对方发送正常,自己接收正常
- 第三次握手:
- Client 确认了:自己发送、接收正常,对方发送、接收正常;
- Server 确认了: 自己发送、接收正常,对方发送、接收正常
- 四次挥手
动图
静止:
任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。
当另 一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。
举个例子:A 和 B 打电话,通话即将结束后,
A 说“我没啥要说的了”,
B回答“我知道了”,但 是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,
于是 B 可能又巴拉巴拉说 了一通,最后 B 说“我说完了”,
A 回答“知道了”,这样通话才算结束。
流量控制—滑动窗口
采用滑动窗口的方式进行流量控制
流量控制是为了控制发送方发送速率,保证接收方来得及接收。
接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。
拥塞控制
TCP的拥塞控制采用了四种算法,即慢开始 、 拥塞避免 、快重传 和 快恢复。
在网络层也可以 使路由器采用适当的分组丢弃策略(如主动队列管理 AQM),以减少网络拥塞的发生。
慢开始:cwnd大小一轮一翻倍
拥塞避免:cwnd大小到达ssthresh时不翻倍,慢慢+1
快速重传和恢复(fast retransmit and recovery, FRR)
快重传:收到三个重复确认ack,则执行快重传
快恢复:在拥塞时的cwnd直接减半,不归1,然后逐渐+1
对应协议
- FTP:定义了文件传输协议,使用21端口。
- SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。 端口号22
- Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计 算机上,可提供基于DOS模式下的通信服务。
- SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
- POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
- HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP
对应协议
- DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
- SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很 多,无连接的服务就体现出其优势。
- TFTP(Trival File TransferProtocal),简单文件传输协议,该协议在熟知端口69上使 用UDP服务。
- BOOTP(Boot Protocol,启动协议),应用于无盘设备。端口67、68
- DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态 配置IP地址。 端口67、68
5. 网络层
IP地址分类
IP地址分为网络号和主机号,
A类地址的前8位是网络地址,
B类地址的前16位是网络地址,
C 类地址的前24位是网络地址。
A类地址: 1.0.0.0~126.0.0.0
B类地址:128.0.0.0 ~ 191.255.255.255
C类地址:192.0.0.0 ~ 223.255.255.255
D类地址:224.0.0.0 ~ 239.255.255.255 (作为多播使用)
E类地址:保留
A,B,C是基本类,D、E类作为多播和保留使用。主机号,全0的是网络号,主机号全1的是广播 地址。
私有(保留)地址
A类:10.0.0.0 – 10.255.255.255
B类:172.16.0.0 – 172.31.255.255
C类:192.168.0.0 – 192.168.255.255
ARP协议
ARP(Address Resoltion Protocol) 地址解析协议
每个主机会在自己的ARP缓冲区简历一个ARP列表,以表示IP地址和MAC地址之间的 对应关系。
DCHP协议
其实是用UDP的应用层协议
ICMP协议
因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息