JS Guide JS Guide
首页
  • JS 部分
  • HTML 部分
  • CSS 部分
  • Vue
  • React & Angular
  • 数据结构、算法、OS
  • 计网、浏览器
  • 杂项
笔试
面试
资源
资讯
  • 关于本站
  • 更新历史
  • 贡献指南
  • 文档规范
  • 常见问题
GitHub (opens new window)
首页
  • JS 部分
  • HTML 部分
  • CSS 部分
  • Vue
  • React & Angular
  • 数据结构、算法、OS
  • 计网、浏览器
  • 杂项
笔试
面试
资源
资讯
  • 关于本站
  • 更新历史
  • 贡献指南
  • 文档规范
  • 常见问题
GitHub (opens new window)
  • 面试指南说明
  • JS 部分

  • HTML 部分

  • CSS 部分

  • Vue

  • React & Angular

  • 数据结构、算法、OS

  • 计网、浏览器

    • 计网知识点
      • 1 TCP 和 UDP
      • 2 HTTP 和 HTTPS
    • 浏览器知识点
  • 杂项

  • 面试指南
  • 计网、浏览器
卡洛
2022-10-22
目录

计网知识点

# 1 TCP 和 UDP

TCP:传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

UDP:用户数据报协议(User Datagram Protocol)为应用程序提供了一种无需建立连接就可以发送封装的IP数据包的方法。

参考:

  • https://www.cnblogs.com/bj-mr-li/p/11106390.html (opens new window)
  • https://blog.csdn.net/xylitolz/article/details/116105992 (opens new window)

# 1.1 TCP 和 UDP 的区别

  • 是否连接:UDP 无连接;TCP 面向连接(握手挥手)
  • 是否可靠:UDP 是不可靠传输,不使用流量控制和拥塞控制;TCP 是可靠传输,使用流量控制和拥塞控制
  • 连接对象个数:UDP 支持一对一、一对多、多对一、多对多交互通信;TCP 只能是一对一通信
  • 传输方式:UDP 面向报文;TCP 面向字节流
  • 头部开销:UDP 头部开销小(仅 8 字节);TCP 头部开销大(最小 20 字节最大 60 字节)
  • 传输效率、速度:UDP 传输效率高、速度快;TCP 传输效率低、速度慢
  • 双工性:TCP 和 UDP 都是全双工的
  • 适用场景:UDP 适用于实时应用(IP 电话、视频会议、直播等);TCP 适用于可靠传输应用(文件传输等)

# 1.2 TCP 三次握手和四次挥手的过程

三次握手

  1. 客户端发送 SYN 包(syn=j)到服务器,进入 SYN_SENT 状态,等待服务器确认
  2. 服务器收到 SYN 包,确认客户端 SYN(ack=j+1),同时发送 SYN 包(syn=k)到客户端,即 SYN+ACK 包,进入 SYN_RECV 状态
  3. 客户端收到 SYN+ACK 包,发送确认包 ACK(ack=k+1)到服务端,两端进入 ESTABLISHED 状态,连接成功

img

四次挥手

  1. 客户端发送释放报文(FIN=1,seq=u),进入 FIN-WAIT-1 状态
  2. 服务端确认释放报文(ACK=1,ack=u+1,seq=v),进入 CLOSE-WAIT 状态;客户端收到报文后进入 FIN-WAIT-2 状态,等待服务器最后的数据
  3. 服务端发送完最后数据后,发送释放报文(FIN=1,ack=u+1,seq=w),进入 LAST-ACK 状态
  4. 客户端确认释放报文(ACK=1,ack=w+1,seq=u+1),进入 TIME-WAIT 状态
    • 服务器收到报文后,立刻进入 CLOSED 状态
    • 客户端进入 TIME-WAIT 状态后,经过 2*MSL(最长报文段寿命)并撤销 TCB 后,进入 CLOSED 状态

img

# 1.3 双工性

双工在物理层面上是指通信线路上可以同时发送和接收数据,然而在数据链路层的传输采用载波监听/碰撞检测的技术。指的就是在有线传输上只能存在一种电信号,所以也就不会存在两种电信号同时存在的场景了,即有线传输物理层面上没有双工一说,要么发送数据,要么接收数据。(PS:无线传输中的码分复用可以同时存在)

我们现在认为的双工是指逻辑连接层面上,而 UDP 是不需要进行逻辑连接的,只是单向发送,但双方随时都可以发送,如果你认为这是双工那也合理。而 TCP 的全双工也是逻辑层面上,通信两端随时都可以发送和接收数据,不需要像 HTTP/1.1 那样采用请求应答模式。

# 2 HTTP 和 HTTPS

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版,即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

# 2.1 HTTP 和 HTTPS 的区别

  • 费用:HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用。
  • 传输协议:HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
  • 连接端口:HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  • 连接安全性:HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

# 2.2 HTTP 请求

  • GET:请求指定的页面信息,并返回实体主体。
  • HEAD:类似于 GET,但返回的响应无具体内容,用于获取报头。
  • POST:向指定资源提交数据进行处理请求,如提交表单或上传文件。数据被包含在请求体中。POST 请求可能会导致新资源的建立和/或已有资源的修改。
  • PUT:从客户端向服务器传送的数据取代指定的文档内容。
  • DELETE:请求服务器删除指定的页面。
  • CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
  • OPTIONS:允许客户端查看服务器的性能。
  • TRACE:回显服务器收到的请求。主要用于测试或诊断。

# 2.3 HTTP 状态码

  • 1xx:信息状态码,代表请求已被接受并需继续处理,这是临时响应
  • 2xx:成功状态码
    • 200:成功
  • 3xx:重定向状态码
    • 301:永久移动到新的 URL
    • 302:请求的资源临时从不同的 URI 响应请求
  • 4xx:客户端错误状态码
    • 400:语义有误或请求参数有误
    • 403:服务器拒绝执行请求
    • 404:未找到
  • 5xx:服务端错误状态码
    • 502:错误网关,代理服务器接收到了无效响应
在 GitHub 中编辑此页 (opens new window)
上次更新于: 2022/10/26 23:50:01
OS 知识点
浏览器知识点

← OS 知识点 浏览器知识点→

Theme by Vdoing | Copyright © 2022-2022 Carlo | Powered by VuePress
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式