网络互连技术教程第 10章 传输控制协议 —— TCP—
网络互连技术教程
10.1 TCP
10.2 TCP连接
10.3 TCP服务器的工作网络互连技术教程
10.1 TCP
10.1.1 TCP服务
10.1.2 报文格式
TCP协议的传输单元是报文段 ( segment),两台主机通过报文段交互来建立连接 。 传输数据 。 发出确认和关闭连接 。
TCP的 segment包括报文首部和报文数据两部分 。
网络互连技术教程码元比特 ( Code Bits) 又称为控制位,共占用了 6个比特位,包含的是用来控制连接和数据传输的 6种标志,一般称为控制标志,这些标志分别占用 1比特,对首部中其他字段进行解释,以指出报文段的目的和内容 。 这 6个比特如图
10-2所示 。
URG ACK PSH RST SYN FIN
图 10-2 码元比特的内容网络互连技术教程这 6个比特的含义分别为:
( 1) URG,URG比特置 1时,表示紧急指针字段可用;
( 2) ACK,ACK比特置 1时,表示确认序号字段可用;
( 3) PSH,PSH比特置 1时,表示本报文段请求急迫 (
PUSH) 操作;
( 4) RST:连接复位;
( 5) SYN:序号同步;
( 6) FIN:发送方字节流结束 。
网络互连技术教程
10.2 TCP连接
10.2.1 TCP连接的建立与终止
10.2.1.1 TCP连接的建立过程要使用 TCP协议进行通信,在传输数据之前,要先建立一条 TCP连接 。
TCP连接的建立过程和打电话的过程类似 。 例如,你要给朋友张三打电话 ( 建立与张三的连接 ),先拨通张三的号码 ( 发送初始化报文段 ) ;张三接通,习惯的问一声:,喂
” ( 服务器端发送一个带确认的初始化报文段 ) ;你听到后也说一声:,喂,( 接到服务器带确认的初始化报文段 ) ;
然后就可以把你想说的事情告诉张三 。
TCP连接的建立是一个分为三个步骤的过程,称为,三次握手过程,。
网络互连技术教程示意图 10-3描述了这样一个“三次握手过程”,该图中主机 A要发起一个和主机 B之间的 TCP连接。
图 10-3 TCP连接建立的三次握手过程网络互连技术教程
10.2.1.2 TCP连接的终止当主机 A向主机 B发送完全部数据之后,就要发起终止连接的操作了 。 由于 TCP连接的数据传输是全双工数据传输,
因此,任何一方都可以自己停止发送,但是仍然可以接收另一台主机发来的数据,直到它也停止发送 。 整个连接关闭的过程如图 10-4所示 。
接上面的例子,假定主机 A主机 B发送了 299个报文段,
则主机 B向主机 A发送的最后一个数据段确认报文的序号是
599,确认号应该是 400。
网络互连技术教程图 10-4 TCP连接关闭过程网络互连技术教程主机 A没有数据要发送了,就要发送一个 FIN 数据流结束报文段,其中控制标志位中的 FIN位置 1,表示发送方数据流结束; ACK标志位置 1,确认序号位 600,序号是 400。 报文段可以表示为,FIN,SEQ=400,ACK=600”。
主机 B收到该 FIN报文,要发送一个确认报文段,ACK置
1,SEQ = 600,ACK = 401,报文段表示为,ACK=401”。
主机 B也没有数据要发送了,就发送自己的 FIN报文段,
SEQ = 600,ACK = 401,报文段表示为,FIN,SEQ=601,
ACK=401”。
主机 A确认该 FIN报文段,SEQ = 401,ACK = 601。
网络互连技术教程
10.2.2 TCP传输与控制
10.2.2.1 TCP传输分类
1,TCP交互式数据流远程登陆 Rlogin或 Telnet属于交互式数据传输形式,在这种交互式方式下,每次从客户传到服务器的是一个字节的按键 ( 而不是每次一行 ),而且,Rlogin或 Telnet需要远程系统 ( 服务器 ) 显示客户端键入的字符 。 这样就会产生以下
4个报文段:
segment1:来自客户的交互按键;
segment2:来自服务器的按键确认;
segment3:来自服务器的按键回显;
segment4:来自客户的按键回显确认 。
网络互连技术教程我们分析一下可以知道,segment2是一个简单的确认段,
segment3是一个包含小数据量的按键回显,可能是一个字节,
也可能是多个字节 。 一般可以将报文段 2 和 3 进行合并,将按键确认与按键回显一起发送,这种合并的技术称为有时延的确认 。
我们看一个例子 。 主机 A Telnet 到主机 B上,登录时发送用户名,user”字符串 。 主机 B显示一行要求输入口令的字符串
,Password:”。 我们假设 TCP连接已经建立,图 10-7给出了从输入用户名开始观察交互数据的传输情况 。
网络互连技术教程
Segment1的序号是 0,它发送了 1字节的字母,u”,
所以服务器端发回的 Segment2确认序号是 1; Segment1仅发送了 1个字节数据,没有达到服务器端设定的 MSS最大端长度。为了把字母,u”立刻提交给服务器端的应用程序,客户端将 P控制位设置为 1,要求服务器段执行一个
,PUSH”操作,即把数据尽快交给应用程序。
Segment2中,序号位 1,发送字母,u”的回显,并且确认 Client发送下一个数据段的起始序号为 1,同时也将 P
控制位设置为 1。
网络互连技术教程
Segment3是一个简单的确认报文段,,.”是一个简单的表示方法,指示控制位中的,S,F,R,P”均是 0。
Segment13 ~ Segment17与前面的有所不同,
Segment13由客户端向服务器端发送一个“回车”控制字符
,服务器端用 Segment14回显两个字符“回车”与“换行”
,把光标移回下一行最左边。 Segment15是主机 A发向主机 B
的一个简单的确认,然后服务器端的 Segment16发回 9个字节的字符串,Password:”,等待客户端输入口令。
网络互连技术教程表 10-1 交互数据传输情况
Segment
Number 源主机目的主机 Segment 内容 备 注
1 A B P,0,ACK 1,win 4096 A –〉 B,“u”
2 B A P,1,ACK 1,win 4096 B –〉 A,“u”
3 A B,,ACK 2,win 4096 A –〉 B,ack
4 A B P,1,ACK 2,win 4096 A –〉 B,“s”
5 B A P,2,ACK 2,win 4096 B –〉 A,“s”
6 A B,,ACK 3,win 4096 A –〉 B,ack
网络互连技术教程
7 A B P,2,ACK 3,win 4096 A –〉 B,“e”
8 B A P,3,ACK 3,win 4096 B –〉 A,“e”
9 A B,,ACK 4,win 4096 A –〉 B,ack
10 A B P,3,ACK 4,win 4096 A –〉 B,“r”
11 B A P,4,ACK 4,win 4096 B –〉 A,“r”
12 A B,,ACK5,win 4096 A –〉 B,ack
网络互连技术教程
13 A B P,4,ACK 5,win 4096 A –〉 B,回车
14 B A P,5,ACK 5,win 4096 B –〉 A,回车,换行
15 A B,,ACK7,win 4096 A –〉 B,ack
16 B A P,7,ACK 7,win 4096 B –〉 A,“Password:”
17 A B,,ACK16 win 4096 A –〉 B,ack
网络互连技术教程
2,批量数据的传输当使用上面描述的方法传送大量数据时,效率会非常差 。 我们来分析一下数据传输的过程:当广域网中的两台主机传输数据时,在发送端等待接收端发回确认报文的时间段中,发送端是空闲着的 。
为了提高传输效率,TCP数据流服务提供了一个,滑动窗口,的概念 。 滑动窗口技术是简单的,确认重传,机制的复杂变形 。 它的基本思想是允许发送方在等待一个确认前可以发送多个报文段 。
如图 10-5所示,我们将使用滑动窗口机制传输数据时的报文段标记为 4种情形:已经被确认的报文段,已发送未被确认的报文段,可以发送但未发送的报文段以及不能发送的报文段 。 在这里,我们假设窗口大小为 6。
网络互连技术教程
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3
窗口大小 已确认报文段 不能发送报文段已发送未确认报文段 可以发送但未发送报文段图 10-5 报文段的 4种情形网络互连技术教程图 10-6描述了使用滑动窗口机制传输数据的一般情形 。
1 2 3 4 5 6 7 8 9 10 1 1 12 13
1,客户端一次可以发送 6 个 se gm ent
1 2 3 4 5 6 7 8 9 10 1 1 12 13
2.A C K = 4
图 10-6 数据传输一般情形网络互连技术教程客户端和服务器端建立连接后,允许客户端使用大小为
6的窗口数据报文段 。 客户端首先发出 6个数据报文段,并且为每个报文段设置一个时钟定时器,等待服务器端发送确认报文 。 服务器端发回了报文段 3的确认报文,ACK = 4,滑动窗口依次向后移动 3个报文,复位前 3个报文段的定时器,可以立刻发送报文段 7,8,9。 随着确认不断到达,窗口可以不断向后滑动 。
现在来分析网络上的数据传输:客户端先发送了 6免拥塞,将传输调节到最佳流量。
网络互连技术教程
10.2.3 几个特殊问题在 TCP的连接和建立过程中,会遇到几种特殊的情况,这些情况在理论上都是成立的,虽然在实际情况中极少遇到,但是也要有所了解。
1.半关闭
TCP提供通信的双方中一方停止了自己的输出,
但接收对方传来的数据的机制,称为半关闭。
网络互连技术教程图 10-7 TCP半关闭网络互连技术教程图 10-7是半关闭的图示,假设主机 A和 B之间的 TCP连接已经建立起来了,A已经发送完了所有的数据,然后通知 B:
,我已经没有任何数据需要发送,现在,我要停止向你发送数据,不过我仍然可以接受你的数据,并发送确认 。,
当主机 B向 A发送关闭连接的 FIN报文并且经 A确认之后,
半连接将被关闭 。
网络互连技术教程
2.同时打开连接当两台主机同时向对方发送建立连接的 SYN报文段且报文段都到达时,称为同时打开连接。图 10-8解释了同时打开连接的情形。
这种情形应该这样理解:主机 A使用端口号 3000发起同主机 B 的 4000端口的连接,而同时,主机 B也在使用
4000端口发起同主机 A的 3000端口的连接 。 这种情况下,
TCP专门制定了解决方法,以在主机 A和 B之间只建立一条连接 。 通常建立连接只需要遵循,三次握手,原则,
而当同时打开连接时,要传输四个数据段,而不是通常的三个 。
网络互连技术教程
3.同时关闭连接同时关闭连接是关闭连接的一种特殊情况,即两台主机同时主动关闭连接 。 TCP在处理这种情形时,
除了关闭指令在时间上几乎同时发出之外,没有任何与正常关闭连接的不同之处 。 图 10-9解释了同时关闭连接的情形 。 同时关闭连接和同时正常连接一样,都需要四个报文段 。
网络互连技术教程图 10-8 TCP同时建立连接网络互连技术教程图 10-9 TCP同时关闭连接网络互连技术教程
10.3 TCP服务器的工作
10.3.1 端口号的使用
TCP知名端口地址表端口号
(十进制

关键字 描 述
0 - 保留
1 TCPMUX TCP复用器
5 RJE 远程作业录入
7 ECHO 回送
9 DISCARD 丢弃网络互连技术教程
11 USERS 活跃用户
13 DAYTIME 白天
15 - NETSTAT,谁是工作的
17 QUOTE 日期引用
19 CHARGEN 字符发生器
20 FTPDATA 文件传送协议 ( 数据 )
21 FTP 文件传送协议网络互连技术教程
23 TELNET 终端连接
25 SMTP 简单邮件传输协议
37 TIME 时间
42 NAMESERVER 主机名字服务器
43 NICNAME 是谁
53 DOMAIN 域名服务器
77 - 任何专用 RJE服务网络互连技术教程端口号
(十进制

关键字 描 述
79 FINGER Finger
80 HTTP HTTP协议
93 DCP 设备控制程序
95 SUPDUP SUPDUP协议
101 HOSTNAME NIC主机名字服务器
102 ISO-TSAP ISO-TSAP
103 X400 X,400邮件服务网络互连技术教程
104 X400-SND X,400邮件传输
110 POP3 客户端访问服务器端的邮件服务
111 SUNRPC Sun 远程过程调用
113 AUTH 鉴别服务
117 UUCP-PATH UUCP路径服务
119 NNTP USENET新闻传输协议
129 PWDGEN 口令生成器协议
139 NETBIOS-SSN NETBIOS 会话服务
160– 223 - 保留网络互连技术教程
10.3.2 IP地址限制
10.3.3 连接请求处理