一、Tcp建立连接
1、建立连接过程中要解决的问题:
①要使每一方能够确知对方的存在
②要允许双方协商一些参数:如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量等。
③能够对运输实体资源:如缓存大小,连接表中的项目等进行分配
2、三次握手
3、为什么A还要再一次确认?
防止已经失效的连接请求报文段突然又传送到B,而产生错误
例如:A发送的第一个超时的请求连接的报文,此报文已经失效,A已经又发送了别的报文过去,并建立了连接。这时,这个失效的报文来了,B就会误以为是A又发出了一次新的连接请求,并向A发出确认报文,统一建立连接。
假设不采用三次握手,那么只要B发出确认,新的连接就建立了。若采用三次握手,A不会向B发出确认,B收不到确认,就知道A并没有要求建立连接。
二、释放连接
1、释放过程
2、为什么有2MSL的存在?
①、为了保证A发送的最后一个ACK报文段能够到达B,若B接受不到A的确认,B会超时重传FIN+ACK报文段,接着A再重传一次确认。
②、同时也可以在这2MSL时间段内,可以将在本连接持续的时间内所产生的已经失效(如超时)的报文段都从网络上消失。
(允许老的重复分节在网络中消逝 )
3、半关闭状态:
A到B的连接已经关闭,B到A的连接未关闭。B还可以发送给A数据