一文读懂计算机网络协议
目录
计算机网络体系架构
OSI架构(七层)、TCP/IP架构(4层,应用、运输、网际、网络接口)、五层体系架构
UDP(User Datagram Protocol)
用户数据报协议
UDP通过端口号把数据包分发给正确的程序
速度快,数据包容易丢失,视频
TCP(Transmission Control Protocol)
传输控制协议
数据包重传、排序机制,基于字节流
心跳包
连接阶段
三次握手
- 客户端-服务器(服务器可以收到请求) SYN(同步序列编号Synchronize Sequence Numbers)报文,客户端处于SYN_SEND状态,SYN=1, seq=x
- 服务器-客户端(客户端可以发送并收到请求) SYN=1, ACK(确认字符Acknowledge character)=x+1, seq=y
- 客户端-服务器(服务器可以发送请求) ACK=y+1, seq=x+1,可携带数据,客户端处于ESTABLISHED状态,服务器收到报告后也处于ESTABLISHED状态
数据传输阶段
发送端没有接收到接收端的确认数据包,触发重发机制
断开连接阶段
四次挥手
- 客户端-服务器 FIN=1, seq=u, 客户端处于FIN_WATI状态
- 服务器-客户端 ACK=1, seq=v, ack=u+1, 服务器处于CLOST_WAIT状态
- 服务器-客户端 过一阵子,FIN=1, ACK=1, seq=w, ack=u+1, 服务器处于LAST_ACK状态
- 客户端-服务器 ACK=1, seq=w+1, 客户端处于TIME_WAIT状态
过一阵子,客户端、服务器变为CLOSED状态
TCP和UDP的区别
- TCP面向连接,UDP无连接
- 交付可靠性
- TCP面向字节流,UDP面向报文
- TCP1对1,UDP1对1、1对多
- TCP首部较大
一句话总结三次握手
在客户端和服务器之间建立正常的TCP网络连接时,客户端首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应
HTTP
请求-应答模式 HTTP应用层协议(内容的规范) TCP传输层协议(传输和连接方式的规范)
特点
- 无状态
- 明文传输
- 队头阻塞
GET和POST
没有实质区别,报文格式不同
- GET获取资源,POST提交/上传数据
- GET请求长度在浏览器中有限制,POST没有
keep-alive
HTTP长连接重用一个TCP连接来发送/接收多个HTTP请求,来减少创建/关闭多个TCP连接的开销
Keep-Alive: timeout=5, max=100
表示这个TCP通道可以保持5秒,最多接收100次请求就断开
状态码
- 1XX:中间状态,需要后续操作
- 2XX:成功 200 OK 204 No Content 206 Partial Content
- 3XX:重定向 301永久重定向 302临时重定向 304命中缓存
- 4XX:请求报文有误 400 Bad Request 403 Forbidden 404 Not Found
- 5XX:服务器错误 500 Interneal Server Error服务器报错 502 Bad Gateway访问出错 503 Service Unavailable服务器繁忙或者停机维护
HTTPS
加密传输、身份认证
对称加密(数据的可逆变换)+非对称加密(秘钥)的混合加密机制
第三方认证防公钥被掉包(客户端无法分辨传回公钥的到底是中间人还是服务器),服务器会将自身的证书和公钥传送给客户端,证书中包含网站信息(域名等)和数字签名(公钥生成)
SSL证书需要绑定IP,不能在同一个IP上绑定多个域名
Http2
- 多路复用(帧-流-连接、并发发送、异步相应)
- 头部压缩
- 首部表(通用键值对只需发一次,省略重复的头信息)
- 服务器推送(帮助客户端存入缓存)
- 传输优先级
- 重置数据的发送
IP
32位 = 网络号 + 主机号