网络编程之TCP, UDP, I/O 小记

文章目录

        • 引言
      • OSI 七层模型
      • 传输层协议
        • TCP 是如何做到可靠性?
        • 建立连接:三次握手
        • 断开链接:四次挥手
        • TIME_WAIT状态
    • I/O 多路复用
        • I/O 模型
          • POSIX 定义的同步/异步

引言

这两天学习了 《 UNIX 网络编程 》的 chapter1,2,6, 简要总结一下。

OSI 七层模型

七层网络模型,前三层为用户相关,后四层为系统内核相关。

  • 应用层

  • 表示层

  • 会话层

  • 传输层 TCP/UDP/SCTP

  • 网络层 IPv4 IPv6

  • 数据链路层 下面两层为设备驱动程序及硬件

  • 物理层

传输层协议

TCP 是如何做到可靠性?

  • 确认机制
  • RTT估算
  • 超时重传
  • 流量控制

建立连接:三次握手

  • server listen

  • client -> server (SYNj)

  • server -> client (SYNk ACKj+1)

  • client -> server(ACKk+1)

  • 建立连接

断开链接:四次挥手

这里的四次是指有四个过程,并不是一定有四个包发送,也可能被动关闭一方直接将ACKFIN发送到主动接收方。

图待补充

主动关闭的一方在接收到FIN时进入状态 TIME_WAIT 半关闭状态

TIME_WAIT状态

主动关闭端状态,时间为2*MSL,原因如下:

  • 可靠的实现了TCP全双工连接的中止
  • 允许老的重复分节在网络中消逝,防止下个新的连接建立时,还收到了上个连接的报文

I/O 多路复用

多路复用存在意义:

  • 存在多个描述符,如交互式输入和套接字
  • 同时处理多个套接字
  • 服务端处理监听套接字同时处理已连接套接字
  • 服务端同时处理多个协议,TCP/UDP

I/O 模型

(图待补充)

  • 阻塞式I/O
  • 非阻塞I/O
  • I/O复用(select函数维护多个描述符)
  • 信号驱动
  • 异步 AIO
POSIX 定义的同步/异步

同步: 请求进程阻塞,直到I/O操作完成

异步:请求进程不阻塞

根据该定义,前四种I/O模型,进程都是阻塞的。只有最后AIO才是异步

你可能感兴趣的:(网络相关)