随笔分类 -  TCP/IP

摘要:从长链接说起 TCP是长链接的,也就是说连接建立后,及时数年没有通信连接仍然存在。这样做的好处是:免去了DNS解析的时间,连接建立等时间,大大加快了请求的速度,同时也有利于接受服务器的实时消息。但前提是连接可用。 TCP的keepalive机制 服务器为了探测对端是否还活着,于是每隔两小时发送一个k 阅读全文
posted @ 2018-03-14 00:29 guhowo 阅读(383) 评论(0) 推荐(0)
摘要:现象 工作中遇到一件怪事:搭建好服务器后(VPN服务器,创建了虚拟网卡),服务器和客户端之间响应正常且很稳定,客户端也能正常通过服务器访问外网。但是访问个别网站时可以打开文字,但是部分图片打不开(也不是所有图片打不开)。 分析 根据以上现象,基本排除了虚拟借口或者物理接口有问题,怀疑客户端和服务器之 阅读全文
posted @ 2018-02-01 22:47 guhowo 阅读(1160) 评论(0) 推荐(0)
摘要:ARP(Address Resolution Protocol)是地址解析协议 阅读全文
posted @ 2017-12-07 22:30 guhowo 阅读(182) 评论(0) 推荐(0)
摘要:TCP协议是有连接且可靠的传输层协议。所以一切都是围绕面向连接和可靠展开的。 面向连接 连接的建立:三次握手,标志位的变化,及状态变化。发送端状态变化SYN_SENT-->ESTABLISHED;接收端状态变化Listen-->SYN_RCVD-->ESTABLISHED。 引入的问题:SYN_FL 阅读全文
posted @ 2017-11-27 22:02 guhowo 阅读(236) 评论(0) 推荐(0)
摘要:窗口探查(window probe) 当接收方TCP缓冲区没有剩余空间后,在ACK中会通知发送方window=0,此时发送方就暂停发送数据。当接收方TCP缓冲区又有空间后,会再次发送一个ACK,告知其剩余缓冲区大小,可以接受新的数据包了,这个ACK叫做窗口更新。TCP接收方则等待新的数据包过来。但是 阅读全文
posted @ 2017-11-25 21:45 guhowo 阅读(428) 评论(0) 推荐(0)
摘要:TCP有Keepalive功能,它和HTTP的Keepalive功能目的不一样。TCP服务器希望知道客户端是否崩溃、重新启动或者中间路由不通。保活定时器就提供这种功能。 在进一步介绍TCP的保活定时器前,先了解一个概念:长连接和短连接。(TCP是长连接) 长连接:建立一个连接,多个请求复用这个连接, 阅读全文
posted @ 2017-11-24 22:12 guhowo 阅读(555) 评论(0) 推荐(0)
摘要:TCP提供可靠的传输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没收到确认,他就重传数该数据。对任何实现而言,关键之处就在于超时和重传的策略,即怎样决定超时间隔和如何确定重传的频率。 TCP管理四个定时 阅读全文
posted @ 2017-11-22 22:56 guhowo 阅读(756) 评论(0) 推荐(0)
摘要:TCP的交互数据流 呼入连接请求队列 一个并发服务器调用一个新的进程来处理每个客户请求,因此处于被动连接请求的服务器应该始终处理下一个呼入的连接请求。那正是使用并发服务器的根本原因。但是仍有可能当服务器咋爱创建一个新的进程时,或操作系统正忙于处理优先级更高的进程时,到达多个连接请求。此时TCP是如何 阅读全文
posted @ 2017-11-19 12:14 guhowo 阅读(978) 评论(0) 推荐(0)
摘要:四次挥手 以上过程流程图如下: 为什么断开连接需要四次握手?因为TCP链接是全双工的,即数据在两个方向上能同时传递,因此每个方向必须单独的进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向连接。 分析 TCP报文头中flags中的FIN被置为1,sequence num 阅读全文
posted @ 2017-10-31 23:23 guhowo 阅读(359) 评论(0) 推荐(0)
摘要:模拟三次握手 telnet连接虚拟机192.168.0.107。用tcpdump抓包,然后用wireshark分析报文。 以上过程如下图: 分析 上图2,3,4就是三次握手的过程。本地端口号为52368,telnet端口号23。 上面截图就是第一次握手的数据分析,可以清晰的看出TCP报文头的结构: 阅读全文
posted @ 2017-10-30 23:39 guhowo 阅读(375) 评论(0) 推荐(0)