读书笔记_python网络编程3_(3)
3.TCP:传输控制协议 第一个版本在1974年定义,建立在网际层协议(IP)提供的数据包传输技术之上。TCP使程序可以使用连续的数据流进行相互通信。 除非网络原因导致连接中断/冻结,TCP都能保证将数据流完好无缺地传输至接收方,不会发生丢包、重包、乱序问题。 传输文档/文件的协议都使用TCP,包括浏览网页、文件传输、电子邮件的所有主要机制,也是人机间进行长对话的协议的基础之一,如SSH/聊天协议 经过30年的改进,现代TCP相当精良,除了协议设计专家,很少有人能再改进现代TCP栈的性能,就算是消息队列这种对性能要求很高的程序, 也会选择TCP作为传输媒介。 3.1. TCP工作原理:数据包被隐藏在协议层之下,程序只需向目标机器发送流数据,TCP会将丢失的信息重传,保证信息成功到达目标机器 经典定义来自1981年的RFC 793,如何提供可靠连接,基本原理: 3.1.1. 每个TCP数据包都有一个序列号,接收方通过该序列号将响应数据包正确排序,也可通过该序列号发现传输序列中丢失的数据包,并请求进行重传。 3.1.2. TCP不使用顺序整数作为数据包的序列号,而是通过计数器来记录发送的字节数。如,包含1024字节的数据表的序列号为7200, 下一个数据包序列号就为8224。网络栈无需记录如何将数据流分割为数据包,需要重传,可以使用另一种分割方式,将数据流分为多个新数据包(需要传输更多