
网络编程
文章平均质量分 70
yaocoder
做一个深懂业务的科技人,搭建业务与科技的桥梁!
展开
-
谈谈网络编程
(本文针对的是windows,linux下基于c++语言的网络编程) 我从事的是企业级的软件开发,纵观当今的企业级软件,单机模型已经越来越少,更多的是C/S模型,目前client和server之间通信是通过socket技术来实现的。 上面提到了socket技术,自然要学习TCP/IP协议,对于TCP/IP的理论,学习Richard的《TCP/IP详解 卷1:协议原创 2013-11-05 16:31:38 · 691 阅读 · 0 评论 -
TCP/IP协议栈中,为什么选择IP层负责分片?
这是知乎上被邀请的一个问题TCP/IP协议栈中,为什么选择IP层负责分片?,我从没思考过这个问题甚至不认为这是个有意义的问题,但是当我研究思考后却发现这么一个小问题也许正是当初设计TCP/IP协议栈时的一种考量。TCP/IP是一个分层协议,协议栈的最底层是链路层,接下来依次是网络层,传输层,应用层。可以看见链接层负责建立电路连接,是整个网络的物理基础;原创 2013-12-06 10:14:35 · 1082 阅读 · 0 评论 -
利用libevent进行网络异常检查
《网络编程释疑之:TCP半开连接的处理》这篇文章主要讲述了网络异常的出现、以及如何在服务端解决存在的网络异常。同时,客户端能否及时检测到自身的网络异常(比如网络禁用,网线断开......)也同样影响着客户端的正常逻辑,下面我就通过自己的实验和实践来给大家说明下。场景是这样的,客户端和服务端建立起一个长连接,并且通过一个心跳来维持上线状态、同时也为了解决上面所说的TCP半开连接问题。客户端在原创 2014-01-06 16:21:53 · 3764 阅读 · 0 评论 -
网络编程释疑之:同步,异步,阻塞,非阻塞
一讲到网络编程的I/O模型,总会涉及到这几个概念。问了很多人,没几个能清晰地讲出他们之间的区别联系,甚至在网络上也有很多不同的观点,也不知是中国文字释义的博大精深,还是本来这几个概念就是绕人不倦。今天我也来给大家讲解一下我对这几个概念的理解。既然网络上众说纷纭,不如找个权威参考一下,这个权威就是《UNIX网络编程:卷一》第六章——I/O复用。书中向我们提及了5种类UNIX下可用的I/O模型:阻塞式原创 2013-11-05 16:33:27 · 695 阅读 · 0 评论 -
网络编程释疑之:TCP半开连接的处理
熟悉基于TCP协议进行linux高性能、高并发服务端编程的朋友肯定应该知道每个文件描述符及其所占的资源对并发量的影响。在这种7*24甚至*365不间断运行的服务器上,一个描述符被浪费,两个被浪费...如果被浪费的多了,那还何谈高并发,高性能。除去文件描述被正常占用的情况外,是什么导致了我们可用的文件描述符越来越少呢?什么是半开连接?当客户端与服务器建立起正常的TCP连接后,如果客户主机掉线(网线断原创 2013-11-05 16:33:29 · 703 阅读 · 0 评论 -
UDT协议深入解析
将近两年以前因为想选择一个兼顾TCP协议的可靠性和UDP协议的高效性来进行我们某种数据的传输曾经选择过UDT协议,也进行了一段时间的学习、实践。但最终由于不适合我们的业务场景放弃了它,但它的实现原理、代码实现、拓展使用的优秀给我留下了很深刻的印象,今天翻出自己曾经的一篇总结笔记来和大家一起回顾下UDT协议。UDT协议是什么?是一种基于UDP的数据传输协议(UDP-based Dat原创 2014-07-28 19:44:43 · 4845 阅读 · 1 评论 -
客户端网络库实现真的很简单吗?
(注:本文所讲的网络协议只针对TCP协议)背景:开发一个C/S的应用势必需要服务端和客户端的适配,包括网络协议、数据传输格式、业务处理的适配。由于服务端承载着大量的客户端,需要高并发、高性能、高可靠性,在我们的认知里往往认为服务端的网络模型和架构设计很复杂。但是客户端嘛,无非就是建立网络连接,发个请求收个回复如此简单。所以在工作中经常会出现有些客户端处理界面和业务的同事对平台开发者说,你做原创 2014-08-18 07:55:14 · 1718 阅读 · 1 评论 -
我的网络编程之旅——P2P相关话题
最早接触P2P是大学时利用BitTorrent下载电影和游戏,当时我们只知道这个软件叫bt,给女性同学介绍此软件为什么会有如此高效时,简单讲述了一下P2P网络的特点后,还特意强加一句所以这个软件叫变态(bt)软件,现在想起来都好笑,完全误解了BitTorrent软件名的由来。近两年的工作中因为要涉及到点对点的视频传输,用户对用户的视频传输,对这块也曾经做了较为系统的学习和研究,今天拿出来和大家简要原创 2014-10-20 08:37:03 · 792 阅读 · 0 评论 -
HTTP事务的延迟—TCP的影响
导读:最近看完了大部头著作《HTTP权威指南》,对于此类指南类、手册类图书,往往让我们联想到的就是枯燥无味的使用讲解、技术指标讲解......使人头大。但是这本书却让我觉得读起来很“清新”,一方面作者用了浅显易懂的语言和大量的图示让我们很容易知所以然,另一方面应该是我一直以来对网络编程的兴趣和此书的内容有很大的契合点,今天要讲的内容也是与自己的兴趣有关的HTTP协议中有关TCP的部分,是从书中第四原创 2015-04-05 21:09:55 · 1303 阅读 · 0 评论 -
网络编程释疑之:TCP协议的“流”特性
与网络开发相关的招聘时最常被问起的问题是TCP和UDP的区别,现在几乎是道上混的都能答出来几点“比如TCP是面向连接的,UDP是无连接的;TCP是可靠的,UDP是不可靠的;”,其中还有一点是“TCP是面向数据流的协议,UDP是面向数据报的协议”,接下来我通常就会问这么一个问题,假设客户端一次完全发送这么一串字符str = "hello world!"到服务端,在服务端一次read,并且read长度原创 2013-12-12 18:54:43 · 610 阅读 · 0 评论 -
网络编程释疑之:TCP的TIME_WAIT状态在服务器开发中的影响?
在进行TCP高并发服务器开发时,有些规则仿佛是约定俗成的,很多朋友会依据这些规则去做,比如高并发TCP服务器中进行主动关闭的一方最好是客户端、服务器端程序最好启用SO_REUSEADDR选项,但是很多人却不知所以然,我们为什么要这么做呢?先上图可以看到执行主动关闭端和被动关闭端的各个阶段的状态,今天咱的重点就是TIME_WAIT状态,可以看出TIME_WAIT状态是执行原创 2013-12-09 20:39:12 · 1181 阅读 · 0 评论 -
libevent入门教程:Echo Server based on libevent
花了两天的时间在libevent上,想总结下,就以写简单tutorial的方式吧,貌似没有一篇简单的说明,让人马上就能上手用的。首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的-。-(当然,如果想好好用libevent,看看还是很有必要的),转载 2013-11-05 16:32:19 · 610 阅读 · 0 评论 -
网络编程释疑之:单台服务器上的并发TCP连接数可以有多少
曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了。我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来说已经远远足够了,但是对于一些拥有很大用户基数的互联网公司,往往面临的并发连接数是百万,千万,甚至腾讯的上亿(注:QQ默认用的UDP协议)。虽然现在的集群,分布式技术可以为我们将并发负载分担在多台服务原创 2013-11-05 16:33:31 · 832 阅读 · 0 评论 -
我读过的最好的epoll讲解--转自”知乎“
作者:蓝形参,Geek 伪技术宅 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要转载 2013-11-05 16:31:43 · 558 阅读 · 0 评论 -
《TCP/IP详解:卷1》之TCP/UDP总结
对于《TCP/IP详解:卷1》这本书来说也算是我的老朋友了,在之前做协议分析项目时曾经系统的看过,在之后开发网络库,做入侵检测时也时常翻阅,但是对书中内容的记忆却比较混乱,也常常忘记一些重要内容,也许是之前自己未作总结的缘故,这次利用做另一个网络项目的机会,又仔细看了一下书中有关TCP/UDP的章节,然后用思维导图梳理了协议的特点和自己的思路,以用来加深记忆,如图:TCP协议650) this.w原创 2013-11-05 16:31:51 · 615 阅读 · 0 评论 -
TCP拥塞控制(RFC)
本备忘录的状态 本文档讲述了一种Internet社区的Internet标准跟踪协议,它需要进一步进行讨论和建议以得到改进。请参考最新版的“Internet正式协议标准” (STD1)来获得本协议的标准化程度和状态。本备忘录的发布不受任何限制。版权声明Copyright (C) The Internet Society (2001).摘要: 这篇文档定义了TCP的四种相互交织转载 2013-11-05 16:31:53 · 928 阅读 · 0 评论 -
我的网络编程之旅
首先给大家推荐下Markdown,我想用过github的同僚一定很熟悉了,这篇文章的排版就是使用的markdown,以后我们不必再去适应各个博客系统自己繁杂的排版方式了。网络编程是什么?给大家从招聘信息上截取几段内容:熟悉Socket编程,熟悉Tcp/Ip协议栈;熟悉TCP/IP协议、UDP协议,有相关的协议开发经验;熟悉网络编程/多线程编程技术;大家应该很清晰了吧,关键词就是TCP/IP,Soc原创 2013-11-05 16:32:46 · 792 阅读 · 0 评论 -
济南第二期技术沙龙我的分享-网络开发那些事
我昨天在OSChina济南社区技术沙龙上分享的话题《网络开发那些事》,话题涵盖:协议分析、高性能网络编程、NAT穿透、p2p流媒体传输..., 随便截几张PPT,感兴趣的朋友可以下载完整版:)650) this.width=650;" src="http://img1.51cto.com/attachment/201308/190552778.jpg" style="float:none;" ti原创 2013-11-05 16:33:18 · 1189 阅读 · 0 评论 -
网络编程常见问题总结
网络编程常见问题总结 串讲(一) 网络编程常见问题总结 6 I& I! E- x8 Z+ p- U- B 在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出. . e3 Y0 @* _- e1 G- B% R 对于网络编程的更多详细说明建议参考下面的书籍 《UNIX网络编程》 《TCP/IP 详解》转载 2013-11-05 16:31:47 · 1085 阅读 · 0 评论 -
网络传输数据格式的选择
对于客户端和服务端的数据传输通常会有以下几点考虑:1.网络数据大小——占用带宽,传输效率:虽然对单个用户来说,数据量传输很小,但是对于服务器端要承受众多的高并发数据传输,必须要考虑到数据占用带宽,尽量不要有冗余数据,这样才能够少占用带宽,少占用资源,少网络IO,提高传输效率;2.网络数据安全性——敏感数据的网络安全:对于相关业务的部分数据传输都是敏感数据,所以必须考虑对部分传输数据进行加密;3.编原创 2013-11-05 16:32:00 · 1321 阅读 · 0 评论 -
网络编程释疑之:TCP连接拔掉网线后会发生什么
背景:前些天团队在进行终端设备和服务器端长连接业务的测试时,发现了这么一个情况:在拔掉设备端的网线后,再插上网线,有时可以继续正常的进行长接连请求,而且用的还是拔掉网线之前的那个长连接。但是有时却不能继续正常的长连接请求,需要重新建立一个新的长连接。让我尤感诧异的是第一种网线断开再插上后长连接可以恢复的情况,彻底颠覆了我一直抱有的一个所谓的“物理连接”的观念。究竟怎么回事,我们来探个究竟。原创 2015-04-05 21:03:46 · 6516 阅读 · 0 评论