自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 网络:TCP通讯之 time_wait 状态

3. TIME_WAIT状态        经过前面的铺垫,终于要讲到与本文主题相关的内容了。 ^_^        从TCP状态迁移图可知,只有首先调用close()发起主动关闭的一方才会进入TIME_WAIT状态,而且是必须进入(图中左下角所示的3条状态迁移线最终均要进入该状态才能回到初始的CLOSED状态)。        从图中还可看到,进入TIME_WAIT状态的TCP连接需

2017-05-28 14:35:20 1040

转载 TCP的定时器系列 — 零窗口探测定时器(有图有代码有真相!!!)

转载主要内容:零窗口探测定时器的实现。内核版本:3.15.2我的博客:http://blog.csdn.net/zhangskd 出现以下情况时,TCP接收方的接收缓冲区将被塞满数据:发送方的发送速度大于接收方的接收速度。接收方的应用程序未能及时从接收缓冲区中读取数据。 当接收方的接收缓冲区满了以后,会把响应报文中的通告窗

2017-05-28 14:04:38 1876

转载 TCP的定时器系列 — 保活定时器(有图有代码有真相!!!)

转载主要内容:保活定时器的实现,TCP_USER_TIMEOUT选项的实现。内核版本:3.15.2我的博客:http://blog.csdn.net/zhangskd 原理 HTTP有Keepalive功能,TCP也有Keepalive功能,虽然都叫Keepalive,但是它们的目的却是不一样的。为了说明这一点,先来看下长连接和短

2017-05-28 14:02:18 890

转载 TCP的定时器系列 — SYNACK定时器

转载主要内容:SYNACK定时器的实现,TCP_DEFER_ACCPET选项的实现。内核版本:3.15.2我的博客:http://blog.csdn.net/zhangskd 在上一篇博客中,已经连带介绍了SYNACK定时器的创建和删除,所以本文直接从它的激活和超时处理函数写起。 激活 在三次握手期间,服务器端收到SYN包

2017-05-28 13:58:13 581

转载 TCP的定时器系列 — 超时重传定时器(有图有代码有真相!!!)

转载主要内容:TCP定时器概述,超时重传定时器、ER延迟定时器、PTO定时器的实现。内核版本:3.15.2我的博客:http://blog.csdn.net/zhangskd Q:一条TCP连接会使用多少个定时器呢?A:目前的答案是9个:超时重传定时器,持续定时器,ER延迟定时器,PTO定时器,ACK延迟定时器,SYNACK定时器

2017-05-28 13:55:55 1527 1

原创 网络:TCP维护安全可靠机制提供的定时器

一、TCP为维护安全可靠机制提供了七大定时器 1、连接建立(connectionestablishment)”定时器:       在发送SYN报文段建立一条新连接时启动。如果在75秒内没有收到响应,连接建立将中止。 2、重传(retransmission)定时器:       在TCP发送某个数据段时设定。如果该定时器超时而对端的确认还未到达,TCP将重传该数据段。重传定

2017-05-28 12:31:57 953

原创 网络:传输层 TCP报文格式解析

一、TCP报文格式1概述为了提供可靠的数据传输,TCP报文首部字段有较多的字段,TCP报文格式如下图:图2 TCP报文格式16位源和目标端口(16位)用于多路复用/多路分解来自或送至上层应用的数据,可以这样理解,端口用来标识同一台计算机的不同进程。16位源端口号(Source Port):16位的源端口字段包含初始化通信的端口号。源端

2017-05-27 18:08:11 4315

原创 网络:常见的端口号及分类

一、端口号概念在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。物理端口指的是物理存在的端口,如ADSL Modem、集线器、交换机、路由器上用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。逻辑端口是指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。

2017-05-26 18:41:32 29593 1

原创 网络层核心:路由和路由生成算法

一、路由和路由算法简介:路由就是通过互连的网络把信息从源地址传送到目的地址的活动。路由发生在OSI网络参考模型的第三层即网络层。路由引导封包转送,经过一些中间的节点后,到达目的地。把该功能做成硬件的话称为路由器。路由通常根据路由表来引导封包转送。因此为了有效率的转送封包,建立存储在路由器内存的路由表是非常重要的。路由与桥接的不同在于,路由假设地址相似的结点距离相近。这使得路由表中的一项纪录

2017-05-25 17:42:43 4540

原创 NAT(网络地址转换)技术与代理服务器原理

一、    Nat技术:NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force,Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成

2017-05-24 00:45:16 1350

原创 如何解决类模板的分离编译问题?

一模板:模板不是数据类型,只能算是一种行为集合的表示。编译器在使用模板时,通过更换模板参数来创建数据类型。这个过程就是模板实例化(Instantiation), 从模板类创建得到的类型称之为特例(specialization),说白了就是创建了一个新类型。 模板实例化取决于编译器能够找到可用代码来创建特例(称之为实例化要素,point of instantiation),也就是说,编译器不

2017-05-21 11:29:41 730

原创 如何防止头文件被重复包含或引用?

一、#pragma once ( 比较常用)只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用。#pragmaonce是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了。#pragmaonce这种方式,是微软编译器独有的,也是后来才

2017-05-14 14:14:59 29242 2

转载 Linux:守护进程详解及实现

转载:守护进程其实,linux提供了daemon函数用于创建守护进程,实现原理与上文中介绍的是一样的。#includeint daemon(int nochdir, int noclose);1. daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。2. 当nochdir为0时,daemon将更改进城的根目录为root(“/”)。3. 当

2017-05-13 03:51:29 797

原创 Linux:守护进程解析、如何实现守护进程

1、守护进程:守护进程也称精灵进程(Daemon),是运行在后台的⼀一种特殊进程。它独立于控制终端且周期性地执行某种任务或等待处理某些发生的事件。守护进程是⼀一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任 务。比如,作业规划进程crond等。Linux系统启动时会启动很多系统

2017-05-13 03:41:53 1740

原创 数据链路层差错检测:CRC(循环冗余检验)

1、循环冗余检验(CRC):在发送端,先把数据划分为祖,假定每组K个比特。现假定待传送的数据M = 101001(k=6)。CRC运算就是在数据M后面添加提供差错检测的n位冗余码,然后构成一个帧发送出去,一共发送(k+n )位。在所要发送的数据后添加冗余码,显然增大了数据传输的开销,但却可以进行差错检测。当传输可能出现差错时,付出的代价往往是很值得的。2、n位冗余码计算:用二进制的模2

2017-05-12 00:03:27 11123 3

原创 Linux 信号之mysleep

一、    用alarm和pause实现sleep(3)函数,称为mysleep。 1. main函数调用mysleep函数,后者调用sigaction注册了SIGALRM信号的处理函数sig_alrm。2. 调用alarm(seconds)设定闹钟。3. 调用pause等待,内核切换到别的进程运行。4. seconds秒之后,闹钟超时,内核发SIGALRM给这个进程。5.

2017-05-08 17:49:00 765

转载 linux 信号处理函数详解

转自:http://blog.csdn.NET/sddzycnqjn/article/details/72857601. 信号概念 信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件)。信号是硬件中断的软件模拟(软中断)。每个信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD、SIGINT等,它们在系统头文件中定义,也可以通过在shell下键入ki

2017-05-08 16:05:41 857

原创 线程安全和可重入函数的联系与区别

1、    线程安全:线程安全是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程访问完,其他线程才可以使用。不会出现数据不一致或数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。四类线程不安全函数:(1)不保护共享变量的函数(线程不安全):将这类函数转化为线程安全的,相对比较容易

2017-05-07 17:21:19 528

转载 信号集操作函数,信号未决、阻塞、递达

转载:信号集操作函数,信号阻塞与未决一,信号集及相关操作函数信号集被定义为一种数据类型:typedef struct {                       unsigned long sig[_NSIG_WORDS];} sigset_t信号集用来描述信号的集合,每个信号占用一位(64位)。Linux所支持的所有信号可以全部或部

2017-05-03 16:51:02 764

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除