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

引言

这两天学习了 《 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才是异步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值