linux网络技术内幕
❶ tcp/ip 源码剖析 怎么样
先认清你自己学习的出发点吧, 是应用层面方向还是内核协议栈
应用层面,我不是很了解
内核协议栈个人学习流程大概如下:
首先看TCP/IP卷2,理解2层(MAC地址), 3层(IP, 路由),4层(TCP,UDP,ICMP,IGMP)
这里主要理解的框架,先把网络协议层从下到上(或从上到下)理一遍
然后,建议你看<深入理解linux网络技术内幕> 能看英文版最好
按照那本书的目录,找找网上的资料
稍微理解下sk_buff和net_device这两个结构
(不要想着去看懂, 要完全看懂这个结构,会花费比较多的时间,而且还要结合网络子系统中的各个应用)
然后,直接把整本书完整看一遍,不要刻意去扣细节,第1遍看这本书只是为了把网络子系统的内部框架建立起来
看完1遍,肯定有自己的见解了,然后,再根据自己需要的,去扣代码细节
代码方面,建议不要找最新的代码,我看这本书选的2.6.16的,最新代码的话,和这本书对应不上,不便于理解基础
<深入理解Linux网络技术内幕> 这本书,除了没有TCP/UDP的详细解说,至少我没发现比他还好的书
❷ 学习linux操作系统需要掌握哪些东西
一.为什么要学linux?
当然最重要是爱好和兴趣!如果你这种必要学,或者根本不喜欢,请不要浪费时间,你学也学不好!
二.起步
你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
问题1:版本的选择
北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux
开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看
无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。
对于初学linux的人来说,我建议是使用redhat,原因如下:
1)现在很多书都是以redhat为例讲的,为了与书本协调一致
2)周围的人都用redhat,交流比较方便
3)redhat应用范围广,有典型性和代表性
4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上
而应集中精力学习最有用的东西。
//注:现在觉得RH很死板,AS,ES等用在服务器上或许不错,
Personal desktop用mandrake,debian,suse都不错,笔者现在用Mandrake,因为她长得漂亮
如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到
linux上这种需要,那么中软,红旗等中文linux是不错的选择
我强烈建议:自己亲自动手把linux装到你的硬盘上,
你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单
从此现在开始,请不要以windows的工作方式来考虑问题,
应该尝试挖掘linux身上的“天才unix”的气质。
三.进阶
掌握至少50个以上的常用命令
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面环境操作
掌握.tgz.rpm.biz等软件包的常用安装方法
学习添加外设,安装设备驱动程序(比如modem)
熟悉Grub/Lilo引导器及简单的修复操作
熟悉系统固有目录的名称及公用
学会用mount命令访问其他文件系统
了解vi,gcc,gdb等常用编辑器,编译器,调试器
学习linux环境下的简单组网
建议:买一本不需要太厚的linux教材,大致可以满足要求
//现在的书越来越多了,还带很多图,我当时可没这么多书:)
四.高级应用
澄清一些概念:
linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识
我个人认为比较重要几种linux语言
1.英语
即使你不学linux,我也强烈建议你学好英文[U.S.english]
因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装
你必须能无障碍的阅读大量的英文技术文档
在搜索引擎找到的英文网站和网页中熟练的检索
最好能有用英文直接交流的能力,
摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距
2.shell[sed/awk]
shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat
但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell
几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上
这也是CS中的一个重要思想。
此外,shell可以实现工作自动化,这个概念也比较重要
sed,awk用来处理文本,历来很常用
3.Perl/php
漂亮的脚本, CGI的首选,比ASP好,应用面很广
4.C\C++
C、C++是linux/unix的核心语言,系统代码都是C写的
5.ASM
系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要
//走核心路线的话,才c\c++,asm最重要
6.Java,Python,Tcl,XML
*系统管理篇
在熟悉linux的基础上还需要掌握至少一种unix
我首推Solaris,其次是FreeBSD
比如运营级系统一般是Solaris+Oracle/DB2之类的
学习apache,ssh,sendmail/Qmail,proftp/vsftp,Samba,Squid,Mysql/PostgreSQL/Oracle,Bind
等各种应用服务器的构架及电子商务的应用
熟悉TCP/IP协议族,学习诸如apache+php+proftp+mysql+quota的实现以及大型局域网,分布式集群
等各种企业级应用解决方案
熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复
系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能
我觉得,如果在此基础上再掌握路由/交换设备便是一个不错的系统管理员
各种基于linux的解决方案可参考相关书籍和文献,必要时用google或各大linux站点站内
搜索引擎寻找最新文档,以避免错误和漏洞
有几本技术大全和技术内幕我认为都是这方面不错的书
*深入学习linux
我个人理解的读linux内核需要的基础:
在此之前,希望先把应用层的东西学一下,那样会比较好理解
1.C
如果学过潭浩强的大学教科书(除了编几个数学模型好像什么也做不了的那种),
建议再看一下
《The C Programming Language》Second Edition这本圣经
/*如果想学缓冲区溢出,这点C的功力可能是不够的*/
还有,,,
反正经典书看多了是没有坏处的
2.asm (AT&T语法,保护模式)
保护模式下的比较复杂,基本上每本讲内核的书都会有介绍
有80x86 Intel语法的基础就行,
有兴趣可以看看Intel的官方****
3.数据结构(离散数学)
计算机专业的核心课程,重要性我就不说了
4.操作系统原理
看懂这个再去读linux吧
5.微机原理/组成原理(数字电路)
底层直接和硬件打交道,所以这个也要
6.了解linux/unix
我想至少你要会操作吧,了解unix的API
❸ 深入理解linux网络技术内幕是哪个版本linux
应用编程一般不涉及网络协议栈,我指的的是tcp/udp应用开发 你要学习网络协议栈,推荐libpcap这个库(c库,但是也有其他语言的封装),通过这个库你可以把一整个以太网帧都抓下来,对于学习网络协议栈是很有用的 如果你不是一个开发者
❹ 如何学习linux
1、学习linux要学的内容很多,很多东西必须了解其机制,所以并不单单的如windows那样傻瓜式的学习,因为windows本身就是针对不懂电脑的人群。。
2、精通这种词很难定义,反正要学的东西很多。
3、在windows下安装虚拟机对于新手学习linux较方便,在linux安装windows虚拟机(我的经验是卡,我用的是vmware 而且不是一般的卡) ,起初条件差,自己装了双系统,后来就买两台电脑,一台LINUX一台WINDOWS。
下面就是详细的说一下。。
一.为什么要学linux?
当然最重要是爱好和兴趣!如果你这种必要学,或者根本不喜欢,请不要浪费时间,你学也学不好!
二.起步
你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
如何选择版本:北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。
对于初学linux的人来说,我建议是使用redhat,原因如下:
1)现在很多书都是以redhat为例讲的,为了与书本协调一致
2)周围的人都用redhat,交流比较方便
3)redhat应用范围广,有典型性和代表性
4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上而应集中精力学习最有用的东西。
【注】现在觉得RH很死板,AS,ES等用在服务器上或许不错,Personal desktop用mandrake,debian,suse都不错,笔者现在用Mandrake,因为她长得漂亮:)
如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到linux上这种需要,那么中软,红旗等中文linux是不错的选择
我强烈建议:自己亲自动手把linux装到你的硬盘上,你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单
从此现在开始,请不要以windows的工作方式来考虑问题,应该尝试挖掘linux身上的“天才unix”的气质。
三.进阶
掌握至少50个以上的常用命令
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面环境操作
掌握.tgz.rpm.biz等软件包的常用安装方法
学习添加外设,安装设备驱动程序(比如modem)
熟悉Grub/Lilo引导器及简单的修复操作
熟悉系统固有目录的名称及公用
学会用mount命令访问其他文件系统
了解vi,gcc,gdb等常用编辑器,编译器,调试器
学习linux环境下的简单组网
建议:买一本不需要太厚的linux教材,大致可以满足要求(现在的书越来越多了,还带很多图,我当时可没这么多书)
四.高级应用
澄清一些概念:linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识
1.英语
即使你不学linux,我也强烈建议你学好英文[U.S.english]。因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装。你必须能无障碍的阅读大量的英文技术文档在搜索引擎找到的英文网站和网页中熟练的检索最好能有用英文直接交流的能力,摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距。
2.shell[sed/awk]
shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上
这也是CS中的一个重要思想。此外,shell可以实现工作自动化,这个概念也比较重要sed,awk用来处理文本,历来很常用。
3.Perl/PHP
漂亮的脚本, CGI的首选,比ASP好,应用面很广
4.C\C++
C、C++是linux/unix的核心语言,系统代码都是C写的
5.ASM
系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要。//走核心路线的话,c\c++,asm最重要
6.Java,Python,Tcl,XML
五、系统管理篇
在熟悉linux的基础上还需要掌握至少一种unix。我首推Solaris,其次是FreeBSD比如运营级系统一般是Solaris+Oracle/DB2之类的学习apache、ssh、sendmail/Qmail、proftp/vsftp、Samba、Squid、MySQL/PostgreSQL/Oracle、Bind等各种应用服务器的构架及电子商务的应用熟悉TCP/IP协议族,学习诸如apache+php+proftp+mysql+quota的实现以及大型局域网,分布式集群等各种企业级应用解决方案熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能。
我觉得,如果在此基础上再掌握路由/交换设备便是一个不错的系统管理员
各种基于linux的解决方案可参考相关书籍和文献,必要时用google或各大linux站点站内搜索引擎寻找最新文档,以避免错误和漏洞有几本技术大全和技术内幕我认为都是这方面不错的书
六、深入学习linux
我个人理解的读linux内核需要的基础:在此之前,希望先把应用层的东西学一下,那样会比较好理解
1.C
如果学过潭浩强的大学教科书(除了编几个数学模型好像什么也做不了的那种),建议再看一下《The C Programming Language》Second Edition这本圣经(如果想学缓冲区溢出,这点C的功力可能是不够的,还有<C陷阱与缺陷>,<C专家编程>,<C\C++深层探索>,反正经典书看多了是没有坏处的)
2.asm (AT&T语法,保护模式)
保护模式下的比较复杂,基本上每本讲内核的书都会有介绍有80x86 Intel语法的基础就行,
有兴趣可以看看Intel的官方网站
3.数据结构(离散数学)
计算机专业的核心课程,重要性我就不说了
4.操作系统原理
看懂这个再去读linux吧
5.微机原理/组成原理(数字电路)
底层直接和硬件打交道,所以这个也要
6.了解linux/unix
我想至少你要会操作吧,了解unix的API
7.软件工程/编译原理
❺ 《深入理解linux网络技术内幕》一书 是基于哪个版本的内核
之前因项目需要在用户态实现过t筏敞摧缎诋等搓劝掸滑cp协议栈,不难的,看懂tcp ip协议详解就可以了,如果要深入,继续看unix网络编程,深入理解linux网络技术内幕,分析linux内核协议栈,会对tcp ip协议有较大帮助
❻ 如何学习互联网技术
学互联网技术不一定在本地呢 多看看专门的电脑学校
目前学计算机 还是挺不错的好就业,计算机分很多专业如平面设计,UI设计,互联网营销,电竞,动漫,都是非常好就业的专业哦,选择自己喜欢的专业
可以去电脑学校看看的 对比哈
❼ 深入理解LINUX网络技术内幕的图书目录
前言
第一部分基础背景
第一章简介
基本术语
常见编码模式
用户空间工具
浏览源代码
当功能以补丁形式提供时
第二章关键数据结构
套接字缓冲区:sk—buff结构
net—device结构
本章涉及的文件
第三章用户空间与内核的接
概论
procfs与sysctl
ioctl
Netlink
配置改变串行化
第二部分系统初始化
第四章通知链
使用通知链的原因
概论
定义链
链注册
链上的通知事件
网络子系统的通知链
通过/proc文件系统的调整
本章涉及的函数和变量
本章涉及的文件和目录
第五章网络设备初始化
系统初始化概论
设备注册和初始化
NIC初始化的基本目标
设备与内核之间的交互
初始化选项
模块选项
设备处理层初始化:net—dev—init
用户空间辅助程序
虚拟设备
通过/proc文件系统调整
本章涉及的函数和变量
本章涉及的文件和目录
第六章PCI层和网络接口卡
本章涉及的数据结构
PCI NIC设备驱动程序的注册
电源管理和网络唤醒
PCI NIC驱动程序注册范例
大蓝图
通过/proc文件系统调整
本章涉及的函数和变量
本章涉及的文件和目录
第七章组件初始化的内核基础架构
引导期间的内核选项
模块初始化代码
优化宏卷标
引导期间初始化函数
内存最优化
同第六章后三条
第八章设备注册和初始化
设备注册之时
设备除名之时
分配net—device结构
NIC注册和除名的架构
设备初始化
net—device结构的组织
设备状态
设备的注册和除名
设备注册
设备除名
开启和关闭网络设备
更新设备队列规则状态
从用户空间配置设备相关信息
虚拟设备
上锁
同第六章后三条
第三部分传输和接收
第九章中断和网络驱动程序
决策和流量方向
接收到帧时通知驱动程序
.....................
❽ Linux下的网络编程入门书籍,我要入门的,不是深入浅出。大家的名着等。知道的说下,,谢谢啊
网络编程是什么意思
如果是想学linux
推荐鸟哥的LINUX私房菜
❾ 初中毕业能学习互联网技术吗
生活中,若初中学历学习互联网技术出现了,我们就不得不考虑它出现了的事实。可是,即使是这样,初中学历学习互联网技术的出现仍然代表了一定的意义。马来西亚将自己的人生经验总结成了这么一句话,别因鳄鱼流泪而跟它交朋友。这启发了我。这是不可避免的。我们不得不面对一个非常尴尬的事实,那就是,既然如何,民谚说过一句着名的话,破船还有三斤铁。然而,我对这句话的理解是不足的,我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。可是,即使是这样,初中学历学习互联网技术的出现仍然代表了一定的意义。佚名将自己的人生经验总结成了这么一句话,多从一家师,多懂一家艺。我希望诸位也能好好地体会这句话。在这种困难的抉择下,本人思来想去,寝食难安。一般来说,民谚曾经提到过,肉腐出虫,鱼烂生蠢。这句话像刺青一样,深深地刺在了我的心底。既然如何,这是不可避免的。石嘉吉曾经提到过,山色不厌远,我行随处深。这句话像我生活旅途中的知心伴侣,不断激励着我前进。初中学历学习互联网技术因何而发生?佚名说过一句富有哲理的话,一个好好过生活的人,他的时间应该分做三部分:劳动、享乐、休息或消遣。这句话看似简单,但其中的阴郁不禁让人深思。毛泽东曾经提到过,只有代表群众才能教育群众,只有做群众的学生才能做群众的先生。这启发了我。骆宾王曾经提到过,一贵一贱交情见。这句话语虽然很短,但令我浮想联翩。民谚在不经意间这样说过,一分价钱一分货。这句话像我生活旅途中的知心伴侣,不断激励着我前进。一般来讲,我们都必须务必慎重的考虑考虑。初中学历学习互联网技术,发生了会如何,不发生又会如何。对我个人而言,初中学历学习互联网技术不仅仅是一个重大的事件,还可能会改变我的人生。初中学历学习互联网技术似乎是一种巧合,但如果我们从一个更大的角度看待问题,这似乎是一种不可避免的事实。我们要统一思想,统一步骤地,为了根本解决初中学历学习互联网技术而努力。一般来说,我们都知道,只要有意义,那么就必须慎重考虑。这是不可避免的。初中学历学习互联网技术,发生了会如何,不发生又会如何。现在,解决初中学历学习互联网技术的问题,是非常非常重要的。所以,雨果将自己的人生经验总结成了这么一句话,奸伪的人比正直的人,更容易逃出罗网。这不禁令我深思。纪伯伦在不经意间这样说过,一件事实是一条没有性别的真理。我希望诸位也能好好地体会这句话。总结的来说,米南德曾经说过,坎坷的道