0%

Web与API

Web与API调用相关学习笔记

网络通信协议层 (Network Protocols)

OSI Open System Interconnection

网络接口层

MAC地址:每块网卡出场时都有一个全球唯一的物理地址。
交换机:在LAN内,交换机通过维护一张MAC地址表,下发数据帧
ARP:用于将IP地址解析为局域网内MAC地址

局域网内为什么要套一层IP
现代应用均使用Socket API来进行网络通信,核心参数是目标IP以及端口号
传输层协议依赖IP首部,MAC只负责相邻节点的数据帧交付,不提供可靠传输,流量控制以及端口(port 多路复用)功能
IP地址下具有层次结构,例如在家庭网络中将一个路由器新接入WAN并启动其DHCP功能,该路由器内分发下的地址就

网络层

核心协议 IPv4,IPv6 为互联网上每一台设备分配一个逻辑地址(公网IP地址)
核心工作:路由,互联网是由无数个路由器连接而成的网状结构,当一个数据包到达路由器时,路由器需要决定他的下一级跳去哪。
IP层只负责把数据送到,不保证不丢失,不保证按照顺序到达。

传输层

前面讲到,网络层把数据送到,但机器上同时运行几十个程序,传输层通过端口号将数据准确分发给具体的进程。

1.TCP(传输控制协议):

  • 可靠性:面向连接,保证数据不丢失不重复,按照顺序到达。
  • 三次握手:建立连接前,确认彼此的收发能力正常。
    • 第一次(SYN):客户端发起,发送一个标有SYN=1的控制包,携带有自己的初始序列号Seq=x(我要连接你,我发给你的数据包从X编号开始算),客户端方式转变CLOSED->SYN_SENT
    • 第二次(SYN-ACK):服务端收到后,发现客户端发送正常,回复一个带有SYN=1和ACK=1的包,携带有自己的初始序列号Seq=1,以及确认序列号Ack=x+1(收到x,期待发送x+1,另外我的数据包编号将从y开始),服务端状态转变LISTEN->SYN_RCVD
    • 第三次(ACK):客户端收到SYN_ACK,确认了服务端的发送和接收能力正常。它再发一个ACK=1的包给服务端,携带信息,Seq=x+1,Ack=y+1,双方状态转变ESTABLISHED。
  • 四次挥手:断开时,保证双方的残余数据都已经发送完毕。
  • 滑动窗口与拥塞机制:一次发送多个确认请求,如果当前窗口中某些传输已经完成,那么窗口向后滑动;如果网络拥堵,TCP自动降低发送速率;如果网络通畅,逐渐提速。

2.UDP(用户数据报协议)

  • 不可靠性:无连接,把数据打包之后直接传出,不管对方是否收到。
  • 应用:没有握手重传的开销,极致低延迟,eg:视频通话,在线游戏,DNS解析等。

现代 Web 后端框架

异步 I/O 与高并发处理(Asynchronous I/O)

状态管理与数据持久化(State & Data Persistence)

服务部署与环境配置