此乃《TCP/IP详解》这本书的第一篇笔记。
关于概述,链路层,IP层等部分,盖因阅读时间距今较久,内容有点模糊,暂时先不写,以后复习的时候补上。现直接跳至TCP这章。
TCP:传输控制协议。与UDP一样,使用相同的网络层(IP协议),但TCP却向应用层提供与UDP完全不同的服务。TCP是一种面向连接的,可靠的字节流服务。
TCP在建立连接之后,通过以下方式提供可靠性:
1、应用层数据被分割成TCP认为最合适发送的数据块,即数据可能会分开传输。这和UDP完全不同,应用程序产生的数据包长度将保持不变。关于TCP如何确定报文段的长度,比较复杂,如果我以后看懂了,再写。
2、当一个TCP段发送出去之后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发一个报文段。关于TCP协议中自适应的超时及重传策略,以后具体讨论。
3、当TCP收到来自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
4、TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检验数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。即,TCP报文段本身有自检错功能,防止数据篡改。
5、既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
6、既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
7、TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能容纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
TCP数据报结构:
TCP数据被封装在一个IP数据报中,如:
IP首部 TCP首部 TCP数据
20字节 —— 20字节 —— 不定
<----TCP报文段---->
<---------IP报文段-------------->
如果不计任选字段,TCP首部包含20个字节,即160个bit:
内容,大小依次是:16bit源端口号,16bit目的端口号,32bit序号,32bit确认序号,4bit首部长度,6bit的保留字段,6bit的标志,16bit窗口大小,16bit检验和,16bit紧急指针。
源端口和目的端口:用于寻找发端和收端应用程序。这2个值加上IP首部中的源IP地址和目的端的IP地址可唯一确定一个TCP连接。 端口是16位的,这可以解释说明为什么TCP端口号最大是65535.
序号:用来标识从TCP发端向TCP收端发送的数据字节流。它表示在这个报文段中的第一个数据字节。如果将字节流看做在两个应用程序间的单向流动,则TCP用序列号对每个字节进行计数。序号从0到2的32次方-1循环计数。注意,当一个连接建立的时候,主机发送的第一个字节序号不是0,而是主机选择的初始序号ISN+1.关于ISN的确定,以后再说。
确认序号:既然每个传输的字节都被计数,确认序号包含发送确认的一端(接收端)所期望收到的下一个序号。因此,确认序号应当是上次已成功收到的数据字节序号+1.只有ACK标志(下面介绍)为1时,确认序号字段才有效。
首部长度:需要这个值是因为任选字段长度是可变的。这个字段占4bit,而且一般不算入TCP首部长度,因此,TCP首段长度最多60字节。若没有任选字段,正常的长度是20字节。
标志字段:有6个bit,这个6个bit分别表示6个不同的标志。他们中的多个可以同时被设置为1.这儿将简单的讨论,具体的以后去讲:
URG : 为1时,紧急指针有效
ACK : 为1时,确认序号有效 PS:一旦一个连接被建立,ACK标志总是被设定为1的
PSH : 为1时,接受方应当尽快将这个报文段交给应用层 PS:相当于电视里800里加急的标志
RST : 为1时,重建连接
SYN : 为1时,同步序号用来发送一个连接
FIN : 为1时,发端完成发送任务 PS:还记得上面说的TCP拆分应用层数据么
SYN和FIN标志将在以后继续讨论(如果我还记得的话)
窗口大小 : 这个我现在只知道与TCP的流量控制有关
检验和 : 这是一个强制字段,一定由发送端计算和存储,并由接收端验证。TCP检验和的计算和UDP检验和的计算相似,以后单独讨论。
紧急指针 : 当URG为1时才有效。它是一个偏移量,它和序号字段的值相加表示紧急指针数据中最后一个字节的序号。
普通20字节的TCP首部后面可能不是直接接上TCP数据,而是有一个变长的可选字段。每个连接方通常在通信的第一个报文段(为建立连接而设置SYN标志的那个段)中指明。它指明 本段所能接收的最大长度的报文段。
注意:TCP数据部分是可选的。意思是,我们可能在某个时候(如建立连接和终止连接)仅仅发送TCP首部,而不发送数据。
PS:上文有很大的部分摘抄自《TCP/IP详解》,若有雷同,已经声明不是巧合了
分享到:
相关推荐
### TCP/IP详解-卷一 知识点梳理 #### 第1章 概述 - **1.1 引言** TCP/IP是Internet的核心协议,由一系列协议组成,包括但不限于传输控制协议(TCP)、用户数据报协议(UDP)以及网际协议(IP)。这一节简要介绍...
6. **TCP报文段结构**:解析TCP报文头的各个字段,如源端口号、目的端口号、序号、确认号等,以及它们在数据传输中的作用。 7. **TCP状态机**:详细展示了TCP连接在不同阶段的状态转换,包括CLOSED、LISTEN、SYN_...
第24章 TCP的未来和性能 256 第25章 SNMP:简单网络管理协议 270 第26章 Telnet和Rlogin:远程登录 293 第27章 FTP:文件传送协议 316 第28章 SMTP:简单邮件传送协议 332 第29章 网络文件系统 347 第30章 其他的TCP...
《TCP/IP详解卷一》是理解互联网通信协议基础的重要书籍,涵盖了网络通信的核心概念和技术。以下是对标题和描述中涉及的知识点的详细说明: 1. **概述**:这部分通常会介绍TCP/IP模型的四层结构——应用层、传输层...
《TCP/IP详解 卷一:协议》是网络通信领域中一本极为重要的著作,被誉为网络界的“教父级”教程。作者是W. Richard Stevens,他以其深入浅出的讲解方式,将复杂的TCP/IP协议族剖析得淋漓尽致,使得读者能够对网络...
《TCP/IP协议详解卷一:协议》是一本深入解析TCP/IP协议族的权威著作,它为读者提供了全面、详尽的TCP/IP理论基础和技术实践。TCP/IP协议是互联网的核心,理解其工作原理对于网络技术人员至关重要。 该书首先从历史...
非扫描版TCP/IP详解卷一,你值得拥有: 《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序...
《TCP/IP详解》第一卷是关于网络通信协议TCP/IP的经典入门教材,由W. Richard Stevens撰写。该书深入浅出地讲解了TCP/IP协议族,是网络工程师和相关技术人员必备的参考资料之一。TCP/IP协议族是现代互联网通信的基础...
《TCP/IP详解 卷一:协议》是一本深入解析网络通信协议的经典著作,由W. Richard Stevens撰写。这本书详尽地介绍了TCP/IP协议族的基本概念、工作原理以及实际应用,是IT专业人士和网络爱好者不可或缺的参考书籍。在...
《TCP/IP详解,卷2:实现源码》是网络通信领域的经典著作,它深入剖析了TCP/IP协议族的实现细节,为读者提供了丰富的实践指导。这本书的源代码部分更是为学习者提供了动手实践的机会,帮助他们更好地理解网络协议的...
《TCP/IP详解卷一:协议》是一本深入探讨网络通信协议的经典著作,由Steven McQuerry撰写,旨在为网络工程师、开发人员以及其他IT专业人士提供全面的TCP/IP理论知识和技术实践。这本书是TCP/IP三部曲的第一部分,...
"TCP/IP详解,卷1:协议 第4章ARP:地址解析协议" 本章主要讨论的是地址解析协议(ARP),它是TCP/IP协议簇中的一部分,负责将32bit的IP地址转换为相应的硬件地址,从而实现数据链路层的寻址。 4.1 引言 在讨论...
《TCP/IP详解 卷1:协议》是网络通信领域...《TCP/IP详解 卷1:协议》不仅涵盖了以上基础概念,还深入探讨了TCP/IP协议的实现细节,包括报文结构、错误处理、选项和扩展等,是学习和理解TCP/IP协议体系结构的宝贵资源。