知识梳理_网络篇

Source

网络体系结构

五层协议体系结构

应用层 HTTP,SMTP,FTP
运输层 TCP,UDP
网络层 IP
链路层
物理层

TCP/IP体系结构

应用层 HTTP,SMTP,FTP
运输层 TCP,UDP
网络层 IP
网络接口层

UDP(User Datagram Protocol,用户数据报协议)

特点

  1. 面向无连接
  2. 不可靠
  3. 数据报文段传输
  4. 传输效率快
  5. 所需资源少
  6. 首部字节 8个字节

TCP(Transmission Control Protocol ,传输控制协议)

特点

  1. 是面向连接
  2. 可靠
  3. 字节流传输
  4. 传输效率慢
  5. 所需资源多
  6. 首部字节20-60

三次握手

三次握手
图片来源:https://mp.weixin.qq.com/s/t7ZYT6wBBbFYVBPOSztpRg

  1. 第一次握手:建立连接时,客户端发生SYN(Seq=x)包到服务器,并进入SYN_SEND状态,等待服务器确认。
  2. 第二次握手:服务器收到SYN包,打开客户端连接,发送一个 SYN-ACK 作为答复,Seq =y,ACK=x+1
  3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1)

举例:

  • 小明给小红打电话,接通了后,小明说喂,能听到吗,这就相当于是连接建立。
  • 小红给小明回应,能听到,你能听到我说的话吗,这就相当于是请求响应。
  • 小明听到小红的回应后,好的,这相当于是连接确认。在这之后小明和小红就可以通话/交换信息了。

四次挥手

在连接终止阶段使用四次挥手
四次挥手
图片来源:https://mp.weixin.qq.com/s/t7ZYT6wBBbFYVBPOSztpRg

  1. 客户端发送一个FIN,用来关闭客户端到服务器的连接,并进入FIN_WAIT_1状态
  2. 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1
  3. 当客户端收到服务器发送的 ACK 响应后,客户端就进入 FIN_WAIT_2 状态,然后等待来自服务器的 FIN 消息
  4. 服务器发送 ACK 确认消息后,一段时间(可以进行关闭后)会发送 FIN 消息给客户端,告知客户端可以进行关闭。
  5. 当客户端收到从服务端发送的 FIN 消息时,客户端就会由 FIN_WAIT_2 状态变为 TIME_WAIT 状态。
  6. 客户端发回ACK报文确认,并将确认序号设置为收到序号加1
  7. 在等待一段时间后,连接关闭,客户端上所有的资源(包括端口号和缓冲区数据)都被释放。

举例:

  • 小明对小红说,我所有的东西都说完了,我要挂电话了。
  • 小红说,收到,我这边还有一些东西没说。
  • 经过若干秒后,小红也说完了,小红说,我说完了,现在可以挂断了
  • 小明收到消息后,又等了若干时间后,挂断了电话。

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版本新特性

  1. 长连接的通信方式,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。
  2. 管道网络传输,即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。
  3. 支持断点续传,通过使用请求头中的 Range 来实现

一次完整的HTTP请求

  1. DNS解析,查找过程:浏览器缓存、本机 hosts 文件、网络中 DNS 查询
  2. TCP连接
  3. 发起HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 连接结束

Http与Https的区别

  1. HTTP 以http://开头,而HTTPS 以https://开头
  2. HTTP是不安全的,HTTPS是安全的
  3. HTTP默认端口80,HTTPS默认端口443
  4. HTTP无法加密,而HTTPS对传输数据进行加密
  5. HTTP无需证书,而HTTPS需要CA机构颁发的证书

Https请求过程

  1. 服务器把自己的公钥注册到CA
  2. CA用自己的私钥将服务器的公钥数字签名并颁发数字证书
  3. 客户端拿到服务器的数字证书后,使用CA的公钥(CA的公钥已事先置入到浏览器或者操作系统里)确认服务器证书的真实性。
  4. 从数字证书获取服务器公钥后,使用它对报文加密后发送
  5. 服务器用私钥对报文解密
  6. 以上是协商过程,产生会话密钥
  7. 接下来双方采用会话秘钥,对称加密,进行通信。

对称加密

密钥只有⼀个,加密解密为同⼀个密码,且加解密速度快,典型的对称加密
算法有DES、 AES等;

非对称加密

密钥成对出现(且根据公钥⽆法推知私钥,根据私钥也⽆法推知公钥),
加密解密使⽤不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称
加密速度较慢,典型的⾮对称加密算法有RSA、 DSA等