
网络通信
文章平均质量分 85
CoderAndClimber
一个小码农,个人微信公众号:清远的梦呓,欢迎关注
展开
-
fork的坑:文件描述符继承
最近遇到一个神奇的fork问题,坑了我2天半的时间,最后在另一个小伙伴的帮助下,找到问题根源,然后修改。此时,对于前人说的,fork的坑,也终于有点认识了。基本的软件图如下:主进程A收到云端B的命令,fork出子进程A1、A2、….、An,然后执行execv函数,打开新的可执行文件。Execv执行完成后,子进程Ai就拥有了和主进程A不同的镜像文件,这是Linux下创建新进程的典型方式。主进程A收到云端的控制信令后,通过socket与子进程Ai通信:控制Ai,收集Ai...原创 2020-11-15 13:27:08 · 3805 阅读 · 0 评论 -
QUIC的那些事 | QUIC概述
目录TCP/UDP缺点TCP的不足UDP的不足握手导致的连接成本TCP的可靠成本中间设备的僵化依赖于操作系统的实现导致协议僵化队头阻塞QUIC的特点QUIC原理QUIC使用场景QUIC报文格式概述参考资料QUIC(Quick UDP Internet Connection)是谷歌提出的一种基于UDP的低时延的互联网传输层协议。QUIC解决...原创 2019-01-13 19:17:07 · 3402 阅读 · 0 评论 -
QUIC的那些事 | 包类型及格式
目录报文头特殊报文版本协商报文Public Reset报文普通报文(Regular Packet)帧包(Frame Packet)FEC包(FEC Packet)参考资料QUIC 的 packet 除了个别报文比如 PUBLIC_RESET 和 CHLO,所有报文头部都是经过认证的,报文 Body 都是经过加密的。这样只要对 QUIC 报文任何修改,接收端都能够...原创 2019-01-13 19:32:21 · 7582 阅读 · 0 评论 -
QUIC的那些事 | 帧类型及格式
目录Frame TypeStream FrameACK FrameSTOP_WAITING FrameWINDOW_UPDATE FrameBLOCKED FramePadding FrameRST_STREAM FramePING FrameCONNECTION_CLOSE帧GOAWAY Frame参考资料QUIC相关文章见《QUIC的那些事 ...原创 2019-01-13 19:56:37 · 4533 阅读 · 0 评论 -
NAT,私网访问公网的利器
目录NAT概述什么是NATNAT起源NAT作用NAT的工作模型和特点NAT原理NAT类型一对一的NAT一对多的NATNAT不足破坏IP端到端模型会话时效变短破坏IP追踪安全方面NAT穿越技术应用层网关(ALG)探针技术STUN和TURN中间件技术中继代理技术特定协议的自穿越技术NAT的应用NAT多实例应用N...原创 2019-01-19 20:17:04 · 5263 阅读 · 0 评论 -
NAT-T:IPsec穿越NAT之道
目录1. IPsec与NAT矛盾2. 身份确认3. NAT-T3.1 NAT-T流程3.2 报文格式4. 地址复用4.1. 隧道模式下的冲突4.2. 传输模式下的冲突 4.3. 同一个NAT下的冲突Q And A参考资料1. IPsec与NAT矛盾在文章《IPsec》及《NAT》中介绍了IPsec及NAT的基本知识。我们知道IPsec的协议...原创 2019-01-24 22:28:07 · 21787 阅读 · 3 评论 -
P2P如何实现内网穿透(打洞)
目录概述P2P简介P2P通信技术中继(Relaying)逆向连接(Connection reversal)UDP打洞端点处于不同NAT端点处于相同的NAT固定端口绑定空闲状态下的超时问题TCP打洞套接字和TCP端口的重用打开P2P的TCP流TCP同时打开参考资料概述P2P简介我们知道,内网设备是不能直接访问公网的,如果需要内网...原创 2019-01-20 17:33:24 · 83878 阅读 · 5 评论 -
QUIC的那些事 | QUIC为什么那么快
QUIC(Quick UDP Internet Connection)是谷歌提出的一种基于UDP的低时延的互联网传输层协议,QUIC的发音类似于Quick。实际上,QUIC确实很快。QUIC解决了现代网站应用的一系列的传输层及应用层的问题,但只需要应用开发者几乎不用做出或者只做出很小的改变。QUIC和TCP+TLS+HTTP很类似,但是基于UDP实现,基于QUIC实现的HTTP协议被提议为HT...原创 2019-01-15 22:45:19 · 2906 阅读 · 1 评论 -
TCP 的那些事 | RTO
文章《TCP 的那些事 | 快速重传》、《TCP 的那些事 | SACK》及《TCP的那些事 | D-SACK》讲解了TCP的快速重传机制、SACK机制以及D-SACK机制。TCP超时与重传中最重要的部分就是对一个给定连接的往返时间RTT(Round-Trip Time)的测量。由于路由器和网络流量均会变化,RTT这个时间可能经常会发生变化,如果测量出来RTT,那么发送端大致就知道需要多久进行重传...原创 2019-01-27 10:15:52 · 988 阅读 · 0 评论 -
TCP SYN-Flood攻击
本文转载自华为企业互动社区大家好,强叔和你们又见面了!上一期强叔带着大家一起了解了单包攻击的基本防御知识,知道了单包攻击的几大类型,以及防火墙支持防御的攻击种类。但是,在现网中单包攻击只占了很小一部分比例,更多的攻击还是集中在流量型攻击和应用层攻击。本期强叔将继续为大家讲解一下现网上常见的流量型攻击。 过去,攻击者所面临的主要问题是网络带宽,由于较小的网络规模和较慢的网络速度的限制,攻击...转载 2019-01-29 14:46:03 · 7340 阅读 · 0 评论 -
UDP Flood攻击
本文转载自华为企业互动社区大家好,强叔又来了!上一期,强叔给大家介绍了SYN Flood的攻击和防御,本期强叔将带领大家一起来学习一下另一种常见的流量型攻击:UDP Flood。讲UDP Flood之前,强叔还是先从UDP协议讲起。在讲SYN Flood的时候,我们知道了TCP协议是一种面向连接的传输协议。但是UDP协议与TCP协议不同, UDP是一个无连接协议。使用UDP协议传输数据之前...转载 2019-01-29 15:01:30 · 26287 阅读 · 0 评论 -
DHCP 原理及抓包分析
目录1. DHCP 简介1.1 DHCP 作用1.2 DHCP 工作机制2. DHCP 交互流程2.1 正常交互流程2.2 租约2.3 客户端状态机2.4 参数配置3. DHCP 报文3.1 报文类型3.2 报文格式3.3 抓包4. DHCP 中继代理1. DHCP 简介1.1 DHCP 作用DHCP(Dynamic Host C...原创 2019-02-26 22:44:14 · 4435 阅读 · 1 评论 -
网关知多少
网关(Gateway),顾名思义,就是一个网络到另一个网络的关口。维基百科对网关的定义为:在计算机网络中,网关(Gateway)是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。百度百科对网关的定义为:网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网...原创 2019-01-12 19:43:43 · 795 阅读 · 0 评论 -
如何判断两个设备是否可以直接通信
在物理链路通的情况下,如下的两台设备是否可以直接通信?图1 设备信息设备1及设备2均为C类地址,如果只从IP地址看,这两个地址好像是属于同一个网络,我们知道,同一个网络的设备是可以直接通信的,不需要网关的支持。 但是,上述两个地址,是否真的属于同一个网络?C类地址的网络号是24位,主机号是8位;从这个标准看,上述两个地址确实是同一个网络啊。不错,确实是属于同一个大的网络。但是,网...原创 2019-01-02 22:17:57 · 12577 阅读 · 0 评论 -
TCP 的那些事 | TCP Fast Open
目录 TCP Fast Open定义起源详解流程CookieTFO与Wireshark开启TFO示例代码TFO性能页面加载时间Server CPU安全性结论参考资料TCP Fast Open定义TCP Fast Open(TFO)是用来加速连续TCP连接的数据交互的TCP协议扩展,原理如下:在TCP三次握手的过程中,当用户首次访问...原创 2019-01-06 14:53:50 · 7798 阅读 · 1 评论 -
TCP 的那些事 | 四次挥手
TCP在断开连接时,会进行四次挥手(一方主动断开,对端被动断开),如图1所示:图1 四次挥手第一次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态。第二次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态。第三次挥手:服务端发送一个FI...原创 2018-12-16 21:17:38 · 197 阅读 · 0 评论 -
TCP 的那些事 | MTU
网络通信中,经常会遇到一个概念MTU,全称是Maximum Transmission Unit(最大传输单元)。那么什么是MTU,MTU的作用是什么,本文从最基本的概念出发,一步步讲起。MTU是最大传输单元,针对的对象是以太网帧中的数据。MTU的确切意思就是以太网帧中数据的最大长度,注意,是以太帧中有效载荷的最大长度,不包括以太帧帧首尾部的长度。以太网帧数据格式如下:以太网帧数据格式...原创 2018-12-16 21:23:16 · 2800 阅读 · 0 评论 -
TCP 的那些事 | MSS
MSS 的全称是 Maximum Segment Size(最大报文长度),是 TCP 层上的概念。MSS 指的是 TCP 报文段中数据部分的最大长度,并不是整个TCP 报文段长度,整个 TCP 报文段长度 = TCP 首部长度 + TCP 数据部分长度。网络交互的双方进行 TCP 通信时,会在三次握手时告知对方各自的 MSS,MSS 值只会出现在 SYN 报文中。如下抓包所示,其中IP地...原创 2018-12-16 21:25:00 · 1177 阅读 · 0 评论 -
TCP 的那些事 | TCP报文格式解析
TCP(Transmission Control Protocol 传输控制协议)提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。TCP在网络ISO的七层模型中的第四层---Transport层,在TCP/IP协议中的第三层---传输层。TCP通过下列方式来提供可靠性:1. 应用数据被分...原创 2018-12-16 21:29:05 · 1439 阅读 · 0 评论 -
TCP 的那些事 | 快速重传
TCP是面向连接的、可靠的、基于字节流的传输层通信协议,其要保证传输的数据可靠:网络通信的双方发送给对方的数据要确保可以抵达对方,否则要进行重传。假设通信的双方是A和B,A连续给B发送了1,2,3,4,5这5份数据,但是呢,在A发送这5份数据的途中,B先收到了1,2号数据,于是发送Ack给A,表示已经收到了1,2号数据。随后又收到了4号及5号数据,这个时候还没有收到3号数据,那么B能不能直接回...原创 2018-12-16 21:31:09 · 954 阅读 · 0 评论 -
TCP 的那些事 | SACK
在文章《TCP 的那些事 | 快速重传》中介绍了基本的重传知识及快速重传,本文讲解相比快速重传更有效的另一种重传方式:SACK(Selective Acknowledgment)。SACK需要在TCP头里加一个SACK的东西,ACK还是快速重传(Fast Retransmit)的ACK,SACK则是汇报收到的数据碎版。SACK信息在《TCP 的那些事 | TCP报文格式解析》中的图1中的Opt...原创 2018-12-16 21:35:59 · 5018 阅读 · 0 评论 -
TCP 的那些事 | D-SACK
在《【技术】TCP 的那些事 | SACK 》讲解了SACK,在SACK中描述的数据段是接收端收到的数据,发送端根据接收端返回的SACK信息就可以知道哪些数据丢了,进而进行重传。RFC2883对SACK进行了扩展,称为D-SACK:使得扩展后的SACK具有通知发送端哪些数据被重复接收了。引入D-SACK的目的是使TCP进行更好的流控,具体来说有以下几个好处:1. 让发送方知道,是发送的包丢...原创 2018-12-16 21:40:38 · 4777 阅读 · 0 评论 -
TCP 的那些事 | 滑动窗口
Advertised Window Size在文章《TCP 的那些事 | TCP报文格式解析》中讲述了TCP的报文格式,其中Window字段表示接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。该字段和Options字段中的Kind为3的可选项(Window Scale)结合,可以确定窗口大小,该Window字段也称...原创 2018-12-16 21:51:36 · 2231 阅读 · 0 评论 -
TCP 的那些事 | 在途字节数
由于网络存在延迟丢包、接收端处理数据与发送端发送数据的速度有差别以及接收端可能采取收到多个包以后才统一回复Ack的策略,那么发送端就需要保存“已发送但未收到Ack”的数据列表,当触发重传时,直接在该链表中找到相应需要重传的数据,重传给接收端。在文章《【技术】TCP 的那些事 | 滑动窗口 》中讲述了滑动窗口的基本原理,其中“从发送端看发送数据的状态”中的Category2:已发送但未收到Ack...原创 2018-12-27 19:04:48 · 1967 阅读 · 0 评论 -
TCP 的那些事 | 拥塞避免
在文章《【技术】TCP 的那些事 | 慢启动 》中 讲到,慢启动算法的拥塞窗口大小CWS(Congestion Window Size )有个上限值SSThresh(Slow Start Threshold),当CWS >= SSThresh时,就会进入“拥塞避免”阶段。一般来说SSThresh的值是65535字节,当CWS达到这个值时后,CWS的更新算法如下:1. 收到一个ACK时,...原创 2018-12-28 21:21:27 · 818 阅读 · 0 评论 -
TCP 的那些事 | 快速恢复
在《慢启动》、《拥塞避免》文章讲述了慢启动以及拥塞避免阶段的相应机制,当进入拥塞阶段后,TCP需要采取一定的策略避免网络的拥塞,其中有一种方式就是快速恢复算法。快速恢复算法是在TCP Reno算法中引入。TCP Reno 算法快速恢复和快速重传一起使用,使用规则如下:1. 启动快速重传2. 设置SSThresh = CWS/2 以及 CWS = SSThresh + 3 *...原创 2019-01-01 19:49:48 · 891 阅读 · 1 评论 -
TCP 的那些事 | 三次握手
TCP在建立连接时,会进行三次握手,流程如图1所示:图1 TCP 三次握手流程图3次握手的主要目的是初始化Sequence Number 的初始值及协商一些通信双方的通信参数。通信的双方要互相通知对方自己的初始化的Sequence Number(缩写为ISN:Inital Sequence Number)。SYN,全称Synchronize Sequence Numbers。也就上图中...原创 2018-12-16 21:12:07 · 483 阅读 · 0 评论