计网知识点
# 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 三次握手和四次挥手的过程
三次握手
- 客户端发送 SYN 包(
syn=j
)到服务器,进入 SYN_SENT 状态,等待服务器确认 - 服务器收到 SYN 包,确认客户端 SYN(
ack=j+1
),同时发送 SYN 包(syn=k
)到客户端,即 SYN+ACK 包,进入 SYN_RECV 状态 - 客户端收到 SYN+ACK 包,发送确认包 ACK(
ack=k+1
)到服务端,两端进入 ESTABLISHED 状态,连接成功
四次挥手
- 客户端发送释放报文(
FIN=1
,seq=u
),进入 FIN-WAIT-1 状态 - 服务端确认释放报文(
ACK=1
,ack=u+1
,seq=v
),进入 CLOSE-WAIT 状态;客户端收到报文后进入 FIN-WAIT-2 状态,等待服务器最后的数据 - 服务端发送完最后数据后,发送释放报文(
FIN=1
,ack=u+1
,seq=w
),进入 LAST-ACK 状态 - 客户端确认释放报文(
ACK=1
,ack=w+1
,seq=u+1
),进入 TIME-WAIT 状态- 服务器收到报文后,立刻进入 CLOSED 状态
- 客户端进入 TIME-WAIT 状态后,经过 2*MSL(最长报文段寿命)并撤销 TCB 后,进入 CLOSED 状态
# 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
:永久移动到新的 URL302
:请求的资源临时从不同的 URI 响应请求
4xx
:客户端错误状态码400
:语义有误或请求参数有误403
:服务器拒绝执行请求404
:未找到
5xx
:服务端错误状态码502
:错误网关,代理服务器接收到了无效响应
在 GitHub 中编辑此页 (opens new window)
上次更新于: 2022/10/26 23:50:01