我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。
2025年01月21日
作者:疯狂的技术宅
转发链接:https://mp.weixin.qq.com/s/-cpUkuzpsPR6uUgWPkbH-A
目录
编程中有什么错误?
2025年01月21日
“IP地址+网络协议+端口”的整合就称为套接字(Socket)
一、描述
二、连接过程
三、总结
四、补充
五、思维导图
1、套接字(Socket):
2025年01月21日
UDP是一种不可靠的、无连接的、基于数据报的传输层协议。相比于TCP就比较简单,像写信一样,直接打包丢过去,就不用管了,而不用TCP这样的反复确认。所以UDP的优势就是速度快,开销小。但是随之而来的就是不稳定,面向无连接的,无法确认数据包。会导致丢包问题。
2025年01月21日
2025年01月21日
产生RST的三个条件:
1. 目的地为某端口的SYN到达,然而该端口上没有正在监听的服务器;
2. TCP想取消一个已有的连接;
3. TCP接收到一个根本不存在的连接上的分节;
现在模拟上面的三种情况:
client:
2025年01月21日
写得时候遇到了一个很大的问题,就是我在发送用户名,接受用户名就会一直卡住。然后等了好久后提示
recv ‘\r\nSession timed out.\r\n\r\nTelnet Server has closed t’
虚拟机服务器是Win7的 主机客户也是Win7。
1、一开始觉得是因为socket 设置的问题,上网查了很久,也按他们的方法改了,但都不管用。
2、后来觉得是因为读取行的问题,linux和Windows返回行信息不同,所以没办法读取到,所以将
2025年01月21日
本文将从上层介绍Linux上的TCP/IP栈是如何工作的,特别是socket系统调用和内核数据结构的交互、内核和实际网络的交互。写这篇文章的部分原因是解释监听队列溢出(listen queue overflow)是如何工作的,因为它与我工作中一直在研究的一个问题相关。
先从建好的连接开始介绍,稍后将解释新建连接是如何工作的。
内核管理的每一个TCP文件描述符都是一个struct, 它记录TCP相关的信息(如序列号、当前窗口大小等等),以及一个接收缓冲区(receive buffer,或者叫receive queue)和一个写缓冲区(write buffer,或者叫write queue),后面我会交替使用术语buffer和queue。如果你对更多细节感兴趣,可以在Linux内核的net/sock.h中看到socket结构的实现。