Linux高性能服务器编程(第一篇)——阅读笔记

Linux高性能服务器编程(第一篇 TCP/IP协议详解)


第一章 TCP/IP协议族

1. TCP/IP协议族体系结构及主要协议

  • TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层
    Linux高性能服务器编程(第一篇)——阅读笔记
    • 数据链路层:处理数据在物理媒介上的传输,实现了IP和MAC地址的相互转换
    • 网络层:实现数据包的选路和转发
    • 传输层:为两台主机提供端到端的通信
    • 应用层:
      Linux高性能服务器编程(第一篇)——阅读笔记

2. 封装

Linux高性能服务器编程(第一篇)——阅读笔记
Linux高性能服务器编程(第一篇)——阅读笔记

3. 分用

Linux高性能服务器编程(第一篇)——阅读笔记

5. ARP协议工作原理

主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址,此网络上的其它机器都将收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址。

6. DNS工作原理

7. socket和TCP/IP协议族的关系

socket是操作系统向应用程序提供的一套通用网络编程接口:将应用程序数据从用户缓冲区复制到TCP/UDP内核发送缓冲区;从内核TCP/UDP缓冲区中复制数据到用户缓冲区;修改内核中各层协议的某些头部信息或其它数据结构。


第2章 IP协议详解

1. IP服务的特点

  • 无状态:简单高效
  • 无连接:每次都要指定对方IP地址
  • 不可靠:只承诺尽最大努力

2. IPv4头部结构

Linux高性能服务器编程(第一篇)——阅读笔记

3. IP分片

  • IP报文的长度超过以太网帧的MTU时,将被分片传输。

4. IP路由

Linux高性能服务器编程(第一篇)——阅读笔记


第3章 TCP协议详解

1. TCP服务的特点

  • 面向连接:通信双方必须先建立连接才能开始数据读写,双方都要为该连接分配内核资源;全双工
  • 字节流
  • 可靠传输:发送应答机制,发送端发送的每个 TCP 报文段都必须得到接收方的应答,才认为传输成功。另外,TCP采用超时重传机制,一个报文发出后启动定时器,定时间内没有收到应答则重新发送。由于IP报文可能乱序、重复,TCP协议还会对收到的TCP报文段重排整理。

2. TCP头部结构

Linux高性能服务器编程(第一篇)——阅读笔记

3. TCP连接的建立和关闭

Linux高性能服务器编程(第一篇)——阅读笔记
报文5、6可以合并成一个,但是有可能存在半关闭状态,不能合并报文。发送FIN表示自己不再发送数据,但可以接收数据。
Linux高性能服务器编程(第一篇)——阅读笔记

4. TCP状态转移

Linux高性能服务器编程(第一篇)——阅读笔记
Linux高性能服务器编程(第一篇)——阅读笔记

5. 复位报文段

通知对方关闭或重新建立连接

  • 访问不存在的端口,或端口处于TIME_WAIT状态
  • 异常终止连接
  • 处理半打开连接

6. TCP交互数据流

  • 交互数据:包含很少字节,实时性要求高,例如Telnet

解决交互数据流中由于网络延迟导致的报文段数据过多、进而导致网络拥塞问题,使用Nagle算法:通信双方在任意时刻最多只能发送一个未被确认的TCP报文段,得到确认前不发送其它TCP报文段;等待确认时收集需要发送的微量数据,下次一起发出。极大减少了网络上微小TCP报文段的数量。

7. TCP成块数据流

  • 成块数据:长度一般是TCP报文最大长度,传输效率高,例如FTP

8. 带外数据

  • 带外数据Out Of Band:立即发送、高优先级

9. TCP超时重传

  • 超时重传:每个TCP报文段都维护一个重传定时器,超时重传,多次重传失败后由IP和ARP接管

10. 拥塞控制

  • 拥塞控制:提高网络利用率,降低丢包率,保证数据流公平性