TCP/IP与套接字编程
文章平均质量分 56
renrenhappy
这个作者很懒,什么都没留下…
展开
-
ifconfig manual 中文翻译
<br />原文地址<br />=========<br />以下是本文档完整版本地址:http://sanyk.is-programmer.com/posts/15344<br />(nt: 出现这一提示是为了避免一些网络蜘蛛把文章分成几个页面给查看带来不悦)<br /> <br />中文版<br />========<br /> IFCONFIG(8) Linux 程序员参考手册转载 2010-07-04 15:53:00 · 1264 阅读 · 0 评论 -
TCP如何区分监听套接字和已连接套接字
2.10 TCP端口号与并发服务器并发服务器中主服务器循环通过派生一个子进程来处理每个新的连接。如果一个子进程继续使用服务器众所周知的端口来服务一个长时间的请求,那将发生什么?让我们来看一个典型的序列。首先,在主机freebsd上启动服务器,该主机是多宿的,其IP地址为12.106.32.254和192.168.42.1。服务器在它的众所周知的端口(本例为21)上执行被动打开,从而开始等待客户的请求,如图2-11所示。 图2-11 TCP服务器在端口21上执行被动打开我们使用记号{*:21, *:*}指出服转载 2010-10-09 10:39:00 · 6661 阅读 · 0 评论 -
tcpdump抓包分析TCP三次握手过程
一、 tcpdump使用1、首先看下MAN手册TCPDUMP(8) NAME tcpdump - dump traffic on a networkSYNOPSIS tcpdump [转载 2010-10-09 15:11:00 · 6875 阅读 · 0 评论 -
RST复位报文段
<br />TCP首部中的RST比特是用于“复位”的。一般来说,无论何时一个报文段发往基准的连接出现错误,TCP都会发出一个复位报文段。TCP在下列三种情况下产生RST复位报文段。<br />1.到不存在的端口的连接请求<br />产生复位的一种常见情况是当连接请求到达时,目的端口没有进程正在监听。对于UDP,当一个数据报到达目的端口时,该端口没在使用,它将产生一个ICMP端口不可达的信息;而TCP则使用复位。<br />2.异常终止一个连接<br />终止一个连接的正常方式是一方发送FIN,这也称为有序释原创 2010-10-09 14:40:00 · 6327 阅读 · 1 评论 -
拥塞控制
<br />为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno中又对“快速恢复”算法进行了改进,近些年又出现了选择性应答( selective acknowledge转载 2010-10-09 13:58:00 · 3290 阅读 · 0 评论 -
TCP超时时间的计算
转:http://blog.csdn.net/metasearch/archive/2008/03/07/2157017.aspx超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。1.超时超时时间的计算是超时的核心部分,TCP要求这个算法能大致估计出当前的网络状况,虽然这确实很困难。要求精确的原因有两个:(1)定时长久会造成网络利用率不高。(2)定时太短会造成多次重传,使得转载 2010-10-09 11:21:00 · 5568 阅读 · 0 评论 -
TIME_WAIT状态
一般来说,tcp正常关闭需要四个包。比如a和b关闭连接,a先给b发一个fin,b会进行确认ack,然后b也会发出fin,当a接受到这个fin,并发出最后一个ack后,就会处于time_wait状态。这个时间长短跟操作系统有关,一般会在1-4分钟,也就是两倍的数据包(2msl)最大生存时间。当处于TIME_WAIT状态时,该连接所用的本地端口不能被重新使用,除非在bind前设置了SO_REUSEADDR选项;即使通过设置SO_REUSEADDR选项,重新使用仍处于2MSL等待的本地端口,也不能给处于TIME_原创 2010-10-09 10:31:00 · 826 阅读 · 0 评论 -
linux 2.6内核epoll用法举例说明(续)--给echo服务器增加读线程池
#include #include #include #include #include #include #include #include #include #define MAXLINE 10#define OPEN_MAX 100#define LISTENQ 20#define SERV_PORT 5555#define INFTIM 1000//线程池任务队列结构体struct task{ int fd; //需要读写的文件描述符 struct task *next;转载 2010-10-09 19:24:00 · 830 阅读 · 0 评论 -
epoll同时处理海量连接的代码
<br />转:http://hi.baidu.com/scrich99/blog/item/a6bfedf25d945fa4a50f5234.html<br />#include <stdio.h><br />#include <stdlib.h><br />#include <errno.h><br />#include <string.h><br />#include <sys/types.h><br />#include <netinet/in.h><br />#include <sys/socke转载 2010-10-09 19:16:00 · 628 阅读 · 0 评论 -
epoll
I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。在linux2.6内核中,有了一种替换它的机制,就是epoll。一、epoll相关的数据结构和函数epoll用到的所有函数都是在头文件sys/epoll.h中声明的,下面简要说明所用到的数据结构和函数。1、数据结构typedef union epoll_data { void *ptr; int fd; __uint32_t u32; __uint64_t u64;} epo原创 2010-10-09 17:17:00 · 782 阅读 · 0 评论 -
Nagle算法
<br />RFC 896[Nagle 1984]中提出了Nagle算法。Nagle算法针对的问题是:广域网上大量的小分组会增加拥塞出现的可能。Nagle算法的思想:该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他小分组。相反,TCP收集这些少量的分组,并在确认到来时以一个分组的方式发过去。该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快。原创 2010-10-09 14:07:00 · 817 阅读 · 0 评论 -
TCP/IP详解 (1-3)
第一章 概述1. TCP/IP协议族的四个层次2. 网络互联构造互联网最简单的方法是把两个或多个网络通过路由器进行连接。路由器为不同类型的物理网络提供连接:以太网、令牌环网、点对点的链接(SLIP)和FDDI(光纤分布式数据接口)等。图1是一个包含两个网络的互连网:一个以太网和一个令牌环网,通过一个路由器互相连接。图1 通过路由器连接的两个网络连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网组合在一起,这样对原创 2010-06-22 19:59:00 · 818 阅读 · 0 评论 -
配置网络参数
<br />首先,配置服务器的网卡,命令如下:<br />sudo nano /etc/network/interfaces<br />在 interfaces 中添加以下内容:auto eth0iface eth0 inet staticaddress 202.113.235.181netmask 255.255.255.0gateway 202.113.235.1<br />这其中,斜体部分标注的 IP 地址是我服务器的设置,您需要根据您的具体情况修改。当然,如果您的服务器使用的是 DH原创 2010-07-13 15:43:00 · 805 阅读 · 0 评论 -
ifconfig详解
无论是Linux 自动安装还是我们手工安装,Linux 都会向你询问有关网络的问题并配置相关的软件。这个用于配置网卡的基本命令就是ifconfig(Windows下相应的命令是ipconfig)。在执行ifconfig 命令后,系统将在内核表中设置必要的参数,这样Linux 就知道如何与网络上的网卡通信。ifconfig 命令有以下两种格式:※ifconfig [interface]※ifconfig interface [aftype] option | address …你可以使用i转载 2010-07-04 14:14:00 · 3318 阅读 · 0 评论 -
netstat manual 中文翻译
<br />原文地址<br />=========<br />以下是本文档完整版本地址:http://sanyk.is-programmer.com/posts/14825.html<br />(nt: 出现这一提示是为了避免一些网络蜘蛛把文章分成几个页面给查看带来不悦)<br /> <br />中文版<br />========<br /> <br />NETSTAT(8) Linux 程序员参考手册转载 2010-07-04 15:55:00 · 1570 阅读 · 0 评论 -
route manual 中文翻译
ROUTE(8) Linux Programmer's Manual ROUTE(8)NAME route - show / manipulate the IP routing tableSYNOPSIS route [-CFvnee] route [-v] [-A family] add [-net|-host] target [netmask N转载 2010-07-04 15:12:00 · 1931 阅读 · 0 评论 -
多进程服务器中,epoll的创建应该在创建子进程之后
转:http://blog.csdn.net/wei801004/archive/2009/06/13/4264031.aspx看我的测试代码,似乎应该是在创建子进程之后创建epoll的fd,否则程序将会有问题,试将代码中两个CreateWorker函数的调用位置分别调用,一个在创建epoll fd之前,一个在之后,在调用在创建之前的代码会出问题,在我的机器上(linux内核2.6.26)表现的症状就是所有进程的epoll_wait函数返回0, 而客户端似乎被阻塞了:服务器端: view plaincopy转载 2010-10-09 19:28:00 · 644 阅读 · 0 评论