网络基础之通信协议和流程

几个基础概念:

  • TCP
    • 可靠连接,如果客户端无响应会自动重试。
  • UDP
    • 不可靠连接,客户端无响应不会重试。
  • Http
    • 是一种基于TCP/IP协议的超文本传输协议,是应用层的协议,实现该协议建立的链接都属于短链接。
  • Socket
    • 是基于TCP/IP的一种调用接口。生成长链接。

画了一张网络传输流程图:

五种I/O模型:
Linux将数据从内核拷贝到用户内存,属于I/O操作,Linux提供了5种模式可以支持。

  • 阻塞I/O
    • 应用请求缓存内容,不存在就阻塞等待。不适用用于并发量大的应用,得为每个请求分配一个处理线程。
  • 非阻塞I/O
    • 应用请求缓存内容,不存在就返回error,然后不停重试。理论可以支持单线程轮询所有请求。轮询消耗CPU资源。
  • I/O多路复用
    • 多个I/O请求注册到一个Select复用器上。调用select时阻塞,并监听多个I/O,有可用数据时返回。类似于阻塞I/O,只不过只阻塞一个select,不是阻塞多个I/O。
  • 信号驱动I/O
  • 异步I/O
    • 应层发起读数据时候注册回调函数,当数据写完,内核通知应用层读取。