<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tianttt的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tianttt</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tianttt]]></copyright><item><title><![CDATA[七、Linux网络编程-TCP客户/服务器模型、回射客户/服务器]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/45536887</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/45536887</guid><author>tianttt</author><pubDate>Wed, 06 May 2015 16:21:29 +0800</pubDate><description><![CDATA[TCP客户/服务器模型
服务器模型：


回射客户/服务器


(1)、创建套接字
功能：创建一个套接字用于通信
函数声明：
#include           /* See NOTES */
#include 
int socket(int domain, int type, int protocol);参数：



domain：指定通信协议族（protocol ]]></description><category></category></item><item><title><![CDATA[六、Linux网络编程-socket、套接字地址结构、地址转换、字节序、套接字类型]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/45506679</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/45506679</guid><author>tianttt</author><pubDate>Tue, 05 May 2015 20:14:47 +0800</pubDate><description><![CDATA[socket介绍

       socket可以看成是用户进程与内核网络协议栈的编程接口。它屏蔽了底层通信的细节，让我们更方便的通信。socket不仅可以用于本机的进程间通信，还可以用于网络上不同主机的进程间通信。



套接口地址结构
IPv4地址结构
IPv4套接口地址结构通常也称为“网际套接字地址结构”，它以“sockaddr_in”命名，定义在头文件中

struct]]></description><category></category></item><item><title><![CDATA[五、Linux网络编程-TCP/IP基础(五)滑动窗口协议、UDP特点、UDP报文格式]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/45504389</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/45504389</guid><author>tianttt</author><pubDate>Tue, 05 May 2015 17:38:32 +0800</pubDate><description><![CDATA[一、滑动窗口协议
滑动窗口概念不仅存在于数据链路层，也存在于传输层，两者有不同的协议，但基本原理是相近的。其中一个重要区别是，一个是针对于帧的传送，另一个是字节数据的传送。滑动窗口主要实现了流量的控制。在TCP连接建立的过程中，TCP中一个字段包含了窗口的大小，还包含了一个MSS大小（防止ip层数据分片）。


  滑动窗口协议的基本原理就是在任意时刻，发送方都维持了一个连续的允许发送的帧]]></description><category></category></item><item><title><![CDATA[四、Linux网络编程-TCP/IP基础(四)传输层协议TCP、TCP报文格式、连接三次握手、终止四次挥手]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/45422061</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/45422061</guid><author>tianttt</author><pubDate>Fri, 01 May 2015 21:47:23 +0800</pubDate><description><![CDATA[一、TCP特点

(1)基于字节流
 TCP传输的单位是段，基于字节流意味着对段的边界不做任何假定，TCP没有提供边界处理，所以TCP需要处理粘包问题。
(2)、面向连接
 需要建立连接
(3)、可靠传输
 网际校验和
(4)、缓冲传输
    缓存数据，找到合适时机发送，提高效率
(5)、全双工
(6)、流量控制
    滑动窗口机制

二、TCP报文格式


]]></description><category></category></item><item><title><![CDATA[三、Linux网络编程-TCP/IP基础(三)IP数据报格式、网际校验和、路由]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/45421643</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/45421643</guid><author>tianttt</author><pubDate>Fri, 01 May 2015 21:13:38 +0800</pubDate><description><![CDATA[一、IP数据报格式
(1)、IP头部的数据格式



版本  IP协议版本号，长度为4位，IPv4此字段值为4，IPv6此字段值为6


首部长度  以32位的字为单位，该字段长度为4位，最大值为15，所以首部长度最大为60个字节


服务类型（TOS）  长度为8位。此字段包含3位的优先权（现已忽略），4位的服务类型子字段和1位的保留位（必须置0）。4位的服务类型分别为最小]]></description><category></category></item><item><title><![CDATA[二、Linux网络编程-TCP/IP基础(二)MTU、路径MTU、以太网帧格式、ICMP、ARP、RARP]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/45200353</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/45200353</guid><author>tianttt</author><pubDate>Wed, 22 Apr 2015 21:29:16 +0800</pubDate><description><![CDATA[一、最大传输单元(MTU)和路径MTU

        以太网和IEEE 802.3对数据帧的长度都有限制，其最大值分别是1500和1492字节，将这个限制称作最大传输单元（MTU，Maximum Transmission Unit）。如果IP层有一个数据报要传，而且数据的长度比链路层的MTU还大，那么IP层就要进行分片（Fragmentation），把数据报分成若干片，这样每一片都小于MT]]></description><category></category></item><item><title><![CDATA[一、Linux网络编程-TCP/IP基础(一)ISO/OSI参考模型、TCP/IP四层模型、基本概念]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/45195525</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/45195525</guid><author>tianttt</author><pubDate>Wed, 22 Apr 2015 15:31:34 +0800</pubDate><description><![CDATA[一、ISO/OSI参考模型

qOSI（open system interconnection）开放系统互联模型是由ISO（InternationalOrganization for Standardization）国际标准化组织定义的网络分层模型，共七层。
以下是各层的作用：



物理层(Physical Layer)：物理层定义了所有电子及物理设备的规范，为上层的传输提供了一个]]></description><category></category></item><item><title><![CDATA[二十一、Linux系统编程-管道(二)命名管道（FIFO）、匿名管道与命名管道区别、命名管道的打开规则]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/45130737</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/45130737</guid><author>tianttt</author><pubDate>Sun, 19 Apr 2015 18:09:22 +0800</pubDate><description><![CDATA[一、命名管道（FIFO）

        创建匿名管道实际上是创建一个64K大小的内存缓冲区，匿名管道的一个限制就是只能在具有共同祖先（具有亲缘关系）的进程间通信。如果我们想在不相关的进程之间交换数据，可以使用FIFO文件来做这项工作，它经常被称为命名管道。命名管道是一种特殊类型的文件。
函数声明：
#include 
#include 
int mkfifo(const char *p]]></description><category></category></item><item><title><![CDATA[二十、Linux系统编程-管道(一)管道、匿名管道、管道读写规则]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44995813</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44995813</guid><author>tianttt</author><pubDate>Sat, 11 Apr 2015 15:45:13 +0800</pubDate><description><![CDATA[一、管道

概念：管道是Unix中最古老的进程间通信的形式。我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”，管道本质上是内核中一块固定大小的缓冲区。
管道限制：


管道是半双工的，数据只能向一个方向流动；需要双方通信时，需要建立起两个管道只能用于具有共同祖先的进程（具有亲缘关系的进程）之间进行通信；通常，一个管道由一个进程创建，然后该进程调用fork，此后父、子进程之间]]></description><category></category></item><item><title><![CDATA[十九、Linux系统编程-信号(六)三种不同精度的睡眠sleep、usleep、nanosleep]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44995449</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44995449</guid><author>tianttt</author><pubDate>Sat, 11 Apr 2015 15:26:28 +0800</pubDate><description><![CDATA[一、三种不同精度的睡眠
声明：
#include 
unsigned int sleep(unsigned int seconds);



二、三种时间结构
三、setit
imer
四、getitimer]]></description><category></category></item><item><title><![CDATA[十八、Linux系统编程-信号(五)sigaction和sigqueue]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44779321</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44779321</guid><author>tianttt</author><pubDate>Tue, 31 Mar 2015 15:57:26 +0800</pubDate><description><![CDATA[一、sigaction函数
函数声明：
#include 
int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);函数参数：



该函数的第一个参数为信号的值，可以为除SIGKILL及SIGSTOP外的任何一个特定有效的信号（为这两个信号定义自己的处理函数，将导致信号安装错误）第]]></description><category></category></item><item><title><![CDATA[十七、Linux系统编程-信号(四)信号在内核中表示、信号的阻塞和未决]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44775025</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44775025</guid><author>tianttt</author><pubDate>Tue, 31 Mar 2015 11:24:27 +0800</pubDate><description><![CDATA[一、信号在内核中的表示
        执行信号的处理动作称为信号递达（Delivery），信号从产生到递达之间的状态，称为信号未决（Pending）。进程可以选择阻塞（Block）某个信号。被阻塞的信号产生时将保持在未决状态，直到进程解除对此信号的阻塞，才执行递达的动作。注意，阻塞和忽略是不同的，只要信号被阻塞就不会递达，而忽略是在递达之后可选的一种处理动作。信号在内核中的表示如下：]]></description><category></category></item><item><title><![CDATA[十六、Linux系统编程-信号(三)其他信号发送函数、可重入及不可重入函数]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44755851</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44755851</guid><author>tianttt</author><pubDate>Mon, 30 Mar 2015 20:08:48 +0800</pubDate><description><![CDATA[一、更多信号发送函数
(1)、alarm 发送时钟信号
函数声明：
函数参数：
返回值：


(2)、setitimer
(3)、abort
二、可重入函数与不可重入函数
三、不可重入函数示例]]></description><category></category></item><item><title><![CDATA[十五、Linux系统编程-信号(二)信号分类、可靠信号与不可靠信号、信号发送 pause]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44753031</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44753031</guid><author>tianttt</author><pubDate>Mon, 30 Mar 2015 17:25:43 +0800</pubDate><description><![CDATA[一、信号分类
(1)、可靠信号不可靠信号

linux信号机制基本上是从unix系统中继承过来的。早期unix系统中的信号机制比较简单和原始，后来在实践中暴露出一些问题，它的主要问题是：


进程每次处理信号后，就将对信号的响应设置为默认动作。在某些情况下，将导致对信号的错误处理；因此，用户如果不希望这样的操作，那么就要在信号处理函数结尾再一次调用signal()，重新安装该信号。早期]]></description><category></category></item><item><title><![CDATA[十四、Linux系统编程-信号(一)中断、信号、中断和信号]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44700071</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44700071</guid><author>tianttt</author><pubDate>Sat, 28 Mar 2015 12:45:43 +0800</pubDate><description><![CDATA[一、中断
(1)、中断概念
      中断是用以提高计算机工作效率、增强计算机功能的一项重要技术。最初引入硬件中断，只是出于性能上的考量。如果计算机系统没有中断，则处理器与外部设备通信时，它必须在向该设备发出指令后进行忙等待(Busy
 waiting)，反复轮询该设备是否完成了动作并返回结果。这就造成了大量处理器周期被浪费。引入中断以后，当处理器发出设备请求后就可以立即返回以处理其他任务]]></description><category></category></item><item><title><![CDATA[十三、Linux系统编程-进程(六)进程组、会话期、守护进程]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44655041</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44655041</guid><author>tianttt</author><pubDate>Fri, 27 Mar 2015 21:22:52 +0800</pubDate><description><![CDATA[一、什么是守护进程

守护进程是在后台运行不受控端控制的进程，通常情况下守护进程在系统启动时自动运行
守护进程的名称通常以d结尾，比如sshd、xinetd、crond等。

二、守护进程的创建步骤


三、daemon]]></description><category></category></item><item><title><![CDATA[十二、Linux系统编程-进程(五)SIGCHLD、wait、waitpid、system]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44354941</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44354941</guid><author>tianttt</author><pubDate>Tue, 17 Mar 2015 23:39:36 +0800</pubDate><description><![CDATA[一、SIGCHLD



当子进程退出的时候，内核会向父进程发送SIGCHLD信号，子进程的退出是个异步事件（子进程可以在父进程运行的任何时刻终止）子进程退出时，内核将子进程置为僵尸状态，这个进程称为僵尸进程，它只保留最小的一些内核数据结构，以便父进程查询子进程的退出状态。父进程查询子进程的退出状态可以用wait/waitpid函数


二、wait和waitpid
(1)、函数原]]></description><category></category></item><item><title><![CDATA[十一、Linux系统编程-进程(四)替换进程映像exe函数族]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44313959</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44313959</guid><author>tianttt</author><pubDate>Mon, 16 Mar 2015 21:40:29 +0800</pubDate><description><![CDATA[一、exec替换进程映像

在进程的创建上Unix采用了一个独特的方法，它将进程创建与加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。
当我们创建了一个进程之后，通常将子进程替换成新的进程映象，这可以用exec系列的函数来进行。当然，exec系列的函数也可以将当前进程替换掉。
(1)、声明：
#include 
int execve(const char *filen]]></description><category></category></item><item><title><![CDATA[十、Linux系统编程-进程(三)父子进程共享文件、fork和vfork、exit和_exit、atexit注册退出事件]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44281755</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44281755</guid><author>tianttt</author><pubDate>Sun, 15 Mar 2015 22:45:10 +0800</pubDate><description><![CDATA[一、fork之后父子进程共享文件
打开的文件在fork之后共享文件表。




示例：
#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 

#define ERR_EXIT(m) \
        do \
        { \
                perr]]></description><category></category></item><item><title><![CDATA[九、Linux系统编程-进程(二)fork系统调用、复制进程映像、写时复制、孤儿进程和僵尸进程]]></title><link>https://blog.youkuaiyun.com/tianttt/article/details/44258035</link><guid>https://blog.youkuaiyun.com/tianttt/article/details/44258035</guid><author>tianttt</author><pubDate>Sat, 14 Mar 2015 13:11:52 +0800</pubDate><description><![CDATA[一、fork系统调用
(1)、函数功能：
创建一个进程
(2)、声明：
#include 
pid_t fork(void);
(3)返回值：成功父进程返回子进程PID,子进程返回返回0，失败返回-1。

fork系统调用之后，父子进程交替执行。如果父进程先退出，那么子进程的父进程将变为init进程。(注：除了0进程，任何一个进程都必须有父进程）如果子进程先退出，那么子进程必须等到父]]></description><category></category></item></channel></rss>