答案:不能!举反例,进程B所在机器的TCP收到进程A发送的“hello”信息后,告诉进程A发送成功,但有可能没有当即将数据交给进程B,而是放在本身的缓冲区中,等待进程B读取,若是机器此时忽然掉电,缓冲区中的信息将丢失,进程B将不可能收到“hello”字符串。缓存
答案:将TCP报文段首部中的PSH标志置1,这样会让B端的TCP协议收到数据后尽快交给进程B,能不缓存尽可能不要缓存。安全
答案:简单说,就是TCP容许半关闭状态的存在。当进程A向进程B发送FIN,B也向A发送确认后。此时此刻的状态就是半关闭状态,A发送的FIN就是告诉B:“我要发送的数据都发送完了”但B没有发送FIN给A,有可能表明B还有没发送完的数据,若是B也发送完数据了,B就发送FIN给进程A,进程A确认B发送的FIN,这时,双方都已经发送完了数据,链接就断开了,TCP回收相关资源。服务器
答案:处于半打开状态。就是客户端还以为链接是正常的,服务器这边已经没有链接的任何信息了。并发
答案:服务器收到客户端的请求会进行一次ARP查询,得到客户端MAC地址,然而因为已经丢失了全部链接信息,此时的服务器是一脸懵逼(就像喝了孟婆汤!),因而乎,它会发一个RST给客户端,表示:“哥们,我不认识你,想跟我说话请先发送SYN!”tcp
答案:有两种可能,一种是服务器端的TCP收到客户端请求,查看本机上是否有进程在监听相应的端口,若是有,就把请求交给这个进程,通常而言,这个进程不会接受这个链接的,因而它会发一个RST给客户端。还有一种多是TCP没有找到哪一个进程在监听相应的端口,因而TCP就会直接发一个RST给客户端,通常而言都会是这种状况。ide
答案:是!队列
答案:首先,全部的SYN报文段都会发送给服务器进程A,其余的报文段依据<sourceIP:port,targetIP:port>这个四元组来决定发送给进程B仍是进程C。进程
答案:通常状况下,服务器进程A会给TCP一个指示,让TCP维护一个适当长度的链接队列,TCP与新链接请求完成三次握手后,就会把这个链接放入链接队列中,服务器进程A会在合适的时候来从这个队列中取链接。ip
答案:不会!两者没有必然关系。资源
答案:MSS是TCP最大报文段长度,就是TCP发送数据须要对数据分段时,最大的段的字节数。MTU是最大传输单元,一般由网卡的硬件特性规定,表示经过该网卡传输的数据单元最大的字节数。MSS要受同一台机器上的MTU限制。好比MTU为1500字节,那么MSS就只能是1460字节,这是由于1460字节的数据在经过网卡向外传输时,会加上20字节的ip头和20字节的tcp头。
答案:不能够,虽然发送1600字节的数据段没有突破B的MSS,可是突破了A本身的MSS。这样一来,当这1600字节的数据段经过A的网卡向B发送时,会被切分为2个IP片,每一个为840字节,以保证不突破A的MTU,这显然下降了传输的效率,由于两个840字节中有着相同的IP头和TCP头。
答案:A能够直接给B发送一个RST,就能够了,至关于告诉B,我关闭链接了,你看着办吧。这叫作异常关闭。
答案:B的TCP会告诉上层的进程,链接已经断开了,而后就会回收这条链接的资源,并不会发送任何确认信息给A。所谓你无情休怪我不义。
答案:不是,A的TCP会启动一个定时器,等待2MSL的时间,这主要是为了防止A的ACK没有成功传到B,让B觉得本身的FIN没有送到A处,反复重传FIN的问题。2MSL的时间到时,若是A没有再次收到B的FIN,说明B成功收到A的ACK,A就能够安全地断开这个链接,若期间再次收到B的FIN,则A会重传ACK。