TCP/IP协议详解 卷一:协议 17章、TCP传输控制协议

1、TCP服务

尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务

(1)面向连接

两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。过程与打电话相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。

说明:在一个TCP连接中,仅有两方彼此进行通信。广播和多播不能用于TCP。

(2)可靠性

TCP通过下列方式来提供可靠性:

1)应用数据被分割成TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段。

注意:对于UDP,应用程序产生的数据报长度将保持不变。

2)当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。(超时重传)

3)当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。

4)TCP将保持它的首部和数据检验和。这是一个端到端的检验和,如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。

5)因为TCP报文段是作为IP数据报来传输的,而IP数据报的到达可能会失序,所以TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。

6)因为IP数据报会发生重复,所以TCP的接收端必须丢弃重复的数据

7)TCP提供流量控制。TCP连接的每一方都有固定大小的缓冲区。TCP的接收端只允许另一端发送其缓冲区所能接纳的数据。可防止较快主机致使较慢主机的缓冲区溢出。

说明:

1)两个应用程序通过TCP连接交换8 bit构成的字节流。TCP不在字节流中插入记录标识符。将这称为字节流服务。

2)假设一方的应用程序先传10字节,又传20字节,再传50字节,连接的另一方将无法了解发方每次发送了多少字节。收方可以分4次接收这80个字节,每次接收20字节。

3)TCP对字节流的内容不作任何解释,它不知道传输的数据字节流是二进制数据、ASCII字符、EBCDIC字符或其他类型数据。由TCP双方的应用层对字节流进行解释。

2、TCP首部

TCP数据被封装在一个IP数据报中,如图17-1所示。

图17-2显示TCP首部的数据格式。如果不计选项字段,它通常是20个字节

TCP首部字段说明:

(1)TCP段包含的源端和目的端端口号,是用于寻找发端和收端应用进程

说明:源端和目的端端口号加上源端IP地址和目的端IP地址唯一确定一个TCP连接。(四元组唯一确定一个TCP连接)

(2)序号用来标识从TCP发端向收端发送的数据字节流。如果将字节流看作是在两个应用程序间的单向流动,则TCP用序号对每个字节进行计数。序号是32 bit的无符号数,到达2^32-1后又从0开始。

说明:TCP为应用层提供全双工服务。这意味着数据能在两个方向上独立进行传输。所以,连接的每一端必须保持每个方向上的传输数据序号。

(3)当建立一个新的连接时,SYN标志置1。

(4)因为每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号,即确认序号是上次已成功收到数据字节序号加1。

注意:只有ACK标志为1时确认序号字段才有效。

(5)发送ACK无需任何代价,因为32 bit的确认序号字段和ACK标志一样,总是TCP首部的一部分。因此,一旦一个连接建立起来,这个字段总是被设置,ACK标志也总是被设置为1。

(6)首部长度给出首部中32 bit字的数目。需要这个值是因为任选字段的长度是可变的。这个字段占4 bit,因此TCP最多有60字节的首部(32bit*(2^4-1))。如果没有选项字段,正常的长度是20字节。

(7)TCP首部中有6个标志比特,它们中的多个可同时被设置为1。含义为:

1)URG 紧急指针有效。

2)ACK 确认序号有效。

3)PSH 接收方应该尽快将这个报文段交给应用层。

4)RST 重建连接。

5)SYN 同步序号用来发起一个连接。

6)FIN 发端完成发送任务。

(8)TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端期望接收的字节。窗口大小是一个16 bit字段,因而窗口大小最大为65535字节。

(9)检验和覆盖了整个TCP报文段包括TCP首部和TCP数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。

说明:TCP检验和的计算与UDP检验和的计算相似,使用一个伪首部。

(10)只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。

(11)最常见的选项字段是最长报文大小,又称为MSS (Maximum Segment Size)。每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志的那个段)中指明这个选项。它指明本端所能接收的最大长度的报文段。

(12)TCP报文段中的数据部分是可选的。例如:一个连接建立和终止时,双方交换的报文段仅有TCP首部。在处理超时的许多情况中,也会发送不带任何数据的报文段。

小结:

(1)TCP提供了一种可靠的面向连接的字节流运输层服务。

(2)TCP将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据;TCP提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。

(3)许多流行的应用程序如Telnet、Rlogin、FTP和SMTP都使用TCP。

时间: 2024-10-17 02:25:54

TCP/IP协议详解 卷一:协议 17章、TCP传输控制协议的相关文章

TCP/IP协议详解 卷一:协议 20章、TCP的成块数据流

1.引言 该协议允许发送方在停止并等待确认前可以连续发送多个分组,由于发送发不必每发送一个分组就停下来等待确认,因此该协议可以加速数据的传输. 2.正常数据流 数据传输过程中,经受时延的确认.一般来说,发送端发送一个数据报之后,接收端都会发送一个对这个数据报的确认.但是使用TCP的滑动窗口协议的时候,接收方不必对每一个接收的数据报进行确认.我们在上一个章节有提到过,捎带数据的ACK.这里我们要介绍的是,ACK的累积机制.在TCP中,ACK是累积的,它们表现为接收方已经正确接收了一直到确认序号减1

TCP/IP详解 卷一(第二章 链路层)

在TCP/IP协议族中,链路层主要有三个目的: 1.为IP模块发送和接收IP数据报 2.为ARP模块发送ARP请求和接收ARP应答 3.为RARP请求和接收RARP应答 TCP/IP支持多种不同的链路层协议,本文主要讨论以太网链路层协议.PPP协议以及大多数实现都包含的环回(loopback)驱动程序. 使用ipconfig命令查看本机的网络接口 其中eth0就是以太网接口,lo是环回接口. 1.以太网IP数据包的封装 2.PPP协议(点对点协议) 3.环回接口 环回接口允许在同一台主机上的客户

TCP/IP详解 卷一(第一章 概述)

很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们相互进行通信. 1.分层 TCP/IP不是一个协议,而是一个协议族,通常它被认为是一个四层的协议系统,下面展示了TCP/IP协议族中不同层次的协议 2.互联网的地址 互联网上每个接口必须有一个唯一的Internet地址(IP地址).IP地址(IPv4)长32bit,下面是5类不同的互联网地址格式 下面是各类IP地址的范围 3.端口号 TCP和UDP采用16bit的端口号来识别应用程序 4.RFC RFC(

TCP/IP头部详解

在网上找了很多有关tcp/ip头部解析的资料,都是类似于下面的结构 抽象出图文是这种结构,但是在底层中数据到底是怎么传输的呢?没有答案,在深入学习之后,总结出数据传输的方式 IP数据包头部格式: 上面是在数据到达传输层对数据进行IP头部封装的数据 TCP协议 TCP协议是传输协议,为应用层提供数据服务,和UDP不同,TCP提供可靠的面向连接服务,关于TCP头部数据格式的说明 跟IP头部差不多,基本长度为20个字节,基本介绍到此为止,详解在网上多如牛毛,下面用两台pc建立连接为例说明: 主机1:I

tcp ip参数详解

http://www.cnblogs.com/digdeep/p/4869010.html 1. TCP/IP模型 我们一般知道OSI的网络参考模型是分为7层:“应表会传网数物”——应用层,表示层,会话层,传输层,网络层,数据链路层,物理层.而实际的Linux网络层协议是参照了OSI标准,但是它实现为4层:应用层,传输层,网络层,网络接口层.OSI的多层对应到了实际实现中的一层.我们最为关注的是传输层和网络层.一般而言网络层也就是IP层,负责IP路由寻址等等细节,而传输层TCP/UDP负责数据的

iOS中 HTTP/Socket/TCP/IP通信协议详解

// OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 // 3. 会话层 // 4. 传输层 // 5. 网络层 // 6. 数据链接层 // 7. 物理层 // TCP/IP, 由美国国防部制定 // 1. 应用层, HTTP, FTP, SMTP, DNS // 2. 传输层, TCP, UDP // 3. 网络层, IP // 4. 链路层, ARP, RARP // HTTP(短连接) // 1. 建立链接, 三次握手 // 2. 断开

TCP/IP模型详解

上述为TCP/IP的协议模型,主机到网络层又被称为网络接口层,网络互联层又被称为网间层. 网络接口层:实际上,TCP/IP参考模型并没有真正描述这一层的实现,只是要求能够提供给其上层一个访问接口,以便能在其上传递IP分组.由于这一层没有被定义,所以其具体实现的方法随着网络类型的不同而不同. 网间层:它的功能是把分组发往目标网络或主机.本层定义了IP协议,RIP协议,负责数据的包装.寻址和路由功能.同时提供ICMP用来诊断网络信息. 传输层:包括了面向连接的TCP与面向无连接的UDP.传输层的功能

iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 // 3. 会话层 // 4. 传输层 // 5. 网络层 // 6. 数据链接层 // 7. 物理层 // TCP/IP, 由美国国防部制定 // 1. 应用层, HTTP, FTP, SMTP, DNS // 2. 传输层, TCP, UDP // 3. 网络层, IP // 4. 链路层,

TCP/IP状态详解[转]

TCP正常建立和关闭的状态变化 TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手. 建立连接 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态: 第三次握手:客户端