Linux高性能服务器编程(第一篇)——阅读笔记
文章目录
Linux高性能服务器编程(第一篇 TCP/IP协议详解)
第一章 TCP/IP协议族
1. TCP/IP协议族体系结构及主要协议
- TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层
- 数据链路层:处理数据在物理媒介上的传输,实现了IP和MAC地址的相互转换
- 网络层:实现数据包的选路和转发
- 传输层:为两台主机提供端到端的通信
- 应用层:
2. 封装
3. 分用
5. ARP协议工作原理
主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址,此网络上的其它机器都将收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址。
6. DNS工作原理
7. socket和TCP/IP协议族的关系
socket是操作系统向应用程序提供的一套通用网络编程接口:将应用程序数据从用户缓冲区复制到TCP/UDP内核发送缓冲区;从内核TCP/UDP缓冲区中复制数据到用户缓冲区;修改内核中各层协议的某些头部信息或其它数据结构。
第2章 IP协议详解
1. IP服务的特点
- 无状态:简单高效
- 无连接:每次都要指定对方IP地址
- 不可靠:只承诺尽最大努力
2. IPv4头部结构
3. IP分片
- IP报文的长度超过以太网帧的MTU时,将被分片传输。
4. IP路由
第3章 TCP协议详解
1. TCP服务的特点
- 面向连接:通信双方必须先建立连接才能开始数据读写,双方都要为该连接分配内核资源;全双工
- 字节流
- 可靠传输:发送应答机制,发送端发送的每个 TCP 报文段都必须得到接收方的应答,才认为传输成功。另外,TCP采用超时重传机制,一个报文发出后启动定时器,定时间内没有收到应答则重新发送。由于IP报文可能乱序、重复,TCP协议还会对收到的TCP报文段重排整理。
2. TCP头部结构
3. TCP连接的建立和关闭
报文5、6可以合并成一个,但是有可能存在半关闭状态,不能合并报文。发送FIN表示自己不再发送数据,但可以接收数据。
4. TCP状态转移
5. 复位报文段
通知对方关闭或重新建立连接
- 访问不存在的端口,或端口处于TIME_WAIT状态
- 异常终止连接
- 处理半打开连接
6. TCP交互数据流
- 交互数据:包含很少字节,实时性要求高,例如Telnet
解决交互数据流中由于网络延迟导致的报文段数据过多、进而导致网络拥塞问题,使用Nagle算法:通信双方在任意时刻最多只能发送一个未被确认的TCP报文段,得到确认前不发送其它TCP报文段;等待确认时收集需要发送的微量数据,下次一起发出。极大减少了网络上微小TCP报文段的数量。
7. TCP成块数据流
- 成块数据:长度一般是TCP报文最大长度,传输效率高,例如FTP
8. 带外数据
- 带外数据Out Of Band:立即发送、高优先级
9. TCP超时重传
- 超时重传:每个TCP报文段都维护一个重传定时器,超时重传,多次重传失败后由IP和ARP接管
10. 拥塞控制
- 拥塞控制:提高网络利用率,降低丢包率,保证数据流公平性