一、介绍
UDP是一种不可靠的、无连接的、基于数据报的传输层协议。相比于TCP就比较简单,像写信一样,直接打包丢过去,就不用管了,而不用TCP这样的反复确认。所以UDP的优势就是速度快,开销小。但是随之而来的就是不稳定,面向无连接的,无法确认数据包。会导致丢包问题。
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结构的实现。
2025年01月21日
前言
在本章节中,我们将深入探讨如何在Rust中实现异步的Socket编程。异步编程允许我们在执行网络操作时避免阻塞线程,从而提升性能和响应速度。在传统的同步编程中,程序在等待I/O操作完成时会阻塞当前线程,而在异步编程中,我们可以通过非阻塞方式处理I/O,继续执行其他任务。这对于需要处理大量并发连接的服务器应用程序尤其重要。
2025年01月21日
2025年01月21日
Socket通讯是软硬件直接常用的一种通讯方式,分为TCP和UDP通讯。
在我的职业生涯中,有且仅用过一次UDP通讯。而TCP通讯系统却经常写,正好今天写了一个TCP通讯的软件。总结一下内容
软件使用C#编程原因写的,为了能够使用所有的电脑,采用了NET Framework 4.0。
2025年01月21日
导致“Connection reset”的原因是服务器端因为某种原因关闭了Connection,而客户端依然在读写数据,此时服务器会返回复位标志“RST”,然后此时客户端就会提示“java.net.SocketException: Connection reset”。可能有同学对复位标志“RST”还不太了解,这里简单解释一下: |