TCP是一个可靠的,连接定向的发送服务,数据分段传送。连接定向意味着在主机交换数据之前必须建立会话。TCP使用字节流(byte-stream)通信,这意味着数据被当作没有边界的字节序列。
可靠性是通过给传送的段分配序号来实现的。如果一个TCP段被分裂为小片,接受主机知道是否所有的片都收到了,并通过答复的方法检验数据是否被其他主机接收到。对于每一个发送的段,接收主机必须返回带有特定时间段内接收到的字节数的答复(ACK)。
如果没接收到ACK,数据将重新发送。
如果段在接收到的时候已经损坏,接收主机将废弃它。因为没有发回ACK,所以发送者将重新发送这段。
TCP端口
TCP端口为发送消息提供特定的定位,在256以下的端口号被定义为常用的端口。以下列出了常用的TCP端口:
端口号码 描述
————————————–
21 FTP
23 Telnet
53 域名服务器(DNS)
139 Netbios会话服务
TCP Three-Way Handshake
一次TCP会话通过Three-Way Handshake实行初始化。Three-Way Handshake的目的在于:
1,合成发送和接收段。
2,同志另一主机能一次接受的数据量(窗口尺寸与段大小)。
3,建立虚拟连接。
下列步骤概括叙述了过程:
1,源主机通过发送带有置为on的SYN标志的段要求会话。
2,桀纣主机通过发回具有以下特点的段表示同意接收:
.SYN标志置为on。
.有一个指示可能发送的段的开始字节序列号。
.带有它等待接收的下一个段的字节序列号的许可。
3,请求的饿主机返回带有许可的序列号和许可号码的段。
TCP使用类似的握手过程结束连接。这保证两台主机都结束传送并且所有的数据收到了。
TCP滑动窗口
TCP使用滑动窗口为两台主机间传送缓冲数据。每台TCP/IP主机支持两个滑动窗口:一个用于接收数据,另一个用于发送数据。敞口尺寸表示计算机可以缓冲的数据量的大小。
滑动窗口的工作。
1,当TCP从文件中接收数据时,数据位于send窗口。TCP将一个带有序列号的报头加入数据包并将其交给IP,由IP将它发送到目标主机。
2,当每一个数据包传送时,客户机设置重传计时器,描述在重新发送数据包之前将等待ACK多久。在SEND窗口中有每一个数据包的备分,直到收到ACK。
3,当数据包到达服务器RECEIVE窗口,它们按照序列号放置。当接收到连续的段时间就向用户机发送一个关于数据的认可,其中带有当前窗口尺寸。
4,一旦客户机接收到认可,SEND窗口将由已获得认可的数据滑动到等待发送的数据。如果在重发计时器设定的时间内,客户机没有接收到对现存数据的认可,数据将重新发送。重发数据包将加重网络和客户机的负担。
5,如果数据包接收到时顺序错乱,那么将强制延迟ACK计时器发送认可。
TCP数据包结构
所有TCP段有两部分:数据和报头。下面域被加在TCP报头。
域 功能
————————————————————————-
源端口 发送主机的TCP端口
目标端口 目标主机的TCP端口,给通信提供终止点
序列号 在一个段中发送字节的顺序。
数据长度 TCP数据段的长度
保留的 保留供以后使用
标志 用于表示段的内容
窗口 在TCP窗口中还有多少空间可用
校验和 验证报头是否损坏
紧急指针 当发送紧急数据时,指针将指向紧急数据的结尾
————————————————————————-

