作者:gfree.wind@gmail.com 作为网络领域的开发人员,我们经常要与Linux的数据报文打交道,一定要搞清楚数据报文是从何而来,又是如何离去。...注:驱动对interface执行poll操作时,会尝试循环检查网卡是否有接收完毕的报文,直到设置的budget上限,或者已经就绪报文。 二、接收软中断将报文分发给协议栈的示意图 ? 图2....如果网卡没有vlan offload,则需要软件剥掉vlan头,以便后面的报文处理。 5. 在分发报文时,可能会有多个handler关心此报文。所以在分发时,都是增加引用计数,然后给对应的处理函数。...通过以太网报文的协议,将数据报文分发给该协议的handler,如IPv4,IPv6,PPPoE等。 三、协议栈将数据报文发给套接字(以IPv4为例)的流程图 ? 图3....通过以上四个分解的流程图,相信大家对于Linux数据报文的来龙去脉,有了一定的了解。如在文章开头所云,这些流程图都做了必要的简化。在很多步骤都可以进行展开,也涉及了更多细节。
作者:gfree.wind@gmail.com 作为网络领域的开发人员,我们经常要与Linux的数据报文打交道,一定要搞清楚数据报文是从何而来,又是如何离去。...如果网卡没有vlan offload,则需要软件剥掉vlan头,以便后面的报文处理。 5. 在分发报文时,可能会有多个handler关心此报文。...通过以太网报文的协议,将数据报文分发给该协议的handler,如IPv4,IPv6,PPPoE等。...将skb报文加入套接字的接收队列。 四、报文从应用层到网卡的流程图 app_to_nic.jpg 1....通过以上四个分解的流程图,相信大家对于Linux数据报文的来龙去脉,有了一定的了解。如在文章开头所云,这些流程图都做了必要的简化。在很多步骤都可以进行展开,也涉及了更多细节。
如果对1588报文单步时间戳不了解,可以查看我之前的文章“IEEE 1588 Sync报文单步时间戳”。 平台和工具 我用的平台就不透露了,测试使用两块板子,网口直连。...用到的软件包括, Linux:这是我板子的OS,包含我要验证的驱动。 tcpdump:抓包工具,位于板子的文件系统。 linuxptp:开源PTP软件,位于板子的文件系统。...调试方法 两个板子网口直连,启动Linux。 配置IP地址,确保两个网口能ping通。 一个板子做接收,运行tcpdump抓包,可直接查看,也可以保存成pcap文件在Wireshark中打开查看。...另一个板子做发送,运行ptp4l做master,发送单步Sync报文。...# tcpdump -i eth0 -xx 可以看到对L2 Ethernet报文和UDP/IPv4报文,PTP消息的correctionField和originTimestamp字段的数值,直接就解析出来了
HTTP报文 HTTP报文是由一行一行的简单字符串组成的。HTTP报文都是纯文本,不是二进制代码,所以人们可以很方便地对其进行读写。...下图是一个例子: 从Web客户端发往Web服务器的HTTP报文称为请求报文(request message)。...从服务器发往客户端的报文称为响应报文(response message),此外没有其他类型的HTTP报文。HTTP请求和响应报文的格式很类似。...HTTP 报文包括以下三个部分: 起始行 报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。 首部字段 起始行后面有零个或多个首部字段。...主体 空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括 了要发送给 Web 服务器的数据;响应主体中装载了要返回给客户端的数据。
以上情况向对端发送reset报文,但是,如果当前报文不仅只有ACK标志位,还设置了RST位,将不发送reset报文。...tcp_time_stamp(tp))) { NET_INC_STATS(sock_net(sk), LINUX_MIB_PAWSACTIVEREJECTED...fastopen) { inet_csk_reqsk_queue_drop(sk, req); __NET_INC_STATS(sock_net(sk), LINUX_MIB_EMBRYONICRSTS...th->rst) { NET_INC_STATS(sock_net(sk), LINUX_MIB_PAWSESTABREJECTED); ......after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt)) { NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONDATA
请求报文 一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。...响应报文 HTTP响应报文和请求报文的结构差不多,也是由四个部分组成: <status-line> //状态行 <headers> //消息报头 <blank line> //空行 <...响应报文中包含Content-Range指定范围的实体内容 3xx:重定向 301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其他位置。...POST不会变成GET 304 Not Modified:表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足。返回304时,不包含任何响应主体。...假设这个资源没有被修改,那么服务器返回一个响应报文: HTTP/1.1 304 Not Modified Date:Sat, 15 Oct 2011 15:39:29 (空行
前段时间NSA泄露的渗透测试工具中就有一款wtmp日志的擦除,非常好用,这引起了我的兴趣,于是研究了一下linux 登录相关二进制日志的文件格式,用python写了一个日志擦除,伪造的工具(末尾附源码)...Linux中与登录有关的日志及其格式分析 Linux中涉及到登录的二进制日志文件有 /var/run/utmp /var/log/wtmp /var/log/btmp...擦除,伪造登录日志的测试 1.删除utmp记录,将自己从w或者who输出中隐藏 比如此时有两个登录记录,一个是root(要删除的记录),一个是f3 删除前: ? 删除后: ?...5.添加btmp 伪造记录 ? 6.删除lastlog 记录 hacker 用户最后一次登录记录,删除前: ? 删除后: ? ?...本工具不仅可以实现按照 登录主机,登录用户, 时间戳等条件进行按需删除,还可以添加伪造登录记录,以达到迷惑系统管理员之目的。
前段时间NSA泄露的渗透测试工具中就有一款wtmp日志的擦除,非常好用,这引起了我的兴趣,于是研究了一下linux 登录相关二进制日志的文件格式,用python写了一个日志擦除,伪造的工具(末尾附源码)...Linux中与登录有关的日志及其格式分析 Linux中涉及到登录的二进制日志文件有 /var/run/utmp /var/log/wtmp /var/log/btmp.../var/log/lastlog 其中 utmp 对应w 和 who命令;wtmp 对应last命令;btmp对应lastb命令;lastlog 对应lastlog命令 经查Linux man 手册,...擦除,伪造登录日志的测试 1.删除utmp记录,将自己从w或者who输出中隐藏 比如此时有两个登录记录,一个是root(要删除的记录),一个是f3 删除前: 删除后: 添加utmp记录,伪造登录信息 添加前...本工具不仅可以实现按照 登录主机,登录用户, 时间戳等条件进行按需删除,还可以添加伪造登录记录,以达到迷惑系统管理员之目的。
HTTP 报文分为请求报文与响应报文。 当客户端发出一个请求,服务器就会做出响应,返回一个响应报文。无论是请求报文还是响应报文都是由三部分组成:Line ,header,body。...比如:Header有的只能用在响应报文中,有的只能用在请求报文中,有的两者皆可用。 响应正文 又称之为响应体,就是客户端请求服务器返回的结果内容,可以是文本、音频、视频等等。...通用首部字段:请求报文与响应报文都会使用的首部; 请求首部字段:从客户端向服务器发送报文使用的首部。...补充请求的附加信息,客户端信息,响应内容等相关优先级信息; 响应首部字段:从服务器向客户端返回响应报文的首部,补充了响应的附加内容,也会要求客户端附加额外信息; 实体首部字段:针对请求报文与响应报文实体使用的首部..."Transfer-Encoding: chunked"和"Content-Length"这两个字段是互斥的,也就是说响应报文里这两个字段不能同时出现,一个响应报文的传输要么是长度已知,要么是长度未知。
在Unix/Linux,序列号从0开始计数,依次递增。而Windows ping程序的ICMP序列号是没有规律。...查询报文:基于查询的额外信息) 2、ICMP(网络控制报文协议)分为:差错报告报文和查询报文 (1)差错报告报文: ICMP不能纠错,只能检查错误,发现错误报告给最初的数据源。...即时没有终点不可达差错报文也不能代表数据报交付成功。 2)源点抑制:类型=4,缺乏流量控制和拥塞控制。当路由器或主机丢弃数据报时,向源数据端口发送源点抑制差错报文。...该报文两个作用:第一通知源点数据报已经丢弃,二通知源点慢点发数据。...每个数据报通过一个路由器生存时间就-1,当生存时间为0时,就向源点发送一个超时差错报告报文。如果报文的一个分片超时也发送差错报告报文。
本文参看Http RFC7230规范,梳理了http报文部分。...http 报文构成 start-line: 起始行,描述请求或响应的基本信息 *( header-field CRLF ): 头 CRLF header 起始行 起始行的格式就是 start-line...Content-Length请求或者响应的body长度,必须要带上这个字段,以便对方可以方便的分辨出报文的边界,也就是Body数据何时结束。
本期我们接着上期聊,说说HTTP报文。...报文概要在说报文之前,我们先来了解一下报文(message),它是HTTP通信中的基本单位,由8位组字节流(octetsequence,其中octet为8个比特)组成,通过HTTP通信传输。...通常情况下,报文主体指的就是实体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。一个完整的HTTP报文包括报文首部和报文主体两部分。报文首部有请求报文和响应报文。...另外,对于多重范围的范围请求,响应会在首部字段 Content-Type 标明 multipart/byteranges 后返回响应报文。...本期我们主要讲了,HTTP协议报文的组成,传输方式,支持的数据格式,如何获取部分内容、以及返回内容的协商。下期我们继续。END
在上述过程中第三步浏览器给服务器发送的是http请求报文,第五步服务器将资源发送给浏览器的过程中发送的是http响应报文。 首先利用浏览器获得访问“www.baidu.com”的报文。...请求报文 Get请求报文由请求行、请求头及一空行组成。...响应报文 响应报文由响应行、响应头、空行、响应体组成。...304 Not Modified 当采用条件请求时,此时资源存在但条件不满足 4XX客户端错误 400 Bad Request 请求报文存在语法错误 401 Unauthorized 表示用户认证失败
http报文 http报文是http协议的核心所在,http客户端和http服务端正是通过交换http报文进行通信的。...http报文以一些文本形式的元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。 http报文总是向下游流动的。...所有的 HTTP 报文都可以分为两类:请求 报文(request message)和响应报文(response message)。请求报文会向 Web 服务器请求一个动作。...响应报文会将请求的结果返回给客户端。请求和响应报文的基本报文结构相同。...下面对请求报文和响应报文中各部分做一个描述。 起始行 所有的 HTTP 报文都以一个起始行作为开始。请求报文的起始行说明了要做些什么。响应报文的起始行说明发生了什么。
ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。...当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。ICMP报头如下图所示。 各字段说明 类型:占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。...第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文。 代码:占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。...校验和:这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。其计算方法与在我们介绍IP报头中的校验和计算方法是一样的。...标识:占两字节,用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。
HTTP报文详解 目录 1、HTTP请求报文 2、HTTP响应报文 3、请求方法 4、消息头 4.1、请求消息头 4.2、响应消息头 5、状态码 5.1、1XX消息 5.2、2XX成功 5.3、3XX...1、HTTP请求报文 HTTP请求报文由3部分组成(请求行+请求头+请求体) 请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还有DELETE、HEAD、OPTIONS、PUT...②是请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。 ③是协议名称及版本号。 ④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。...请求结构图: 2、HTTP响应报文 HTTP响应报文由3部分组成(响应行+响应头+响应体) 响应报文: ①报文协议及版本。 ②状态码及状态描述。 ③响应报文头,也是由多个属性组成。...示例:User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0 Upgrade 要求服务器升级到另一个协议
EDI标准的规则准确定义了信息在文档中的位置,以及查找信息的方式。因此,在创建EDI文档时(如,采购订单),必须严格按照EDI标准(ANSI/EDIFACT)的...
常见的OPC UA报文主要分为两类 OPC UA over TCP、OPC UA Secure Conversation2.1 OPC UA over TCP报文结构OPC UA over TCP报文包括消息头和消息体...UA链接协议支持的值之一,则设置为“F”的ACSII码整个消息头+消息体的长度,单位为字节消息类型部分共分四类:HEL:表示消息体为Hello报文ACK:表示消息体为Acknowledge报文ERR:表示消息体为...Error报文RHE:表示消息体为ReverseHello报文2.1.2 消息体2.1.2.1 Hello报文当消息类型为HEL时,代表消息体部分为一个Hello报文,具体格式如下:用途 长度 描述...2.2 OPC UA Secure Conversation报文结构OPC UA Secure Conversation(OPC UA 安全会话)的报文格式设计用于在客户端与服务器之间建立和维护一个加密和签名的通信通道...(可选)如果报文被签名,这部分包含签名。不是所有的安全策略都需要签名。
2.报文格式2.1 HART字节因为HART协议有自己独特的物理层通讯方式,所以其在数据链路层上的传输采用一个被称为HART字节组的传输方式,每次传输会发送一个11位的HART字节,多个HART字节中的数据部分组合成一个有效的...用于校验数据固定为1,表示结束2.2HART报文格式结构如下:用途长度 描述 前导码 5-20字节 5-20个0xFF,用于传输的开始,
1.2报文格式一个典型的Modbus RTU报文结构如下:用途设备地址 功能码...2.从机收到了报文,但是报文错误(CRC校验不通过),从机将丢弃报文,主机将按照超时进行处理。...3.从机接收到了报文,但是报文要求的操作无法实现(如功能码不存在、寄存器范围不对等),从机将会返回包含异常码的响应报文。...当接收方收到报文时,会对整个报文(包括CRC校验码)使用相同的CRC计算流程。如果报文未被篡改,计算结果应为0x0000(考虑到了CRC码的加入和计算规则)。...Modbus TCP 报文格式相较于Modbus RTU,主要是在报文的前面增加了一个MBAP头(Modbus Application Protocol header),用于在TCP/IP网络中传输。
领取专属 10元无门槛券
手把手带您无忧上云