
TCP与服务器
文章平均质量分 77
ysu108
这个作者很懒,什么都没留下…
展开
-
论坛设计
问题的引出一个简单的论坛系统,以数据库储存如下数据: 用户名,email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容。 每天论坛访问量300万左右,更新帖子10万左右。 请给出数据库表结构设计,并结合范式简要说明设计思路。只是对问题的一点总结和自己的一些看法,原问题的论坛链接http://www.iteye.com/topic/364016,一个方案http:原创 2012-05-05 17:33:17 · 2257 阅读 · 0 评论 -
网络知识总结
去现场对接涉及到很多网络设置的问题,总结下网路问题。1.私网IP地址:10.0.0.0-10.255.255.255;172.16.0.0-172.31.255.255;192.168.0.0-192.168.255.255。 这个是自己划分的,一般来说如果局域网机器数量不多,不超过253台机子,那么一般用192.168划分,子网掩码255.255.255.0。但是并不是私网地址一定是上原创 2013-09-09 14:28:31 · 1091 阅读 · 0 评论 -
UDP组播
UDP组播是采用的无连接,数据报的连接方式,所以是不可靠的.也就是数据能不能到达接受端和数据到达的顺序都是不能保证的.但是由于UDP不用保证数据的可靠性,所有数据的传送速度是很快的.1. 组播的“根” 组播从概念上来讲分为两部分:控制部分和数据部分。控制部分决定着组播的对象的组织方式。而数据部分决定了数据的传输方式。 控制层有“有根”,“无根”两种情况。对于有根的控制层,存在着一个转载 2014-02-28 14:20:43 · 1849 阅读 · 1 评论 -
定时器队列
定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持,但使用场景的不同,对定时器的实现考虑也不尽相同,本文讨论了在 Linux 环境下,应用层和内核层的定时器的各种实现方法,并分析了各种实现方法的利弊以及适宜的使用环境。 首先,给出一个基本模型,定时器的实现,需要具备以下几个行为,这也是在后面评判各种定时器实现的一个基转载 2014-03-06 18:42:38 · 3366 阅读 · 0 评论 -
TCP/IP学习(四)TCP缓冲区大小及限制
这个问题在前面有的部分已经涉及,这里在重新总结下。主要参考UNIX网络编程。(1)数据报大小IPv4的数据报最大大小是65535字节,包括IPv4首部。因为首部中说明大小的字段为16位。IPv6的数据报最大大小是65575字节,包括40字节的IPv6首部。同样是展16位,但是IPv6首部大小不算在里面,所以总大小比IPv4大一个首部(40字节)。(2)MTU许多网络有一个可由硬原创 2012-07-19 18:45:52 · 63764 阅读 · 3 评论 -
多线程中condition wait
一般在多线程编程中都会用到condition_wait,在linux下也就是pthread_cond_wait这个系统调用,大多高性能的多线程程序也离不开这基本的东西。在看线程调度代码的时候突然想起这个方法,一直用ace,很操作系统的东西都忘得差不多了。条件变量与互斥量一起使用从可以允许线程以无竞争的方式等待特定的条件发生。为什么必须一起使用呢?1)假如当某个资源满足了一定的条件时它要发送原创 2014-08-30 16:17:16 · 10456 阅读 · 0 评论 -
Real-World Concurrency
Know your cold paths from your hot paths. If there is one piece of advice to dispense to those who must develop parallel systems, it is to know which paths through your code you want to be able to e翻译 2014-09-26 14:14:08 · 4060 阅读 · 0 评论 -
单机tcp并发连接
tcp单机连接数目限制原创 2015-07-09 14:51:43 · 2577 阅读 · 0 评论 -
使用Accept的完成端口
/////////////////////////////////////////////////// IOCPDemo.cpp文件 调试通过//#include "WSAInit.h"#include #include #include // 初始化Winsock库//CWSAInit theSock;#define BUFFER_SIZE 1024转载 2015-08-07 15:04:37 · 1264 阅读 · 0 评论 -
完成端口(Q&A)
程序设计上,线程不怕多,怕切换的频繁,即使有多于cpu个数的线程,例如使用完成端口的时候,总会有个主线程,但这个主线程在配置完完成端口后就彻底的休息了(可以是join或信号量方式),cpu一直工作在完成端口的工作线程上,也不会频繁切换。为什么完成端口中工作线程的数目为cpu*2?设计的目的是为了让cpu满负荷工作。会不会造成额外的线程切换?会,但正常情况下不会,这里异常就是指处理线程进入阻塞状态(原创 2015-08-10 16:59:43 · 1404 阅读 · 0 评论 -
使用AcceptEx方法的完成端口
#include #include #include #include //微软扩展的类库 using namespace std; #define SEND 0 #define RECV 1 #define ACCEPT 2 #define DATA_LENGTH 1000 //单句柄数据定义 typedef struct _PER_HANDLE_DATA转载 2015-08-07 14:54:08 · 3925 阅读 · 0 评论 -
12306简单设计
任何设计都要分析问题需求,找到瓶颈。12306如果并发很少,那么就是一个很普通的购物商城的模型。单机器可能就可以解决了。但是由于12306平时访问量很大,而且部分时间段访问量会突然增大所以基本上讨论的问题就集中在以上两点。看到风云12年的一篇博客上有当时对此问题的分析。提出的方法如下: “ 我们设置几个网关服务器,用动态 DNS 的方式,把并发的订票请求分摊开。类比现实的话,就是把人分流到原创 2015-11-03 14:42:09 · 1325 阅读 · 0 评论 -
完成端口
完成端口的最大优点在于其管理海量连接时的处理效率,通过操作系统内核的相关机制完成IO处理的高效率。注意:完成端口的优点在于管理连接量的巨大,而不是传输数据量的巨大。在这种场合最适合用完成端口:连接量巨大,且每个连接上收发的数据包容易比较小,通常只有几K甚至不到1K的字节。 完成端口基于监视线程+消息队列,只不过是内核实现的。引入完成端口,则通过在内核开启线程,在内核级别对原创 2013-08-01 10:58:15 · 1517 阅读 · 0 评论 -
TCP/IP学习(三)TCP连接的建立与终止
先看看TCP的状态变迁图(TCP/IP详解上面的原图,来自Google)下面就图中涉及到的问题做一些说明。 TCP连接的建立与终止 下面是TCP连接建立与终止的时候的时序图:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务原创 2012-07-18 16:55:03 · 5307 阅读 · 0 评论 -
epoll和select区别
先说下本文框架,先是问题引出,然后概括两个机制的区别和联系,最后介绍每个接口的用法一、问题引出 联系区别问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一个描述符上面,另外的描述符虽然有数据但是不能读出来,这样实时性不能满足要求,大概的解决方案有以下几种:1.使用多进程或者多线程,但是这种方法会造成程序的复杂,而且对与进程与线程的创建维护也需要原创 2012-05-16 21:38:44 · 64900 阅读 · 7 评论 -
TCP/UDP 区别
key:TCP是一种面向连接的、可靠的、字节流服务 1.面向链接:TCP面向链接,面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须通过三次握手先建立一个TCP连接。在一个TCP中仅有两方彼此通信,多播和广播不能用于TCP。UDP是不可靠的传输,传输前不需要建立链接,可以应用多播和广播实现一对多的通信。 2.可靠性:TCP提供端到端的流量控制原创 2012-06-06 14:40:56 · 3818 阅读 · 0 评论 -
TCP/IP学习(六)拥塞控制与定时器
TCP的交互数据流和成块数据流经受时延的确认为什么要分这两类呢?如果按照分析数量来计算,约有一半的TCP报文段包含成块数据(FTP、电子邮件),另一半则包含交互数据(Telnet和Rlogin)。成块的报文段基本上都是满长度的,而交互数据则小的多,可能一个交互过程只发送一个字节的数据,而需要传输20个IP的头,20个字节的TCP的头,这个时候网络的利用率就会很低。例如Rlogin需要远程系原创 2012-10-01 14:55:00 · 2052 阅读 · 0 评论 -
TCP/IP学习(二)IP、TCP、UDP协议
一、概述在这里只是简单说明下IP、TCP、UDP数据报报头和各个字段的简单意义,像IP选路、TCP链接的建立和终止等复杂的问题,以后在做总结。首先是大概介绍下各个协议,然后分别的说明协议报头。1.IP提供一种不可靠、无连接的数据报传送服务。不可靠:不能保证IP数据报能够成功的到达目的地,如果发生某种错误,如路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃数据报,然后发送ICM原创 2012-06-06 21:46:25 · 1703 阅读 · 0 评论 -
IPv6
先随便写一点,大多参考UNIX网络编程,以后在更新这个。首部格式如下:介绍下几个字段的意思:4为版本(version)字段为6,这个没啥好说的,不过这个字段好像没什么用,因为IPv4和IPv6不兼容,在数据链路层都已经加以区分了,比如以太网数据链路层的数据帧,已经用不同协议族的协议帧来区分开来了。20位流标签(flow label)。貌似这个字段的用途还有待确认,可以用内核或者原创 2012-10-05 10:22:40 · 5998 阅读 · 0 评论 -
unp实现回射服务器
linux下的udp套接字实现的回射服务器,也就是客户发送一段,服务器把这段返回给客户。客户端#include #include #include #include #include #define SERV_PORT 5566#define MAX_MESG_SIZE 1024using namespace std;int main(){原创 2012-10-07 14:38:45 · 1434 阅读 · 0 评论 -
linux 套接字接口
大多参考unp,算个总结一、套接字地址结构1)IPv4套接字地址IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在头文件里面,下面是POSIX定义struct in_addr{ in_addr_t s_addr; //32bit IPv4 address, network byte ordered};这个结构只有一个32位的无原创 2012-10-07 14:34:51 · 1429 阅读 · 0 评论 -
tcp实现回射服务器
linux下的tcp套接字实现的回射服务器,也就是客户发送一段,服务器把这段返回给客户。客户端#include #include #include #include #include #define SERV_PORT 5566#define CLIENT_PORT 5567#define MAX_MESG_SIZE 1024using namespac原创 2012-10-07 15:46:58 · 2711 阅读 · 0 评论 -
TCP/IP学习(一)基本概念
学习TCP/IP的总结~1.为什么要分链路层,网络层,运输层,应用层这四层主要依据是各层的功能,链路层主要负责处理物理接口的细节,网络层处理分组在网络中的活动(IP到IP,尽可能快但不可靠),运输层主要提供应用程序端到端的服务(端口到端口,并且可靠),应用层处理特定的应用程序细节。链路协议主要有ARP和RARP,网络层协议主要有ICMP,IGMP和IP协议,运输层协议主要有TCP和UD原创 2012-05-09 13:58:33 · 1715 阅读 · 1 评论 -
TCP/IP学习(五)ICMP、Ping、Tracerout和Telnet
ICMPICMP协议经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP使用)。一些ICMP报文把差错报文返回给用户进程。ICMP是在IP数据报内被传输的,协议代码为1。所有ICMP报文的前4个字节都是一样的,第一个字节为类型(常见的有0,ping的回显应答。3,目的不可达。8,ping请求回显。11,超时)第二个字节为代原创 2012-07-22 14:45:18 · 6111 阅读 · 2 评论 -
高效的服务器程序
更一般的来说,是对每秒要处理大量请求程序的一种性能讨论。优化性能方法不可能说尽,也要具体问题具体分析,只是总结下常用的几点。http://blog.sina.com.cn/s/blog_466c66400100bi2n.html~type=v5_one&label=rela_prevarticle这篇博客提出了好多方法,但是感觉分类上有点不妥,大概从三方面来分的一是节约cpu, 二是如何使用内原创 2012-05-17 22:09:41 · 3317 阅读 · 1 评论