【前提】客户端采用tcp阻塞模式【现象】与相机设备建立连接后,偶尔出现几次突然就收不到相机发过来的数据;几经排查,怀疑跟网络波动有关,于是通过插拔网线来模拟网络波动,果然bug复现。 【原因】(个人理解)每一个节点(包括…
分类:TCP
nginx做tcp代理服务器
虽然做一个tcp代理也不是什么难事,不过如果直接拿来就可以用,也是一个不错的选择。nginx自1.9版本以后,就支持了tcp代理了,配置很简单,修改nginx.conf里的配置,增加 stream { upstream …
DNS域名解析使用的是TCP协议还是UDP协议?
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。 先简单介绍下TCP与UDP。 TCP是一种面向连…
移动端IM系统的协议选型:UDP还是TCP?
1、前言 对于有过网络编程经验的开发者来说,使用何种数据传输层协议来实现数据的通信,是个非常基础的问题,它涉及到你的第一行代码该如何编写。 从PC时代的IM开始,IM开发者就在为数据传输协议的选型争论不休(比如:《为什么…
使用 libev 构建 TCP 响应服务器(echo server)的简单流程
请注意这是 libev 而不是 libevent 的文章!这篇文章主要是使用具体的例子,说明如何使用 libev。网上不少文章都是照抄示例,一点用都没有……本文将示例的代码精简一下,补上说明;大家都懂的部分就不赘述了。需…
TCP三次握手四次挥手
前言 昨天腾讯笔试考了四次握手的状态名词,虽然对过程有所了解,但是没有总结其中的状态变化,系统的复习下 三次握手 所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总…
Libevent实现TCP服务循环监听
目标 建立一个简单的tcp服务,可持续的监听客户端的连接和请求 细节 libevent stream socket EV_READ | EV_PERSIST 代码 要义libevent对stream_socket_ser…
EasyProxy,简单易用的tcp代理
EasyProxy,简单易用的tcp代理 最近工作中遇到了golang的项目,稍稍对其产生了点兴趣,打算认真学习下,正巧在搭建mysql主备环境的时候发现如果用一个代理程序的话自己测试会方便很多(主要还是为了造轮子),于…
理解 TCP(二):报文结构
更好阅读体验:《理解 TCP 和 UDP》— By Gitbook TCP 是面向字节流的,但传送的数据单元却是报文段。 什么是报文? 例如一个 100kb 的 HTML 文档需要传送到另外一台计算机,并不会整个文档直接…
Linux下Socket通信(TCP实现)
近期在做的项目中,涉及到了进程间数据传输,系统的原本实现是通过管道,但是原有的实现中两个进程是在同一台机器,而且两个进程的关系为父子关系,而我们要做的是将其中一个进程移植到服务器上,因此两个进程要分开,所以管道必然是不可…
TCP的三次握手以及重置(Reset)
在最近的工作中需要对同一个域名下的源站同时发起多次请求,有时甚至达到了6000次,发生了很严重的性能问题,追查了下原因是被浏览器(Chrome)stalled了,因为浏览器只支持对同一个域名下保持6个连接,拥有更多连接时…
HttpClient出现TCP连接异常关闭发送RST包
问题现象 在与第三方系统通过http交互数据的过程中,抓包发现每次TCP连接都是异常关闭,报文如下: 可以看到,由我方发起3次握手建立连接,然后发送http请求,对方响应数据,我方ACK后直接发RST包(图中蓝色阴影部分…
Python 的异步 IO:Asyncio 之 TCP Client
关于 Asyncio 的其他文章: Python 的异步 IO:Asyncio 简介 Python 的异步 IO:Aiohttp Client 代码分析 如果不知道 Asyncio 是什么,先看「Asyncio 简介」那…
TCP keepalive 和 http keep-alive
keepalive机制 TCP keepalive 概念 在使用TCP长连接(复用已建立TCP连接)的场景下,需要对TCP连接进行保活,避免被网关干掉连接。在应用层,可以通过定时发送心跳包的方式实现。而Linux已提供的…
【自问自答】TCP一次数据包最大负载是多少?真的是65495byte吗?
最近在玩wireshark抓包,抓了一下文件上传,发现有的数据包达到了16312byte,于是产生了一个疑问一个数据包最大负载能达到多少? 查了一通资料,找到了65495byte这个数字,这个数字有什么依据呢? 是这样算…