(Linux 高性能服务器) – TCP 协议笔记

TCP 协议笔记

传输协议

传输协议主要有两种:TCP 和 UDP。TCP 的特点是面向连接、字节流和可靠传输

  • 使用 TCP 协议的通信双方必须建立连接,然后才能开始数据读写。双方必须为该连接分配必要的内核资源以管理连接状态和数据。同时 TCP 连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放系统资源。
  • TCP 一对一连接,而 UDP 适用于广播和多播(目标十多个主机地址)

Read more

(Linux 高性能服务器) – IP 协议笔记

IP 协议

IP 服务的特点

IP 协议是 TCP/IP 协议族的动力,他为上层协议提供无状态、无连接、不可靠的服务

  • 无状态:IP通信双方不同步传输数据的状态信息,因此所有IP数据报的发送、传输和接收都是相互独立、没有上下文关系的。缺点就是无法乱序处理和重复的 IP数据报。
  • 无连接:IP通信双方都不长久地维持对方的任何信息。这样,上层协议每次发送数据的时候,都必须明确指定对方的IP地址。
  • 不可靠:IP协议不能保证IP数据报准确地到达接收端,它只是承诺尽最大努力(best effort)。很多种情况都能导致IP数据报发送失败。比如,某个中转路由器发现IP数据报在网络上存活的时间太长(根据IP数据报头部字段TTL判断,见后文),那么它将丢弃之,并返回一个ICMP错误消息(超时错误)给发送端。又比如,接收端发现收到的IP数据报不正确(通过校验机制),它也将丢弃之,并返回一个ICMP错误消息(IP头部参数错误)给发送端。无论哪种情况,发送端的IP模块一旦检测到IP数据报发送失败,就通知上层协议发送失败,而不会试图重传。因此,使用IP服务的上层协议(比如TCP协议)需要自己实现数据确认、超时重传等机制以达到可靠传输的目的。

Read more