书成

再这样堕落下去就给我去死啊你这混蛋!!!

0%

计算机网络总结

计算机网络

5层协议

5层协议自下而上分别是:

  • 物理层:实现相邻计算机节点之间比特流的传送,京可能屏蔽传输介质和物理设备的差异。
  • 数据链路层:将网络层交下来的 IP 数据报组装成帧传送。
  • 网络层:将运输层的数据封装为数据报并选择合适的网间路由和交换节点,确保数据及时传送。
  • 传输层:负责向两台主机进程之间的通信提供数据传输服务,主要使用 TCP 和 UDP 协议。
  • 应用层:通过应用进程间的交互完成特定的网络应用。

TCP

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

三次握手

TCP 连接时使用三次握手协议建立连接:

三次握手的目的是建立可靠的通信信道,确认双方的发送与接收是否正常

  • 第一次握手:Server 确认对方发送正常,自己接收正常。
  • 第二次握手:Client 确认自己发送、接收正常,Server 发送、接收正常。
  • 第三次握手:Server 确认对方接收正常,自己发送正常。

这样,通过三次握手,双方就互相确认了接收、发送功能是否正常可用。

四次挥手

TCP 断开连接时使用四次挥手协议断开连接:

  1. 客户端发送一个 FIN 关闭客户端到服务端的数据传输
  2. 服务器收到 FIN,返回 ACK (FIN 与 SYN 都消耗一个序号)
  3. 服务端端发送一个 FIN 关闭服务端到客户端的数据传输
  4. 客户端发回 ACK 确认。

任何一方都可以在数据传输结束后发出释放连接的通知,这时 TCP 连接进入半关闭状态,另一方也发出释放连接的通知后才关闭 TCP 连接。

可靠传输

TCP 通过如下的方式提供可靠性:

  1. 应用数据被分割成 TCP 认为合适的数据块,并编号。
  2. 超时重传。如果不能及时收到一个报文段的确认,就重发这个报文段。
  3. 通过校验和检测数据在传输过程中的变化。
  4. 对收到的数据进行排序,确保数据有序。
  5. 丢弃重复数据。
  6. 流量控制,TCP 接收端只允许另一方发送缓冲区能接收的数据。
  7. 拥塞控制:慢开始,拥塞避免,快重传与快恢复(基于丢包的拥塞控制,高版本Linux内核已经不使用)。

UDP

UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。UDP 不提供数据包分组、组装和不能对数据包进行排序,也就是说,当报文发送之后,是无法得知其是否安全完整到达的

UDP报头由4个域组成,其中每个域各占用2个字节,共8个字节,具体包括源端口号、目标端口号、数据报长度、校验值。

TCP 与 UDP 区别

类型 特点 性能 应用场景 首部字节
TCP 面向连接,可靠,以字节流传输 传输效率慢 要求通信可靠 20-60字节
UDP 无需连接,不可靠,以报文段传输 传输效率高 要求通信快速 8字节

HTTP

HTTP 是一个简单的无状态应用层请求-响应协议,它通常运行在 TCP 之上。

请求与响应

HTTP 请求包含以下三个部分:

  • 请求行:请求方式 url 版本 (例:POST /login HTTP/1.1)
  • 请求头:key-value 格式 (例:Referer 表示请求从何处跳转,User-Agent 表示浏览器相关信息)
  • 请求体:请求的参数。

HTTP 响应包含以下三个部分:

  • 响应行:协议 状态码 信息 (例:HTTP/1.1 200 OK)
  • 响应头:key-value 格式
  • 响应体:响应的参数。

状态码

类型 名称 意义
1xx 信息状态码 接收的请求正在处理
2xx 成功状态码 请求正常处理完毕
3xx 重定向状态码 请求地址改变
4xx 客户端错误状态码 客户端发送服务器无法处理的请求
5xx 服务器错误状态码 服务器内部发生错误

HTTP 版本

HTTP/1.0 默认使用短链接。HTTP/1.1 默认使用长连接,在请求头加入 Connection:keep-alive,网页打开后,TCP 连接不会关闭,再次访问服务器依旧使用已经建立的连接。

HTTPS

HTTPS 与 HTTP 的主要区别如下:

  • HTTP 默认端口80,HTTPS 默认端口443
  • HTTP 传输明文,HTTPS 传输内容经过对称加密,对称加密的密钥又通过服务器证书进行了非对称加密。

打开一个网页的过程

  • Cookie 保存在浏览器,Session 保存在服务端。
  • Cookie 只能保存字符串,Session 能保存任何类型的数据。
  • Session 比较安全。