提供可靠性的传输服务是 TCP 协议一个特别重要的特性, TCP协议的可靠性控制
主要是利用下列一串的动作组合来完成:
a) 接收端接收的数据若正确,则返回确认(acknowledgement)分组给传送端;
b) 接收端接收不到正确的数据,则要求传送端重新传送(retransmission);
c) 接收端在设置的时间内未收到相对应的确认分组(time-out),传输端会重新
传送该分组,
3) 数据流
这个特性指的是 TCP 协议的数据传输是按序一个一个接着传送,而且每个 TCP
分组可以包含一长串的数据,而不是一个字节跟着一个字节。
4) 数据流量控制
由前面的说明,可以知道确认(acknowledge)可以用来表达成可靠性的传输,但
是传送端每次要等收到对应的确认分组之后才传送下一个数据分组,这样的方式,虽
然简单,但是整体效率却会很低,因为传送端在等待确认分组的时间是空闲(idle)
时间,这会造成带宽浪费,所以,在 TCP协议中,便使用一种叫做 “滑动窗口” (Sliding Window)的技巧来解决这个问题。
2.3.2 TCP 协议的通信端口
在TCP协议中,有些端口编号以保留给特定的进程来使用(大多为 256 号之前),
133~159 未配置,160~223 保留使用,224~241 未配置,247~255 未配置,这类 port
编号称之为公认端口(well~known TCP port)。其他的编号称之为用户端口(user port),
为用户可自己利用的 port 编号。
TCP报头部分,包括许多的 TCP协议在传输时所需要的字段信息,其格式如图 3
示。 来计算出段落数据在数据区中的起始位置。
6) 保留(Reservation)
字段大小:6 位此字段保留供日后有需要时使用,目前设为 0。
7) 编码位(Code bit)
字段大小:6 位 此字段是由6 个单一位的字段所组成,它包括 URG(urgent,紧急
字段符号,紧急数据传输用)
ACK(acknowledge,确认字段符号,确认“确认编号”用)
PSH(push,推动请求,立即传送“传送缓冲区”内数据用)
RET(reset,复位请求)
SYN(synchronous,同步请求,建立连接用)
FIN(finish,结束请求,中断请求用)
8) 窗口(Window)
字段大小:16 位此字段用来控制流量,表示数据缓冲区的大小。进一步来说,当
用户启动了一个 TCP 的应用进程时,会同时产生两个缓冲区,一个接收缓冲区
(receive buffer)和一个传送缓冲区(send buffer)。接收缓冲区用来保存对方传送来
的数据,并等待上层的应用层进程来提取;而传送缓冲区则是用来保存准备要送出去
的数据。当然,为了符合所谓的可靠性传输,必须等到确认对方已经正确地接收到数
据后,才可将本身的接受缓冲区中的数据删除,因此,利用滑动窗口内此字段来通知
对方,现在本身的接收缓冲区的空间大小有多少,如此对方才不会送出超过结合搜缓
冲区所能接手的数据量,而造成数据丢失。
9) 校验和(Checksum)
字段大小:16 位用来检查数据的传输是否正确。
10) 紧急指针(Urgent pointer)
字段大小:16 位当编码位中的 URG=1 时,紧急指针的值和顺序编号相加后会得
到最后的紧急数据字节的编号,用此来取得紧急数据。
11) 选项字段(Option)
字段大小:自定义。此字段表示接收端能够接收最大数据区段的大小,在连接建
立时即默认使用,在不使用此选项时,则可以使用任意的数据区段大小。 基于SEP3203和TCP/IP协议的数据传输实现研究 (5):http://www.751com.cn/tongxin/lunwen_8523.html