网络协议
文章平均质量分 94
「已注销」
这个作者很懒,什么都没留下…
展开
-
WinSock I/O 模型 -- IOCP 模型
前言IOCP 全称 Input/Ouput Completion Ports,中文中翻译一般为“完成端口”,本文中我们使用 IOCP 简写.IOCP 模型是迄今为止最为复杂的一种 I/O 模型,但是同时通过使用 IOCP 我们往往可以达到最佳的系统性能. 当你的网络应用程序需要管理大量的 Socket I/O 请求时,你或许没有其他的选择.本篇文章,我们将通过一个官方的 IOCP demo 程序来介绍如何使用 IOCP. 因为其复杂性,这篇文章中我们主要介绍如何使用,不深入内部的实现,更多的详细信息原创 2020-11-29 01:00:12 · 1062 阅读 · 0 评论 -
WinSock I/O 模型 -- OVERLAPPED I/O 模型
简介OVERLAPPED I/O 模型也是 WinSock 中常见的异步 I/O 模型,相比于我们之前提到的 Select 模型,WSAAsyncSelect 模型 和 WSAEventSelect 模型有更好的性能.为了方便描述,下文我们将称 Overlapped I/O 模型为 “重叠模型”.重叠模型的基本设计原理便是让应用程序使用一个重叠的数据结构(Overlapped),一次投递一个或多个 Winsock I/O 请求。针对那些提交的请求,在它们完成之后,应用程序可为它们提供服务使用这个原创 2020-11-14 01:20:20 · 486 阅读 · 0 评论 -
WinSock I/O 模型 -- WSAAsyncSelect 模型
简介WSAAsyncSelect 模型也是 WinSock 中常见的异步 I/O 模型。使用这个模型,网络应用程序通过接收以 Windows 消息为基础的网络事件通知来处理网络请求。这篇文章我们就来看看如何使用 WSAAsyncSelect api 来实现一个简单的 TCP 服务器.API 基础要使用 WSAAsyncSelect 模型,我们必须创建一个窗口, 再为该窗口对象提供一个窗口历程(WinProc). 通过适当的配置之后,当有网络请求到来的时候,windows 会将网络消息投递到我们所创原创 2020-11-08 21:23:21 · 673 阅读 · 2 评论 -
WinSock I/O 模型 -- WSAEventSelect 模型
简介WSAEventSelect 模型也是 WinSock 中最常见的异步 I/O 模型。这篇文章我们就来看看如何使用 WSAEventSelect api 来实现一个简单的 TCP 服务器.API 基础WSAEventSelectWSAEventSelect 用来把一个 SOCKET 对象和一个 WSAEVENT 对象关联起来。 lNetworkEvents 表示我们关心的 FD_XXX 网络事件. 如果关心多个 SOCKET 事件,可以使用 OR 的方式指定多个 FD_XXX 标志。int原创 2020-11-07 22:54:04 · 491 阅读 · 0 评论 -
WinSock I/O 模型 -- Select 模型
简介Select 模型是 WinSock 中最常见的 I/O 模型,这篇文章我们就来看看如何使用 Select api 来实现一个简单的 TCP 服务器.API 基础Select 模型依赖 WinSock API Select 来检查当前 Socket 是否可写或者可读。使用这个 API 的优点是我们不需要使用阻塞的 Socket API (recv, send) 来等待 Socket 状态准备就绪,我们可以异步的检查 Socket 的状态来进行读数据或者写数据.Select 方法的声明如下:i原创 2020-10-28 23:22:42 · 342 阅读 · 0 评论 -
QTcpSocket connectToHost 建立连接速度慢问题
问题场景在使用 QT 开发一个客户端 App 的时候,我们通过 QTcpSocket 与后台服务器进程通信。 后台程序使用其他语言编写。 问题: 在客户端启用之后尝试建立与后台程序的 TCP 连接的时候,发现连接速度非常慢(肉眼可见的慢)。我的客户端代码:...m_Socket = new QTcpSocket();m_RemoteHost = "0.0.0.0";m_RemotePort = 20021;m_Socket->connectToHost(m_RemoteHost, m_原创 2020-09-23 22:14:28 · 4163 阅读 · 0 评论 -
Go Concurrency Patterns: Context
Go Concurrency Patterns: Context原文地址:https://blog.golang.org/contextIntroduction在 Go 语言实现的服务器上,我们总是使用 goroutine 来处理与客户端建立的连接, 给每个连接分配一个独立的 goroutine. 在请求的 handler 中也通常会再开启额外的 goroutine 来访问后台的各种服务,比如 数据库操作,访问 RFC 服务。 在这种情况下,一个客户端连接往往会对应一组 goroutine,这些翻译 2020-08-20 21:21:35 · 241 阅读 · 0 评论 -
协议簇:TCP 解析: 连接断开
简介接前文 协议簇:TCP 解析: 建立连接, 我们这篇文章来看看 TCP 连接断开的过程,也就是众所周知的”四次挥手“的具体流程.断开连接通常情况MSL: Maximum Segment Lifetime.这里,我们假定 A 端为关闭连接的发起方.初始状态下,通信双方均处于连接状态.某一时刻,A 端发起断开连接请求(上层客户通过调用 TCP 的 Close 接口). 发起断开...原创 2020-05-05 17:36:49 · 263 阅读 · 0 评论 -
协议簇:TCP 解析: 建立连接
简介接前文 协议簇:TCP 解析: 基础, 我们这篇文章来看看 TCP 连接建立的过程,也就是众所周知的”三次握手“的具体流程.详解最普通的 TCP 握手流程如下图:下面描述中,序列号对应于上图中的行号.初始状态时,TCP A 处于连接关闭状态, TCP B 处于监听状态. 也就是通常所说的 A 时 TCP 客户段,B 是服务端.A 发送 SYN 给 B, 并附有 SEQ, 请求建...原创 2020-04-25 20:36:03 · 571 阅读 · 0 评论 -
协议簇:TCP 解析: 基础
简介本文我们将从 RFC 学习一下 RFC793 中描述的 TCP 协议. 这将区别于通常讲解计算机网络书籍中所描述的 TCP. 但他们必然是相统一的,不会互相冲突.消息格式毫无疑问,我们首先得描述一下 TCP 数据包的格式.RFC 中规定的格式如下:各字段的意义及其值:这里我们先简要的介绍一下,后续详细逐一描述每个字段的用途Source Port: 16bits. 标记 TCP...原创 2020-04-18 19:59:26 · 575 阅读 · 0 评论 -
协议簇:ICMP 解析
简介ICMP 是 Internet Control Message Protocol 的简写. 它主要用来调试网络通信环境中存在的问题.比如,当 IP 数据包总是无法正常的发送到目的地址, 当网关没有足够的 buffer 来转发对应的数据包 等问题.值得一提的是,它属于网络层,不属于传输层. 也就是说它和 IP 协议处于同一层次,而并不是与 TCP/UDP 处于同一层次.消息格式IC...原创 2020-03-15 02:55:48 · 965 阅读 · 0 评论 -
协议簇:IPv4 解析
简介IP 是一种无连接的协议. 操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付数据包。尽最大努力意味着: IP 协议不保证数据的可靠传输, 没有流量控制机制, 不保证传输序列(意味着 IP 数据包会在传输过程中乱序), 没有接受确认 (ACK) 机制, 也没有重传机制.主要功能IP 协议提供了两个基本的功能 寻址(Address) 和 分片(Fragmentation)...原创 2020-02-29 02:01:39 · 771 阅读 · 0 评论 -
协议簇:Ethernet Address Resolution Protocol (ARP) 解析
简介前面的文章中,我们介绍了 MAC Frame 的帧格式。我们知道,在每个 Ethernet Frame 中都分别包含一个 48 bit 的源物理地址和目的物理地址. 对于源地址很容易理解,该地址可以直接从硬件上读取. 但是对于一个网络节点,他怎么知道一个 Frame 的目的物理地址呢? 本文我们将学习 ARP 协议来解答这个问题.ARP 协议主要用来完成将网络层协议的地址(比如,IP 地...原创 2020-02-22 16:39:48 · 687 阅读 · 0 评论 -
ASN.1 学习
ASN.1章节目录简介常用数据类型2.1 常见的简单类型2.2 结构类型Basic Encoding RulesDistinguished Encoding Rules编码示例5.1 BIT STRING5.2 IA5String5.3 INTEGER5.4 NULL5.5 OCTET STRING5.6 UTCTim...原创 2018-11-17 19:08:41 · 13591 阅读 · 7 评论 -
协议簇: Media Access Control(MAC) Frame 解析
Media Access Control(MAC) Frame 解析前言千里之行,始于足下。 因为个人从事网络协议开发,一直想深入的学习一下协议族,从这篇开始,我将开始记录分享我学习到的网络协议相关的知识简介引用百度百科的描述:数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地...原创 2020-02-21 01:02:44 · 1915 阅读 · 0 评论