知识梳理_网络篇
网络体系结构
五层协议体系结构
应用层 HTTP,SMTP,FTP
运输层 TCP,UDP
网络层 IP
链路层
物理层
TCP/IP体系结构
应用层 HTTP,SMTP,FTP
运输层 TCP,UDP
网络层 IP
网络接口层
UDP(User Datagram Protocol,用户数据报协议)
特点
- 面向无连接
- 不可靠
- 数据报文段传输
- 传输效率快
- 所需资源少
- 首部字节 8个字节
TCP(Transmission Control Protocol ,传输控制协议)
特点
- 是面向连接
- 可靠
- 字节流传输
- 传输效率慢
- 所需资源多
- 首部字节20-60
三次握手
图片来源:https://mp.weixin.qq.com/s/t7ZYT6wBBbFYVBPOSztpRg
- 第一次握手:建立连接时,客户端发生SYN(Seq=x)包到服务器,并进入SYN_SEND状态,等待服务器确认。
- 第二次握手:服务器收到SYN包,打开客户端连接,发送一个 SYN-ACK 作为答复,Seq =y,ACK=x+1
- 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1)
举例:
- 小明给小红打电话,接通了后,小明说喂,能听到吗,这就相当于是连接建立。
- 小红给小明回应,能听到,你能听到我说的话吗,这就相当于是请求响应。
- 小明听到小红的回应后,好的,这相当于是连接确认。在这之后小明和小红就可以通话/交换信息了。
四次挥手
在连接终止阶段使用四次挥手
图片来源:https://mp.weixin.qq.com/s/t7ZYT6wBBbFYVBPOSztpRg
- 客户端发送一个FIN,用来关闭客户端到服务器的连接,并进入FIN_WAIT_1状态
- 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1
- 当客户端收到服务器发送的 ACK 响应后,客户端就进入 FIN_WAIT_2 状态,然后等待来自服务器的 FIN 消息
- 服务器发送 ACK 确认消息后,一段时间(可以进行关闭后)会发送 FIN 消息给客户端,告知客户端可以进行关闭。
- 当客户端收到从服务端发送的 FIN 消息时,客户端就会由 FIN_WAIT_2 状态变为 TIME_WAIT 状态。
- 客户端发回ACK报文确认,并将确认序号设置为收到序号加1
- 在等待一段时间后,连接关闭,客户端上所有的资源(包括端口号和缓冲区数据)都被释放。
举例:
- 小明对小红说,我所有的东西都说完了,我要挂电话了。
- 小红说,收到,我这边还有一些东西没说。
- 经过若干秒后,小红也说完了,小红说,我说完了,现在可以挂断了
- 小明收到消息后,又等了若干时间后,挂断了电话。
HTTP(Hypertext Transfer Protocol,超文本传输协议)
Get 和 Post 区别
- Get:
请求数据在URL后
传输数据就会受到URL长度的限制
不安全 - Post:
请求参数在请求体中
由于不是通过URL传值,理论上数据不受限
相对安全
HTTP请求格式
图片来源:https://www.cnblogs.com/lmh001/p/9928517.html
HTTP响应格式
响应行(状态行): HTTP 版本、 状态码、 状态消息
响应头: 消息报头, 客户端使用的附加信息
空行: 响应头和响应实体之间的, 必须的。
响应实体: 正文, 服务器返回给浏览器的信息
图片来源:https://www.cnblogs.com/lmh001/p/9928517.html
HTTP1.1版本新特性
- 长连接的通信方式,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。
- 管道网络传输,即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。
- 支持断点续传,通过使用请求头中的 Range 来实现
一次完整的HTTP请求
- DNS解析,查找过程:浏览器缓存、本机 hosts 文件、网络中 DNS 查询
- TCP连接
- 发起HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束
Http与Https的区别
- HTTP 以http://开头,而HTTPS 以https://开头
- HTTP是不安全的,HTTPS是安全的
- HTTP默认端口80,HTTPS默认端口443
- HTTP无法加密,而HTTPS对传输数据进行加密
- HTTP无需证书,而HTTPS需要CA机构颁发的证书
Https请求过程
- 服务器把自己的公钥注册到CA
- CA用自己的私钥将服务器的公钥数字签名并颁发数字证书
- 客户端拿到服务器的数字证书后,使用CA的公钥(CA的公钥已事先置入到浏览器或者操作系统里)确认服务器证书的真实性。
- 从数字证书获取服务器公钥后,使用它对报文加密后发送
- 服务器用私钥对报文解密
- 以上是协商过程,产生会话**
- 接下来双方采用会话秘钥,对称加密,进行通信。
对称加密
**只有⼀个,加密解密为同⼀个密码,且加解密速度快,典型的对称加密
算法有DES、 AES等;
非对称加密
**成对出现(且根据公钥⽆法推知私钥,根据私钥也⽆法推知公钥),
加密解密使⽤不同**(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称
加密速度较慢,典型的⾮对称加密算法有RSA、 DSA等