資源簡(jiǎn)介
CruiseYoung提供的帶有詳細(xì)書簽的電子書籍目錄
http://blog.csdn.net/fksec/article/details/7888251
該資料是《TCP/IP詳解 卷1:協(xié)議》的源代碼
對(duì)應(yīng)的書籍資料見(jiàn):
TCP/IP詳解 卷1:協(xié)議(09年度暢銷榜TOP50)(08年度暢銷榜TOP50)
http://download.csdn.net/detail/fksec/4657587
基本信息
原書名: TCP/IP Illustracted Volume 1:The Protocols
原出版社: Addison Wesley/Pearson
作者: W.Richard Stevens
譯者: 范建華等
叢書名: 計(jì)算機(jī)科學(xué)叢書
出版社:機(jī)械工業(yè)出版社
ISBN:7111075668
上架時(shí)間:2000-7-1
出版日期:2000 年4月
頁(yè)碼:423
版次:1-1
所屬分類:計(jì)算機(jī) > 計(jì)算機(jī)網(wǎng)絡(luò) > 網(wǎng)絡(luò)協(xié)議 > TCP/IP
教材 > 研究生/本科/專科教材 > 工學(xué) > 計(jì)算機(jī)
教材 > 計(jì)算機(jī)教材 > 本科/研究生 > 計(jì)算機(jī)專業(yè)教材 > 計(jì)算機(jī)專業(yè)課程 > 計(jì)算機(jī)網(wǎng)絡(luò)
編輯推薦
09年度暢銷榜TOP50
08年度暢銷榜TOP50
作譯者
作者: W.Richard Stevens
國(guó)際知名的Unix和網(wǎng)絡(luò)專家,《TCP/IP 詳解》(三卷本)作者 W.Richard Stevens(1951-1999),是國(guó)際知名的Unix和網(wǎng)絡(luò)專家;受人尊敬的計(jì)算機(jī)圖書作家;同時(shí)他還是廣受歡迎的
教師和顧問(wèn)。Stevens先生1951年生于贊比亞,他的家庭曾多次搬遷,最終定居于南非。早年,他就讀于美國(guó)弗吉尼亞州的費(fèi)什本軍事學(xué)校,后獲得密歇根大學(xué)學(xué)士、亞利桑那大學(xué)系統(tǒng)工程碩
士和博士學(xué)位。他曾就職于基特峰國(guó)家天文臺(tái),從事計(jì)算機(jī)編程;還曾在康涅狄格州紐黑文市的健康系統(tǒng)國(guó)際公司任主管計(jì)算機(jī)服務(wù)的副總裁。Stevens先生不幸病逝于1999年9月1日,他的離
去是計(jì)算機(jī)界的巨大損失。
目錄
封面 -1
第1章 概述 1
1.1 引言 1
1.2 分層 1
1.3 TCP/IP的分層 4
1.4 互聯(lián)網(wǎng)的地址 5
1.5 域名系統(tǒng) 6
1.6 封裝 6
1.7 分用 8
1.8 客戶-服務(wù)器模型 8
1.9 端口號(hào) 9
1.10 標(biāo)準(zhǔn)化過(guò)程 10
1.11 RFC 10
1.12 標(biāo)準(zhǔn)的簡(jiǎn)單服務(wù) 11
1.13 互聯(lián)網(wǎng) 12
1.14 實(shí)現(xiàn) 12
1.15 應(yīng)用編程接口 12
1.16 測(cè)試網(wǎng)絡(luò) 13
1.17 小結(jié) 13
第2章 鏈路層 15
2.1 引言 15
2.2 以太網(wǎng)和IEEE 802封裝 15
2.3 尾部封裝 17
2.4 SLIP:串行線路IP 17
2.5 壓縮的SLIP 18
2.6 PPP:點(diǎn)對(duì)點(diǎn)協(xié)議 18
2.7 環(huán)回接口 20
2.8 最大傳輸單元MTU 21
2.9 路徑MTU 21
2.10 串行線路吞吐量計(jì)算 21
2.11 小結(jié) 22
第3章 IP:網(wǎng)際協(xié)議 24
3.1 引言 24
3.2 IP首部 24
3.3 IP路由選擇 27
3.4 子網(wǎng)尋址 30
3.5 子網(wǎng)掩碼 32
3.6 特殊情況的IP地址 33
3.7 一個(gè)子網(wǎng)的例子 33
3.8 ifconfig命令 35
3.9 netstat命令 36
3.10 IP的未來(lái) 36
3.11 小結(jié) 37
第4章 ARP:地址解析協(xié)議 38
4.1 引言 38
4.2 一個(gè)例子 38
4.3 ARP高速緩存 40
4.4 ARP的分組格式 40
4.5 ARP舉例 41
4.5.1 一般的例子 41
4.5.2 對(duì)不存在主機(jī)的ARP請(qǐng)求 42
4.5.3 ARP高速緩存超時(shí)設(shè)置 43
4.6 ARP代理 43
4.7 免費(fèi)ARP 45
4.8 arp命令 45
4.9 小結(jié) 46
第5章 RARP:逆地址解析協(xié)議 47
5.1 引言 47
5.2 RARP的分組格式 47
5.3 RARP舉例 47
5.4 RARP服務(wù)器的設(shè)計(jì) 48
5.4.1 作為用戶進(jìn)程的RARP服務(wù)器 49
5.4.2 每個(gè)網(wǎng)絡(luò)有多個(gè)RARP服務(wù)器 49
5.5 小結(jié) 49
第6章 ICMP:Internet控制報(bào)文協(xié)議 50
6.1 引言 50
6.2 ICMP報(bào)文的類型 50
6.3 ICMP地址掩碼請(qǐng)求與應(yīng)答 52
6.4 ICMP時(shí)間戳請(qǐng)求與應(yīng)答 53
6.4.1 舉例 54
6.4.2 另一種方法 55
6.5 ICMP端口不可達(dá)差錯(cuò) 56
6.6 I
代碼片段和文件信息
/*
?*?Issue?an?ICMP?address?mask?request?and?print?the?reply.
?*
?*?This?program?originated?from?the?public?domain?ping?program?written
?*?by?Mike?Muuss.
?*
?*?You?must?be?superuser?to?run?this?program?(or?it?must?be?suid?to?root)
?*?since?it?requires?a?raw?socket.
?*/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define DEFDATALEN (12) /*?default?data?length?*/
#define MAXIPLEN 60
#define MAXICMPLEN 76
#define MAXPACKET (65536?-?60?-?8)/*?max?packet?size?*/
struct?sockaddr whereto; /*?who?to?send?request?to?*/
int datalen?=?DEFDATALEN;
int s;
u_char outpack[MAXPACKET];
char *hostname;
u_long inet_addr();
char *inet_ntoa();
void sig_alrm(int);
int response?=?0;
main(argc?argv)
int argc;
char **argv;
{
int i?ch?fdmask?hold?packlen?preload;
extern?int errno;
struct?hostent *hp;
struct?sockaddr_in *to;
struct?protoent *proto;
u_char *packet;
char *target?hnamebuf[MAXHOSTNAMELEN]?*malloc();
if?(argc?!=?2)
exit(1);
target?=?argv[1];
bzero((char?*)&whereto?sizeof(struct?sockaddr));
to?=?(struct?sockaddr_in?*)&whereto;
to->sin_family?=?AF_INET;
/*?try?to?convert?as?dotted?decimal?address
???else?if?that?fails?assume?it‘s?a?hostname?*/
to->sin_addr.s_addr?=?inet_addr(target);
if?(to->sin_addr.s_addr?!=?(u_int)-1)
hostname?=?target;
else?{
hp?=?gethostbyname(target);
if?(!hp)?{
fprintf(stderr?“unknown?host?%s\n“?target);
exit(1);
}
to->sin_family?=?hp->h_addrtype;
bcopy(hp->h_addr?(caddr_t)&to->sin_addr?hp->h_length);
strncpy(hnamebuf?hp->h_name?sizeof(hnamebuf)?-?1);
hostname?=?hnamebuf;
}
packlen?=?datalen?+?MAXIPLEN?+?MAXICMPLEN;
if?(?(packet?=?(u_char?*)malloc((u_int)packlen))?==?NULL)?{
fprintf(stderr?“malloc?error\n“);
exit(1);
}
if?(?(proto?=?getprotobyname(“icmp“))?==?NULL)?{
fprintf(stderr?“unknown?protocol?icmp\n“);
exit(1);
}
if?(?(s?=?socket(AF_INET?SOCK_RAW?proto->p_proto))?0)?{
perror(“socket“); /*?probably?not?running?as?superuser?*/
exit(1);
}
/*
?*?We?send?one?request?then?wait?5?seconds?printing?any
?*?replies?that?come?back.??This?lets?us?send?a?request?to
?*?a?broadcast?address?and?print?multiple?replies.
?*/
signal(SIGALRM?sig_alrm);
alarm(5); /*?5?second?time?limit?*/
sender(); /*?send?the?request?*/
for?(;;)?{
struct?sockaddr_in from;
int cc?fromlen;
fromlen?=?sizeof(from);
if?(?(cc?=?recvfrom(s?(char?*)packet?packlen?0
???? ????(struct?sockaddr?*)&from?&fromlen))?0)?{
if?(errno?==?EINTR)
continue;
perror(“recvfrom?error“);
continue;
}
procpack((char?*)packet?cc?&from);
}
}
/*
?*?Send?the?ICMP?address?mask?request.
?*/
sende
評(píng)論
共有 條評(píng)論