随笔分类 -  《UNIX网络编程 卷1》学习笔记

《UNIX网络编程 卷1》第3版,作者W.Richard Stevens等。
摘要:本文是个大杂烩,集中记述个人平时学习或遇到的关于网络的知识点。SYN Flood 我们先来看一下TCP/IP三次握手的过程: 1)Host A 发送一个TCPSYNchronize 包到 Host B 2)Host B 收到 Host A的SYN 3)Host B 发送一个SYNch... 阅读全文
posted @ 2015-08-29 00:06 峰子_仰望阳光 阅读(882) 评论(0) 推荐(1) 编辑
摘要:在学习网络编程过程中,经常会把这几个概念搞混淆。同步I/O与异步I/O区别 我们先来看一下操作I/O时涉及的对象和步骤(这里我们以read为例): 这里会涉及到两个系统对象,一个是调用这个I/O的应用进程(或线程),另一个就是系统内核。当一个read操作发生时,它会经历两个阶段:1)等待... 阅读全文
posted @ 2015-08-27 14:44 峰子_仰望阳光 阅读(2220) 评论(5) 推荐(2) 编辑
摘要:这篇是继前三篇并发服务器--01(基于进程派生)、并发服务器--02(基于I/O复用——运用Select函数)和并发服务器--02(基于I/O复用——运用epoll技术)的第4篇关于并发服务器的博文。 关于Linux上多线程详情请参看前一博文Linux多线程编程初探。 本文相对就简陋一点了,... 阅读全文
posted @ 2015-07-12 12:05 峰子_仰望阳光 阅读(633) 评论(0) 推荐(0) 编辑
摘要:本文承接自上一博文I/O复用——运用Select函数。epoll介绍 epoll是在2.6内核中提出的。和select类似,它也是一种I/O复用技术,是之前的select和poll的增强版本。 Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per ... 阅读全文
posted @ 2015-07-10 16:37 峰子_仰望阳光 阅读(1556) 评论(0) 推荐(0) 编辑
摘要:I/O模型 Unix/Linux下有5中可用的I/O模型:阻塞式I/O非阻塞式I/OI/O复用(select、poll、epoll和pselect)信号驱动式I/O(SIGIO)异步I/O(POSIX的aio_系列的函数) 关于这五种详细介绍可参考《UNIX网络编程 卷1》或网上博文。I/O复用... 阅读全文
posted @ 2015-07-09 21:52 峰子_仰望阳光 阅读(1680) 评论(0) 推荐(1) 编辑
摘要:本文摘录自TCP中的MSS解读。 MSS 是TCP选项中最经常出现,也是最早出现的选项。MSS选项占4byte。MSS是每一个TCP报文段中数据字段的最大长度,注意:只是数据部分的字段,不包括TCP的头部。TCP在三次握手中,每一方都会通告其期望收到的MSS(MSS只出现在SYN数据包中)... 阅读全文
posted @ 2015-07-08 10:06 峰子_仰望阳光 阅读(1586) 评论(0) 推荐(0) 编辑
摘要:本文转载自博文协议森林05 我尽力 (IP协议详解)。这篇博文写的很有趣味,特转载!IPv4与IPv6头部的对比 我们已经在IP接力中介绍过,一个IP包分为头部(header)和数据(payload/data)两部分。头部是为了实现IP通信必须的附加信息,数据是IP通信所要传送的信息。 ... 阅读全文
posted @ 2015-07-07 17:53 峰子_仰望阳光 阅读(419) 评论(0) 推荐(0) 编辑
摘要:本文转载自陈皓博文TCP 的那些事儿(上)。 TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/... 阅读全文
posted @ 2015-07-07 15:25 峰子_仰望阳光 阅读(384) 评论(0) 推荐(1) 编辑
摘要:文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件时,使用open或create返回的文件描述符表示该文件,将其作为参数传给read或write函数。write函数 writ... 阅读全文
posted @ 2015-07-03 18:43 峰子_仰望阳光 阅读(52765) 评论(1) 推荐(4) 编辑
摘要:fork和exec函数 fork函数是Unix/Linux中派生新进程的唯一方法。其定义如下:#include pid_t fork(void);// 返回:若成功则在子进程中返回0,在父进程中返回子进程ID,若出错则返回-1 fork函数调用一次,返回两次。它在调用进程(称为父进程)中返回一次... 阅读全文
posted @ 2015-07-03 00:29 峰子_仰望阳光 阅读(1006) 评论(0) 推荐(0) 编辑
摘要:本文将会阐述两种解决端口占用的方法。 本文会用到的服务器端的程序如下: 1 #include "unp.h" 2 #include 3 4 int main(int argc, char **argv) 5 { 6 int listenfd, connfd; 7 sockl... 阅读全文
posted @ 2015-07-02 21:30 峰子_仰望阳光 阅读(3620) 评论(0) 推荐(0) 编辑
摘要:本文摘录自《UNIX网络编程 卷1》。基本套接字函数 socket函数 为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型。其定义如下:#include int socket(int family, int type, int protoco... 阅读全文
posted @ 2015-07-01 18:12 峰子_仰望阳光 阅读(1927) 评论(0) 推荐(0) 编辑
摘要:TCP状态转换图 在《UNIX网络编程 卷1》一书中,作者给出了TCP状态转换图(如下)。本文也将围绕此图进行阐释。 注:上图红框表示比较特殊的地方。TCP状态转换两条主线 图2-4中的两条主线当然就是客户端和服务器端的状态迁移: 对客户端(也可以是服务器端,这里的例子是客户端主... 阅读全文
posted @ 2015-06-28 17:09 峰子_仰望阳光 阅读(1997) 评论(0) 推荐(0) 编辑
摘要:TCP简介 相对于不可靠、无连接的用户数据报协议(User Datagram Protocol, UDP),传输控制协议(Transmission Control Protocol, TCP)是可靠的、面向连接的协议。除此之外,TCP还提供了以下特性: 1)TCP含有用于动态估算客户和服务器之间... 阅读全文
posted @ 2015-06-28 16:53 峰子_仰望阳光 阅读(1972) 评论(0) 推荐(0) 编辑
摘要:1. 套接字地址结构1.1 IPv4套接字地址结构 IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在头文件中。下边给出它的定义: 1)struct in_addr专门用来存储IP地址,对于IPv4来说,IP地址为32位无符号整数。其定义如下: 注... 阅读全文
posted @ 2015-06-24 18:01 峰子_仰望阳光 阅读(2158) 评论(0) 推荐(0) 编辑
摘要:什么是网络套接字(Socket)?一时还真不好回答,而且网络上也有各种解释,莫衷一是。下文将以本人所查阅到的资料来说明一下什么是Socket。Socket定义 Socket在维基百科的定义:A network socket is an endpoint of an inter-process ... 阅读全文
posted @ 2015-06-24 16:58 峰子_仰望阳光 阅读(7731) 评论(0) 推荐(1) 编辑
摘要:本文转载自一译作。 *注:netstat即network state缩写。 Netstat 简介 Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认... 阅读全文
posted @ 2015-06-23 14:32 峰子_仰望阳光 阅读(792) 评论(0) 推荐(0) 编辑
摘要:本文转自IBM博文Linux 套接字编程中的 5 个隐患。 “在异构环境中开发可靠的网络应用程序”。 Socket API 是网络应用程序开发中实际应用的标准 API。尽管该 API 简单,但是开发新手可能会经历一些常见的问题。本文识别一些最常见的隐患并向您显示如何避免它们。 在 4.2 ... 阅读全文
posted @ 2015-06-23 14:29 峰子_仰望阳光 阅读(417) 评论(0) 推荐(0) 编辑
摘要:《UNIX网络编程 卷1》的源码可以从www.unpbook.com下载得到。解压之后的目录为unpv13e。详细步骤编译 进入unpv13e目录,按如下步骤编译: 1 ./configure 2 3 cd lib 4 make // 可能遇到问题:redefinition of ‘st... 阅读全文
posted @ 2015-06-22 15:21 峰子_仰望阳光 阅读(1886) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示