网络协议
文章平均质量分 80
messiran10
这个作者很懒,什么都没留下…
展开
-
TCP连接的建立与关闭
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:转载 2016-03-31 11:17:08 · 358 阅读 · 0 评论 -
epoll使用详解(精髓)
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且转载 2016-07-10 19:11:22 · 282 阅读 · 0 评论 -
HTTP协议解析
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模转载 2016-07-10 09:41:02 · 326 阅读 · 0 评论 -
TCP管理的4种定时器
TCP共使用以下四种计时器,即重传计时器、坚持计时器、保活计时器和时间等待计时器。这几个计时器的主要特点如下: 1、重传计时器 当TCP发送报文段时,就创建该特定报文段的重传计时器。可能发生两种情况: (1)、若在计时器截止时间到(通常是60秒)之前收到了对此特定报文段的确认,则撤销此计时器。 (2)、若在收到了对此特定报文段的确认之前计时器截止期到,则重传转载 2016-06-01 20:07:18 · 576 阅读 · 0 评论 -
TCP建立连接需要三步握手的原因
谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。转载 2016-05-19 20:41:16 · 895 阅读 · 0 评论 -
TCP慢启动、拥塞控制、快速重传、快速恢复
转自 http://blog.csdn.net/yusiguyuan/article/details/22847787 此君为吾辈楷模TCP的拥塞控制1. 拥塞:即对资源的需求超过了可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。 拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥转载 2016-05-31 21:43:29 · 4094 阅读 · 0 评论 -
TCP的拥塞避免、超时重传、快速重传、快速恢复
转自:http://blog.csdn.net/itmacar/article/details/12278769感谢博主的辛勤成果!为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Re转载 2016-05-31 21:01:10 · 3709 阅读 · 0 评论 -
TCP中出现RST包的几种情况
应该没有人会质疑,现在是一个网络时代了。应该不少程序员在编程中需要考虑多机、局域网、广域网的各种问题。所以网络知识也是避免不了学习的。而且笔者一直觉得TCP/IP网络知识在一个程序员知识体系中必需占有一席之地的。在TCP协议中RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST转载 2016-05-26 22:45:07 · 10745 阅读 · 0 评论 -
linux下利用线程池构建高并发server
最近在读《UNIX网络编程》,但是只读书而不实践是远远不行的。在阅读完线程池那块之后,自己动手写了一个简单的基于线程池的server/client程序。程序如下:#include#include#include#include#include#include#include#includeint clifd[32];#define thread_num原创 2016-04-16 14:00:31 · 591 阅读 · 0 评论 -
epoll和select的区别
一篇好文,介绍epoll和select很清楚(问题引入,联系,区别以及用法)。后面它给的两个链接,也很好。-------------------------------先说下本文框架,先是问题引出,然后概括两个机制的区别和联系,最后介绍每个接口的用法一、问题引出 联系区别问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一个描转载 2016-04-10 15:58:49 · 531 阅读 · 0 评论 -
C++中placement new操作符(经典)
placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { return p; } 首先我们区分下几个容易混淆的关键词:new、转载 2016-04-13 11:16:25 · 408 阅读 · 0 评论 -
UNIX网络编程之SO_REUSEADDR关键字
1、一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。 SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。server程序总是应该在调用bind()之前设置SO_REUSEADDR套接字选项。TCP,先调用close()的一方会进入TIME_WAIT状态2、转载 2016-04-05 14:42:31 · 449 阅读 · 0 评论 -
《深度探索C++对象模型》笔记(一)
2.1默认构造函数. C++标准是这么说的:对于class X,如果没有任何user-decleared-constructor,那么会有一个default constructor被暗中(implicitly)声明出来。。。。一个被暗中声明出来的default constructor将是一个trival(无用的) constructor。 如果class X转载 2016-04-05 10:49:51 · 344 阅读 · 0 评论 -
Unix--select/epoll
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的 ,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝转载 2016-04-03 15:10:15 · 265 阅读 · 0 评论 -
std::map的机制
转自 http://blog.csdn.net/solstice/article/details/8521946陈硕 (chenshuo.com)2013-01-20std::set/std::map (以下用 std::map 代表) 是常用的关联式容器,也是 ADT(抽象数据类型)。也就是说,其接口(不是 OO 意义下的 interface)不仅规定了操作的功能,还规定转载 2016-07-30 14:01:46 · 8599 阅读 · 0 评论