考点
- 传输层的作用
- 传输层复用/分用的含义
- 传输层和网络层的区别
- UDP协议特点
- UDP协议的报文结构
- TCP协议特点
- TCP协议的报文结构
- TCP三次握手过程
- TCP四次挥手过程
- TCP怎么实现可靠传输
- 停止等待协议
- 滑动窗口协议
- TCP流量控制
- TCP拥塞控制
- HTTP协议
- HTTP工作流程
- HTTP请求格式
- HTTP1.1中8种请求方式
- HTTP响应格式
- HTTP中重要的请求头和相应头字段
- HTTP常用状态码和意义
- HTTPS协议
- HTTPS协议与HTTP协议的区别
- HTTPS协议的工作流程
知识点
传输层
- 作用: 传输层为应用层提供通信服务
- 在OSI七层模型中,传输层是面向通信的最高层,也是用户功能的最底层
- 两大功能: 复用 和 分用
- 复用: 在发送端,多个应用进程公用一个传输层
- 分用: 在接受端,传输层会根据不同端口号将数据派分给不同进程
- 与网络层的区别:
- 网络层为不同主机提供通信服务,传输层为不同主机的不同应用提供通信服务
- 网络层只对报文头部进行差错检测,传输层对整个报文进行差错检测
UDP(用户数据报协议)
- 只在IP数据报服务基础上增加少量功能: 复用和分用, 对整个报文的差错检测
- 无连接
- 不可靠
- 面向报文: 传输单位是报文,不会进行拆分和拼接
- 没有拥塞控制: 不会根据网络拥塞情况控制传输速率
- 支持一对一,一对多,多对多,多对一(TCP只支持一对一)
- 头部开销小只有8字节
TCP(传输控制协议)
- 面向连接
- 可靠的
- 面向字节流: 以字节为单位传输
- 提供全双工通信: 即可作为发送端,也可作为接受端
- TCP连接 = (发送端套接字, 接受端套接字) = (IP:端口, IP:端口)
三次握手 - 客户端发送SYN=1,ACK=0,seq=x,进入SYN-SENT状态
- 服务器接收后发送SYN=1,ACK=1,seq=y,ack=x+1,进入SYN-RCVD状态
- 客户端收到应答后发送ACK=1,seq=x+1,ack=y+1,进入ESTABLISHED状态.服务器端接到报文也进入此状态
- 为什么是三次而不是二次?
防止失效的连接请求报文被服务端接受(第一次握手延迟导致客户端进行二次发送,这样会产生2个连接而服务器都进入ESTABLISHED状态,但实际上只使用了一次连接)
- 为什么是三次而不是二次?
四次挥手
- 客户端发送FIN=1,seq=u,进入FIN-WAIT1状态(不再发送)
- 服务器接受并发送ACK=1,seq=v,ack=u+1,进入CLOSE-WAIT状态(不再接受)
- 服务器将所有数据发送完毕后,发送请求FIN=1,seq=w,ack=u+1,进入LAST-ACK状态(不再发送)
- 客户端接受并返回ACK=1,seq=u+1,ack=w+1,进入TIME-WAIT状态(等待2MSL时间后进入CLOSED状态),服务器接受进入CLOSED状态
TCP可靠传输的实现
无错的(全报文的差错检测),有序的(序列号),无丢失(延时重发)
使用的技术:流量控制,拥塞控制,连续ARQ
ARQ协议(停止等待协议)(Automatic Repeat reQuest自动重传请求)
- 是滑动窗口协议的简化版
- 发送者有超时计时器,发送的报文会保存到确认接受为止
- 接受端接受的报文出现差错(传输时产生意外)直接丢弃
滑动窗口协议
- 连续ARQ协议: 非堵塞(不必等待上一个报文的确认)
- 累计确认: 接受者有接受窗口, 统一返回应答
流量控制
- 控制发送者发送速率,防止接受者来不及接受
- 根本目的: 防止报文丢失
- 由滑动窗口协议实现
- 死锁: 接受端发送一个0的报文,发送端等待下一个报文(但在传输中丢失),接受段也只有等待.从而产生死锁
- 怎么解决死锁: 持续计时器
拥塞控制
- 防止过多数据注入网络,从而缓解网络压力
- 发送发维护一个慢开始门限
- 发送窗口 < 慢开始门限 : 慢开始算法
- 发送窗口 = 慢开始门限 : 慢开始/拥塞避免算法
- 发送窗口 > 慢开始门限 : 拥塞避免算法
摘自 https://blog.csdn.net/u010425776/article/details/55006347
HTTP工作流程
- DNS地址解析:根据URL得到主机IP地址
- 封装HTTP请求数据包
- 封装成TCP包,建立TCP连接
- 客户机发送请求命令: URL + 协议版本号 + MIME信息(请求修饰符,客户机信息,内容)
- 服务器响应: 状态行 + 协议版本号 + 成功/错误代码 + MIME信息(服务器信息,实体信息)
- -
HTTPS工作流程
- 客户端发起HTTPS请求
- 服务端的配置: 证书的配置
- 传送证书
- 客户端解析证书: 确认后产生随机值(私钥)
- 传送加密信息: 传输随机值
- 服务端解密信息
- 传输加密后的信息
- 客户端解密信息