一、TCP的糊涂窗口综合症
1、TCP协议软件有较高的性能
2、实际中发现:通信双方的应用进程以不同速率工作时,会出现严重的性能问题
3、糊涂窗口综合症(Silly Window Syndrome ,SWS)
RFC 813
接收方:确认报文通告小窗口
发送方:报文段携带少量数据
二、TCP连接管理
1、连接的概念
。一对端点标识:(IP1,Port1)--(IP2,Port2)
。连接个数受机器内存容量限制,最多65535
。一个机器上某个TCP端口号可被多个连接共享
三、TCP连接建立
1、主动建立连接(Active Open)
发起建立连接,Client
2、被动建立连接(Passive open)
接受建立连接,Server
3、被动连接方一般先于主动连接方启动,但不发起连接建立过程,而是在某个
端口上等待主动方的连接请求
4、TCP连接的任意一方都可以主动打开连接
四、初始序号
1、TCP使用随机的初始序号值
。双方都必须知道对方的初始序号才能正常通信
。双方都需要确认对方得到了自己的初始序号
2、确保把初始序号送到对方----TCP三次握手(three-way handshake)方式建立连接
。考虑报文丢失、乱序、重复、延迟的因素
五、TCP的三次握手过程(同时也完成了初始序号的通告)
(seqnum表示发送方发送数据的开始位置
acknum表示确认下一次对方发送数据的开始位置)
1、client发出连接请求报文(只有TCP头,没有数据部分):控制比特SYN=1,
seqnum=初始值1,acknum=0,此时的初始值1是client端的初始序号;
2、server如果同意连接请求,回应报文:SYN=ACK=1,seqnum=初始值2,acknum=初始值1+1;
此时server允许client发送数据给server,server可以对数据做确认,但是server还不
能发数据给client,此时的初始值2是server端的初始序号;
3、如果client同意server发送数据,那么它发个确认报文:ACK=1;seqnum=初始值1+1,
acknum=初始值2+1;
六、TCP连接拆除
1、通信是双向的,但连接的拆除是单向的
。网络上两个方向所走的路不同
。报文段从网络上陆续到达主机
2、连接拆除的发起方只能关闭自己的发送方向
。不能发送数据,可接收数据,可发送确认
3、接收方向由对方拆除