网络知识
TCP协议与UDP协议
- 定义
TCP/UDP 都作用于传输层 在程序之间传输数据,数据可以是文本、图片、视频等文件 - 区别
TCP基于连接的、系统要求较高、流模式协议。其优点是稳定可靠,缺点是速度较慢。主要应用于邮件、短信、网页等准确性要求比较高场景,
UDP基于非连接、系统结构简单、数据报模式协议。其优点是速度快,缺点是容易丢包。主要应用于域名查询、语音听话、视频直播等实时性要求比较高的场景。还有一个非常重要的应用场景隧道网络,比如 VPN、 VXLAN
TCP包含三次握手、传输确认、四次挥手
- 三次握手
客户端连接服务端时发起 SYN 包询问是否可以建立连接,服务端可以连接会给客户端返回SYN+ACK包,客户端收到SYN+ACK后再将 ACK 发送到服务端,建立连接成功。
– 为什么采用三次握手的方式建立连接?
为了防止因为网络故障问题,引起的重复建立连接并且连接不准确问题。 - 传输确认
如何处理丢包问?如何处理乱序问题?- 发送缓冲:从建立连接后的第一个序列号为0,之后每一个序号+1
- 发送报文:序列号 + 长度 + 数据内容(从发送缓冲区获取部分数据 )
- 回复确认:ACK = 序列号 + 长度 = 下一包起始序列号。
- 切割发送:根据序列号和长度重构出完整数据
- 假设丢失某些数据,接收端可以通过序列号和长度要求发送端重新传输数据,接收端进行补齐数据
- 四次挥手
客户端主动发起关闭连接请求,需要向服务端发起一包 FIN 包,表示要关闭连接,自己连接终止等待1状态 第一次挥手。服务端向客户端发送ACK包,自己进入关闭等待状态,客户端进入终止等待2状态 第二次挥手。此时服务端还可以发送未发送数据,客户端还可以接收数据。服务端数据发送之后,向客户端发送FIN包,进入最后确认状态 第三次挥手。客户端 收到FIN包后,回复ACK包, 进入超市等待状态,超时后关闭连接,服务端收到ACK后立即关闭连接 第四次挥手。
HTTP与HTTPS
HTTP
超文本传输协议【Hypertext Transfer Protocol】,是一个简单的请求 - 响应协议,通常运行在TCP之上。指定了客户端可能发送给服务端什么样的消息以及得到什么样的响应。明文传输数据,导致数据容易被窃取或篡改。
HTTPS
采用 对称加密 + 非对称加密 + HASH散列算法 + CA认证机构 四种技术合并成的加密方式 对客户端与服务端的数据传输进行加密,目前为止最大限度的解决了HTTP网络传输的数据安全性问题。