网络编程
文章平均质量分 97
北漂雨哥
迷惘过后的执著
展开
-
TIME_WAIT状态释疑
一、现象:登陆服务器的时候输入netstat -natup发现存在大量TIME_WAIT状态的连接tcp 0 0 127.0.0.1:3306 127.0.0.1:41378 TIME_WAITtcp 0 0 127.0.0.1:3306转载 2011-06-17 14:29:00 · 799 阅读 · 0 评论 -
GDB 单步调试
1、首先需要用gcc(g++) 对源文件进行编译生成可执行文件,并且在编译时加上选项-g,把调试信息加到目标文件中。2、假设生成的可执行文件为test,那么gdb test 可以用gdb打开test文件,然后通过break linenum设置断点。可以输入list查看源文件和行号,方便设置断点。断点设置好后就可以run命令运行到断点处了。下面是转载一、初始化输入gd转载 2013-08-12 15:58:33 · 849 阅读 · 0 评论 -
各种大型网站技术架构
引言近段时间以来,通过接触有关海量数据处理和搜索引擎的诸多技术,常常见识到不少精妙绝伦的架构图。除了每每感叹于每幅图表面上的绘制的精细之外,更为架构图背后所隐藏的设计思想所叹服。个人这两天一直在搜集各大型网站的架构设计图,一为了一饱眼福,领略各类大型网站架构设计的精彩之外,二来也可供闲时反复琢磨体会,何乐而不为呢?特此,总结整理了诸如国外wikipedia,Facebook,Yahoo!,YouT转载 2015-05-05 17:46:46 · 813 阅读 · 0 评论 -
如何实现支持数亿用户的长连消息系统 | Golang高并发案例
此文是根据周洋在【高可用架构群】中的分享内容整理而成,转发请注明出处。周洋,360手机助手技术经理及架构师,负责360长连接消息系统,360手机助手架构的开发与维护。不知道咱们群名什么时候改为“Python高可用架构群”了,所以不得不说,很荣幸能在接下来的一个小时里在Python群里讨论golang....转载 2016-01-18 16:52:45 · 13397 阅读 · 1 评论 -
网络监听函数listen()
listen()函数 是换换内容得时候了。假如你不希望与远程的一个地址相连,或者说, 仅仅是将它踢开,那你就需要等待接入请求并且用各种方法处理它们。处 理过程分两步:首先,你听--listen(),然后,你接受--accept() (请看下面的 内容)。 除了要一点解释外,系统调用 listen 也相当简单。 int listen(int sockfd, int backlog);转载 2015-07-09 15:30:22 · 3367 阅读 · 0 评论 -
SSL协议详解
http://kb.cnblogs.com/page/162080/背景介绍 最近在看《密码学与网络安全》相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL。 在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识。 1、密码学的相关概念密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性。明文转载 2016-01-05 13:23:05 · 708 阅读 · 0 评论 -
SSL与TLS的区别以及介绍
原文地址http://hengstart.iteye.com/blog/840561 SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。转载 2015-12-03 15:14:17 · 495 阅读 · 0 评论 -
linux 下man的用法
man 2 read以下来自man手册MANUAL SECTIONS The standard sections of the manual include: 1 User Commands 2 System Calls 3 C Library Functions原创 2015-12-23 13:34:40 · 449 阅读 · 0 评论 -
让你的Socket应用兼容IPv6
随着互联网越来越普及,以及物联网的兴起,IPv4地址已远远不够用,IPv6的普及将是不可避免的趋势。以前,我们的大部分socket程序几乎都是针对IPv4而开发,如果不做升级重构,那么使用IPv6地址的客户端将无法使用服务端提供的服务。如何才能像ESFramework一样,使服务端和客户端都可以同时支持IPv6了?使我们的P2P打洞也兼容IPv6了?下面我们将要点一一点出。 首先转载 2015-12-25 10:05:29 · 2885 阅读 · 0 评论 -
vmware bridge模式无法上网
解决方法:一下两处的MAC地址要一致!不一致可能无法上网。(以前linux下不一致也可以,估计用的是vmware版本的原因)VMware 11.1.0 build-2496824原创 2016-01-11 15:53:44 · 680 阅读 · 0 评论 -
浅谈防火墙对FTP的影响及故障排除
FTP是常见的基于TCP的网络服务,它使用了两个TCP连接来建立逻辑通信信道,即控制连接和数据连接。当客户端与服务器建立一个FTP会话时,使用TCP创建一个持久的控制连接以传递命令和应答。当发送文件和其它数据传输时,它们在独立的TCP数据连接上进行传递,这个连接根据需要创建和拆除。更为复杂的是,FTP标准指定了创建数据连接的两种不同方法,即正常(主动)数据连接和被动数据连接。FTP的控转载 2013-08-09 13:06:57 · 1071 阅读 · 0 评论 -
epoll ET模式 注意事项
1、server端的fd不需要设置et模式我们在创建socket成功后会有个listenfd,listenfd = socket(AF_INET, SOCK_STREAM, 0)然后会把这个fd加入epoll wait队列中,网上很多没有经过验证的代码是这样写的:ev.data.fd = listenfd;ev.events=EPOLLIN|EPOLLE转载 2013-06-27 16:36:42 · 1445 阅读 · 0 评论 -
Epoll模型详解
转自:http://blog.163.com/huchengsz@126/blog/static/73483745201181824629285/ Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后 首先,在Linux内核中,select所转载 2013-05-29 13:54:57 · 609 阅读 · 0 评论 -
惊群问题的思考
“据说”惊群问题已经是一个很古老的问题了,并且在大多数系统中已经得到有效解决,但对我来说,仍旧是一个比较新的概念,因此有必要记录一下。什么是惊群 举一个很简单的例子,当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但所有鸽子都会被惊动来争夺,没有抢到食物的鸽子只好回去继续睡觉,等待下一块食物到来。这样,每扔一块食物,都会惊动所有的鸽子,即为惊群。对于操作系转载 2013-06-08 18:42:49 · 963 阅读 · 0 评论 -
高负载高并发应用 参考索引
集群理论篇1.Linux 集群http://www.ibm.com/developerworks/cn/linux/theme/cluster.html2.Linux 集群大全 -- 哪种群集适合您?http://www.ibm.com/developerworks/cn/linux/cluster/lw-clustering.html3.基于 linux 的集群系统转载 2013-06-13 20:11:41 · 859 阅读 · 0 评论 -
nat 穿透原理
一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基本上没有人会告诉你如何使用TCP协议去穿透(甚至有的人会直接告诉你TCP协议是无法实现穿透的)。但是,众所周知的是,UDP是一个无连接的数据报协议,使用它就必须自己维护收发数据包的完整性,这常常会大大增加程序的复杂度,而且一些程序由于某些原因,必须使用TCP协议,这样就常常令一些开发TCP网络程序的人员“谈穿透色变”。那么,使用T转载 2013-06-07 15:02:59 · 790 阅读 · 0 评论 -
P2P之UDP穿透NAT的原理与实现 [转]
P2P之UDP穿透NAT的原理与实现(附源代码) 作者:shootingstars (有容乃大,无欲则刚) 日期:2004-5-25出处:P2P中国(PPcn.net) 原文 P2P 之 UDP穿透NAT的原理与实现(附源代码)原创:shootingstars参考:http://midcom-p2p.sourceforge.net/draft-ford-midc转载 2013-06-07 16:02:54 · 1657 阅读 · 0 评论 -
实战 SSH 端口转发
https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/简介: 通过本文的介绍,读者可以从中了解到如何应用 SSH 端口转发机制来解决日常工作 / 生活中的一些问题。学会在非安全环境下使用端口转发来加密网络应用,保护个人隐私以及重要商业信息。同时也能够用此技术解决工作中一些常见问题,例如解决防火墙及网络应用本身带来的一些限转载 2013-06-07 16:58:17 · 7887 阅读 · 1 评论 -
linux服务器出现大量的TIME_WAIT状态的TCP连接的处理办法
根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为4分钟,即240秒,TIME_WAIT状态下的socket不能被回收使用. 具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量转载 2013-06-24 19:05:34 · 3482 阅读 · 0 评论 -
TCP状态转换
http://blog.csdn.net/zhangbiao1981/article/details/4152327TCP建立连接协议(三次握手)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给转载 2013-06-25 10:15:51 · 556 阅读 · 0 评论 -
Nagle算法
Nagle算法Nagle算法是以他的发明人John Nagle的名字命名的,它用于自动连接许多的小缓冲器消息;这一过程(称为nagling)通过减少必须发送包的个数来增加网络软件系统的效率。Nagle算法于1984年定义为福特航空和通信公司IP/TCP拥塞控制方法,这使福特经营的最早的专用TCP/IP网络减少拥塞控制,从那以后这一方法得到了广泛应用。Nagle的文档里定义了处理他所转载 2013-06-27 16:33:29 · 577 阅读 · 0 评论 -
socket errno
在linux进行非阻塞的socket接收数据时经常出现Resource temporarily unavailable,errno代码为11(EAGAIN),这表明你在非阻塞模式下调用了阻塞操作,在该操作没有完成就返回这个错误,这个错误不会破坏socket的同步,不用管它,下次循环接着recv就可以。 对非阻塞socket而言,EAGAIN不是一种错误。在VxWorks和Windows上,EAGA转载 2013-07-04 10:52:56 · 945 阅读 · 0 评论 -
机器连接数
记得以前一台机器只能建立65535个连接的这种想法一直长时间占据着思维方式,为什么会有这种想法呢,估计最早起源于学校的port的short(16位65535)吧。一台机器connect同一IP,port的最大连接数嗯,既然一台机器只能最大建立65535个连接,那当然” 为什么一台机器connect同一个IP,port的tcp连接数不能超过65535个”这个问题的答案是对的,没有为什转载 2016-01-13 13:20:33 · 1211 阅读 · 0 评论