UDP报头只有4个字段,分别是:源端口号、目的端口号、报文长度和报头checksum,其中的报头checksum这个字段在IPv4中并不是强制的,但在IPv6中是强制的,本文介绍UDP报头中checksum的计算方法,并给出相应的源程序。1. UDP报文结构UDP报文为两部分,报头+数据;在Linux下,UDP报头定义在头文件linuxudp.h中;stru …
编程文章
1、什么是Socket?Socket通常称为“套接字”,用于描述IP地址和端口,是对TCPIP 协议的抽象,只对应用层暴露简单的接口,应用程序通过套接字向网络发出请求或者应答请求。如图:2、Socket如何唯一标识一个进程Socket基于tcp协议实现,网络层的ip地址唯一标识一台主机,而传输层的协议+端口号可以唯一标识绑定到这个端口的进程。Bind()方法 …
Docker容器都是独立的,互相隔离的环境。然而,它们通常只有互相通信时才能发挥作用。虽然有许多方法可以连接容器们,可是我将并不会试着去将其全部讨论在内。但是在这一系列的方法中,我们将看看那些常用的做法。虽然看起来是很浅显,但是这对于与Docker成天打交道的朋友来说,理解这些技术及底层的设计理念就显得非常地重要了。理解这些主题将会:帮助开发和运维人员探索广 …
UDP协议是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。既然有了保证可靠传输的TCP协议,为什么还要非可靠传输的UDP协议呢?主要的原因有两个。一是可靠的传输是要付出 …
1. ping这个程序用来检测一帧数据从当前主机传送到目的主机所需要的时间。它通过发送一些小的数据包,并接收应答信息来确定两台计算机之间的网络是否连通。当网络运行中出现故障时,采用这个实用程序来预测故障和确定故障源是非常有效的。如果执行ping不成功,则可以预测故障出现在以下几个方面:网线是否连通,网络适配器配置是否正确,IP地址是否可用等;如果执行ping …
学完C语言做不出东西?不存在的,咱们做一个最“隐私”的聊天器,就俩人,你和我。咱们聊天的信息你知我知没别人知。我们直接开始写代码,只要你会基础的C语言,不要担心看不懂,不懂的我帮你刨根问底,把根都挖出来嚼烂,绝对懂。一、一个聊天软件的基础模型是怎么样的?你是个新手的话你可能就会问,什么是模型?!听不懂,我在骗你学习。放心,我现在就告诉你什么是基础“模型”。我 …
近期排查了一个问题,epoll惊群的问题,起初我并不认为这是惊群导致,因为从现象上看,只是体现了CPU不均衡。一共fork了20个Server进程,在请求负载中等的时候,有三四个Server进程呈现出比较高的CPU利用率,其余的Server进程的CPU利用率都是非常低。中断,软中断都是均衡的,网卡RSS和CPU之间进行了bind之后依然如故,既然系统层面查不 …
首先说说系统调用是什么,当你的代码需要做IO操作(open、read、write)、或者是进行内存操作(mmpa、sbrk)、甚至是说要获取一个系统时间(gettimeofday),就需要通过系统调用来和内核进行交互。无论你的用户程序是用什么语言实现的,是php、c、java还是go,只要你是建立在Linux内核之上的,你就绕不开系统调用。图1 系统调用在计 …
我一直感到惊讶的是,很少有人知道他们可以使用strace的所有事情。它始终是我推出的第一个调试工具之一,因为它通常在我运行的 Linux 系统上可用,并且可用于解决如此广泛的问题。什么是strace?Strace 非常简单地是一个跟踪系统调用执行的工具。在最简单的形式中,它可以从头到尾跟踪二进制文件的执行,并输出一行文本,其中包含系统调用的名称、参数和进程生 …
在TypeScript中,String对象和string原始类型有显著区别,通常推荐使用string类型。string原始类型 vs String对象string 原始类型:用于表示文本数据,直接使用字面量(如"hello")定义,是TypeScript中推荐的方式。String 对象:通过new String("hello" …
