前言
tcp大致的知识前面都已经介绍完毕了,本文我们再回答一些tcp的细节问题。
client连接server时,如果server未开启,或监听的端口不是client连接的端口,会发生什么事情?
我们还是使用TCP(三)中使用的server和client程序,先不启动server,仅启动client,使用wireshark抓包。
程序运行失败,error被设置为connection refused,下面我们看看wireshark:
从抓包情况来看,client向端口9007发起连接,此时操作系统为client随机分配一个端口,但由于9007没有tcp监听,因此9007端口发出了一条rst复位报文,client不再请求。
假设已经建立连接,此时一方突然挂了,另一方会怎么样?
这里挂掉的一方必须是突然挂掉,比如电脑断电或断网之类,直接退出内核还是会完成四次挥手的过程,如果突然挂掉的话,另一方会默认重试5次,