HTTP、HTTPS、TCP、UDP 协议基础知识

这里写目录标题

  • 1. HTTP和HTTPS(应用层)
    • 1.1 HTTP
      • HTTP 是什么
      • HTTP 优缺点
      • 如何解决 HTTP 无状态性的问题
    • 1.2 HTTPS
      • HTTPS的工作流程
    • 1.3 HTTP 与 HTTPS 区别
  • 2. TCP 与 UDP(传输层)
    • 2.1 TCP
      • TCP是什么
      • TCP 特点、三次握手、四次挥手
    • 2.2 UPD
      • UDP 是什么
      • UDP特点
    • 2.3 TCP和UDP区别

1. HTTP和HTTPS(应用层)

HTTP和HTTPS都位于计算机网络模型中的应用层。

1.1 HTTP

HTTP 是什么

HTTP是超文本传输协议,该协议允许传输任意类型的数据对象,一般是HTML页面与页面内的图片、音频、视频、文件等内容。
传输一般在客户端与服务器端间进行,请求资源的叫客户端,发送资源的叫服务器端,客户端请求服务器时只需输入请求方法与路径。
HTTP 是无状态协议,也就是说该协议传了就是传了,不会留下任何东西,服务器处理完请求就断开通信,客户端的每次请求都需开启新得连接。
HTTP 是基于 TCP/IP 协议的应用层协议,不涉及数据包传输,规定了客户端和服务器端之间的通信方式,默认使用 80 端口。

HTTP 优缺点

优点:
请求只需输入请求路径,简单快速。
传输任意类型数据,灵活性高。
服务器处理完请求并接收到客户端应答即断开连接,节约传输时间。
缺点:
客户端每次请求都新开一个连接,比较麻烦。
HTTP1.0时,由于HTTP的无状态性,服务器无法获知当前请求是谁发的。

如何解决 HTTP 无状态性的问题

HTTP1.1时新增了cookie,当客户端向服务端发送请求时,服务器收到请求并创建一个 Session 对象,同时生成一个sessionId,并通过响应头的 Set-Cookie:JSESSIONID=XXX 命令,向客户端发送要求设置 Cookie 的响应;客户端收到响应后,在本机客户端设置了一个 JSESSIONID=XXX 的 Cookie 信息,Cookie信息会保存在浏览器中。接下来客户端每次向同一个网站发送请求时,请求头都会带上该 Cookie 信息,然后服务器通过读取请求头中的 Cookie 信息,获取名称为 JSESSIONID 的值,得到此次请求的 sessionId。这样浏览器才具有了记忆能力。
HTTP、HTTPS、TCP、UDP 协议基础知识_第1张图片
还有一种方式是使用 JWT 机制
JWT 的 Cookie 信息存储在客户端,而不是服务端内存中。也就是说,JWT 直接本地进行验证就可以,验证完毕后,这个 Token 就会在 Session 中随请求一起发送到服务器,通过这种方式,可以节省服务器资源,并且 token 可以进行多次验证。

Token和session的区别
跨域问题:token没有跨域问题,session有跨域问题;
容易扩展:token不储存于服务器中,适用于服务器的分布式应用;

1.2 HTTPS

因为 HTTP 传输数据都是明文传输,数据容易被第三方监听和窃取,所以 HTTPS 使用 TLS/SSL 先去加密数据,再进行传输,HTTPS 并不是一个新的应用层协议,其就是由 HTTP + TLS/SSL 协议组合而成。
HTTP、HTTPS、TCP、UDP 协议基础知识_第2张图片

HTTPS的工作流程

HTTP、HTTPS、TCP、UDP 协议基础知识_第3张图片

  1. 用户在浏览器发起HTTPS请求,默认使用服务端的443端口进行连接;
    HTTPS需要使用一套CA数字证书,证书内会附带一个公钥Pub,而与之对应的私钥Private保留在服务端不公开;
  2. 服务端收到请求,返回配置好的包含公钥Pub的证书给客户端;
  3. 客户端收到证书,校验合法性,主要包括是否在有效期内、证书的域名与请求的域名是否匹配,如果不通过,则显示HTTPS警告信息,如果通过则继续;
  4. 客户端生成一个用于对称加密的随机Key,并用证书内的公钥Pub进行加密,发送给服务端;
  5. 服务端收到随机Key的密文,使用与公钥Pub配对的私钥Private进行解密,得到客户端真正想发送的随机Key;
  6. 服务端使用客户端发送过来的随机Key对要传输的HTTP数据进行对称加密,将密文返回客户端;
  7. 客户端使用随机Key对称解密密文,得到HTTP数据明文;
  8. 后续HTTPS请求都使用交换好的随机Key进行数据的对称加解密。

https加密过程参考(对称加密,非对称加密):https://blog.csdn.net/yzx3105/article/details/127778773

1.3 HTTP 与 HTTPS 区别

  1. HTTP 在地址栏上的协议是以 http:// 开头,而 HTTPS 在地址栏上的协议是以 https:// 开头。
  2. HTTP 是明文传输,不安全。而 HTTPS 是安全的协议。
  3. HTTP 的默认端口是 80,而 HTTPS 的默认端口是 443。

2. TCP 与 UDP(传输层)

TCP 和 UDP 都位于计算机网络模型中的传输层,它们负责传输应用层产生的数据。

2.1 TCP

TCP是什么

TCP 是一个工作在传输层的可靠数据传输的服务,它能确保接收的网络包是无损坏、无间隔、非冗余和按序的数据。
通过三次握手来建立 TCP 连接,三次握手就是用来启动和确认 TCP 连接的过程。一旦连接建立后,就可以发送数据了,当数据传输完成后,会通过四次挥手断开连接。

TCP 特点、三次握手、四次挥手

https://blog.csdn.net/yzx3105/article/details/127770121

2.2 UPD

UDP 是什么

用户数据报协议。它不需要所谓的握手操作,从而加快了通信速度,允许网络上的其他主机在接收方同意通信之前进行数据传输。

UDP特点

  1. UDP是无连接的,即通信时不需要创建连接(发送数据结束时也没有连接可以释放)所以减小了开销和发送数据前的时延;
  2. UDP采用最大努力交付,不保证可靠交付,因此主机不需要维护复杂的连接状态;
  3. UDP是面向报文的,只在应用层交下来的报文前增加了首部后就向下交付IP层;
  4. UDP是无阻塞控制的,即使网络中存在阻塞,也不会影响发送端的发送频率
  5. UDP支持一对一、一对多、多对一、多对多的交互通信

2.3 TCP和UDP区别

HTTP、HTTPS、TCP、UDP 协议基础知识_第4张图片

来源:https://www.kuangstudy.com/bbs/1334677642770714625

你可能感兴趣的:(面试题2022,http,https,tcp/ip)