计算机网络基础

计算机网络基础

作为一个开发人员,还是需要对网络通信相关的知识有所了解的,在此记录相关基础概念。

网络协议

网络协议至上而下分为:应用层、传输层、网路层、数据链路层、物理层。ISO(国际标准化组织)给出的了OSI七层网络协议模型:应用层、表示层会话层、传输层、网路层、数据链路层、物理层。

  • 应用层包括应用程序和网络协议,常见的网络协议有:HTTP、SMTP、FTP、DNS等。
  • 传输层在应用程序之间传输报文,在这一层主要有两层协议:TCP和UDP。TCP提供了面向连接的服务,能控制并确认报文是否送达。UDP提供的是无连接服务,不具备可靠性,没有流量控制,也没有拥塞控制。
  • 网络层负责将数据包从一台主机迁移到另一台主机,有非常重要的IP协议,用于协定发送者和接收者的位置。
  • 链路层为网络层提供运输的媒介,包括以太网、Wi-Fi和电缆接入 DOCSIS 协议。
  • 链路层是将数据包一帧一帧的运输,物理层是将帧中的一个比特从一个节点运输到另一个节点。

HTTP

HTTP 是一种超文本传输协议。通常一次连接只处理一个请求,所以 HTTP 是无连接、无状态的。也可通过设置请求头中的 Connection : Keep-Alive 来持久化连接。Keep-Alive 有两个参数,timeout 指示空闲连接必须保持打开状态的最短时间(秒为单位),max 指示在关闭连接之前可以在此连接上发送的最大请求数,例如 timeout=5, max=900。
与 HTTP 协议有关的协议有:

  1. TCP/IP 协议是一个协议簇(cù),它是一系列网络协议的通称,其中最核心的两个协议是 TCP 协议和 IP 协议。TCP 协议的可靠性保证数据不会丢失,IP 协议解决通信双方寻址的问题。
  2. DNS 提供域名解析的功能。
  3. URI/URL 用于定位网络资源,URI 也叫统一资源标识符,URL 叫统一资源定位符。URL 是实现 URI 的一种方式,属于 URI 的子集。
  4. HTTPS 在 HTTP 的基础上增加了传输加密和身份认证,进一步保证了传输过程的安全性,即 HTTPS = HTTP + SSL。

三次握手

  1. 客户端发送连接请求(SYN = 1, seq = x),然后进入SYN_SEND状态。
  2. 服务端收到请求后发送请求确认(ACK = 1, ACKnum = x + 1, SYN = 1, seq = y),然后进入SYN_WAIT状态。
  3. 客户端收到服务端的确认后,向服务端发送确认(ACK = 1, ACKnum = y + 1),然后都进入ESTAB状态。

三次握手

为什么建立连接是三次握手而不是两次或四次呢?

因为能否建立连接取决于客户端、服务端的发送和接收请求的能力。例如第一次握手成功代表客户端具备发送请求的能力,第二次握手成功表示服务端接收和发送请求的能力是 OK 的,第三次握手成功表示客户端接收请求的能力是没问题的就能确认服务端和客户端能正常通信,所以就能建立连接了。

四次挥手

  1. 客户端发送断开请求(FIN = 1, seq = x),然后进入FIN_WAIT1状态。
  2. 服务端收到客户端请求后,回复准备断开(ACK = 1, ACKnum = x + 1),然后进入CLOSE_WAIT状态。客户端收到确认信息后进入FIN_WAIT2状态。
  3. 服务端准备完成,发送确认断开请求(FIN = 1, seq = y)。然后进入LAST_WAIT状态。
  4. 客户端收到确认断开请求后,进入TIMED_WAIT状态,然后回复服务端确认断开(ACK = 1, ACKnum = y + 1),服务端收到客户端的确认回复后进入CLOSE状态。
  5. 客户端等待固定(两个最大段生命周期,2MSL)时间后,未收到服务端的ACK,则认为服务端已断开连接,进入CLOSE状态。

四次挥手

CDN(Content Delivery NetWork)

即内容分发网络。它应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求,从而达到降低网络拥塞,提高访问响应速度和命中率。

WAF(Web Application FireWall)

俗称防火墙,通过执行一系列针对 HTTP/HTTPS 的安全策略来为 Web 应用提供保护。通常位于 Web 服务之前,可以防止如SQL注入、跨站脚本等攻击。