1.TCP协议的特性
TCP协议在IP协议软件提供服务的基础上,支持面向连接的、可靠的、面向流的服务。
(1)面向流的投递服务
应用程序之间传输的数据可被视为无结构的字节流(或位流),流投递服务保证收发的字节顺序完全一致。
(2)面向连接的投递服务
流传输之前,TCP收发模块之间需建立(类似虚电路),其后的TCP报文在此连接上传输。TCP连接报文通过IP数据报进行传输,由于IP数据报的传输导致ARP地址映射表的产生,从而保证了后继的TCP报文可以具有相同的路径。
(3)可靠的传输服务
发送方TCP模块在形成TCP报文的同时,形成一个“累计核对”。“累计核对”类似于校验和,并随同TCP报文一起传输。接收方TCP模块根据该校验和判断传输的正确性:如果传输不正确,接收方简单地丢弃该TCP报文;否则进行应答。发送方如果在规定地时间内未能获得应答报文,则自动进行重传。
(4)缓冲传输
为了保证数据传输地效率,TCP模块提供强制性传输(立即传输)和缓冲传输两种手段。缓冲传输允许将应用程序地数据流积累到一定的体积,形成报文,再进行传输。
(5)全双工传输
TCP模块之间可以进行全双工的数据流交换。
(6)流量控制
TCP模块提供滑动窗口机制支持收发TCP模块之间的端到端流量控制。
2.TCP端口和连接
TCP模块以IP模块为传输基础,同时又可向多种应用程序提供传输服务。为了能够区分对应的应用程序,引入了TCP端口号含义。
TCP端口类似于OSI中传输层服务访问点,与一个16位的整数值相对应,该整数值也被称为TCP端口号。需要服务的应用程序与某个端口号进行连接,此时,TCP模块就可以通过该TCP端口与应用进程通信。
由于IP地址可以对应到因特网中的某台主机,而TCP端口号可对应到主机上某个应用进程,因此,TCP模块采用IP地址和端口号的对偶来标识TCP连接的端点。一条TCP连接实质上对应了一对TCP端点。
3.TCP窗口机制
TCP的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。TCP的窗口以字节为单位进行调整,以适应接收方的处理能力。
处理过程:
(1)TCP连接阶段,双方协商窗口尺寸,同时接受方预留数据缓存区。
(2)发送方根据协商的结果,发送符合窗口的尺寸的数据字节流,并等待对方的确认。
(3)接收方根据当前的处理能力,调整接收窗口的尺寸,并在确认中告知发送方。
(4)发送方根据确认信息,改变窗口的尺寸,增加或减小发送未得到确认的字节流中的字节数。调整过程包括:如果出现发送拥塞,则应将发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。
TCP的窗口机制和确认保证了数据传输的可靠性和流量控制。
4.UDP
UDP是TCP/IP协议簇中等同于TCP的通信协议,其差异在于:UDP直接利用IP进行UDP数据报的传输,因此UDP提供的是无连接、不可靠的数据报投递服务。
UDP常用于数据量较少的数据传输。例如,域名系统中地址/IP地址的映射请求和应答采用UDP进行传输,以减少TCP连接的过程,提高工作过效率。
当使用UDP传输信息流时,用户负责解决排序、差错确认等问题。