引言
这两天学习了 《 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)
-
建立连接
断开链接:四次挥手
这里的四次是指有四个过程,并不是一定有四个包发送,也可能被动关闭一方直接将ACK和FIN发送到主动接收方。
图待补充
主动关闭的一方在接收到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才是异步
本文深入探讨了TCP协议如何实现数据传输的可靠性,包括确认机制、RTT估算、超时重传和流量控制等关键概念。同时,文章详细介绍了建立连接的三次握手和断开连接的四次挥手过程,以及TIME_WAIT状态的作用。此外,还讲解了I/O多路复用的意义和I/O模型的不同类型,包括阻塞式I/O、非阻塞I/O、I/O复用、信号驱动和异步AIO。
2285

被折叠的 条评论
为什么被折叠?



