01 2014 档案
摘要:主要部分,四次握手:断开连接其实从我的角度看不区分客户端和服务器端,任何一方都可以调用close(or closesocket)之类的函数开始主动终止一个连接。这里先暂时说正常情况。当调用close函数断开一个连接时,主动断开的一方发送FIN(finish报文给对方。有了之前的经验,我想你应该明白我说的FIN报文时什么东西。也就是一个设置了FIN标志位的报文段。FIN报文也可能附加用户数据,如果这一方还有数据要发送时,将数据附加到这个FIN报文时完全正常的。之后你会看到,这种附加报文还会有很多,例如ACK报文。我们所要把握的原则是,TCP肯定会力所能及地达到最大效率,所以你能够想到的优化方法,
阅读全文
摘要:使用INADDR_ANY的时候,往往针对多网卡情况,采用tcp连接方式,需要选择使用哪一个网卡发送,自己猜想应该是使用三次握手机制,如何判断目标地址不可达,应该使用的是超时机制,即握手超时则不可到达。在这里温习以下三次握手和四次握手,同时学习以下超时机制。TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement确认)PSH(push传送)FIN(finish结束)RST(reset重置)URG(urgent紧急)Sequencenumber(顺序号码)..
阅读全文
摘要:size _t为了增强程序的可移植性,便有了size_t,不同系统上,定义size_t可能不一样。经测试发现,在32位系统中size_t是4字节的,在64位系统中,size_t是8字节的,这样利用该类型可以增加程序移植性。size_t的定义它的定义在/usr/include/linux/types.h typedef_kernel_size_tsize_t;跟体系结构相关而__kernel_size_t定义在/usr/include/asm/posix_types.h安装的是内核的源码asm-i386/posix_types.htypedef unsigned int __kernel_siz
阅读全文
摘要:在C中如何调用C++函数的问题,简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂拿来Mark一下。将C++函数声明为``extern "C"''(在你的C++代码里做这个声明),然后调用它(在你的C或者C++代码里调用)。例如:// C++ code:extern "C" void f(int);void f(int i){// ...}然后,你可以这样使用f():/* C code: */void f(int);voi
阅读全文
摘要:大端在前为大端,在前指低地址记口诀 小端“高高低低”(第一个高是数据的高字节,适用于数字类型) 大端“高低高低”(第二个指低地址,适用于字符串类型)一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Bl...
阅读全文
摘要:这个文件记录了编译时使用的动态链接库的路径。默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件如果你安装了某些库,比如在安装gtk+-2.4.13时它会需要glib-2.0 >= 2.4.0,辛苦的安装好glib后没有指定 --prefix=/usr 这样glib库就装到了/usr/local下,而又没有在/etc/ld.so.conf中添加/usr/local/lib=================库文件的路径如 /usr/lib 或 /usr/local/lib 应该在 /etc/ld.so.conf 文件中,这样 ldd 才能找到这个库。在检查了这一点后,要
阅读全文
摘要:ELF = Executable and Linkable Format,可执行连接格式,是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的,也是Linux的主要可执行文件格式。Executable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,有三种主要类型:(1)适于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。(2)适于执行的可执行文件(executable file
阅读全文
摘要:在操作系统中,一般系统的服务都是以后台进程的方式存在,而且都会常驻系统中,直到关机才结束。这类服务也称Daemon,在Linux系统中就包含许多的Daemon。判断Daemon最简单的方法就是从名称上看。多数的Daemon都是由服务名称加上d。例如,在Linux操作系统中HTTP服务的Deamon就是httpd。另外还有sshd和telnetd。
阅读全文
摘要:blog.csdn.net/todd911/article/details/8025540Linux上许多网络服务应用,如l2tp、pptp、telnet,都用到了伪终端。有朋友在问这方面的概念,把偶知道的写下来,以供讨论。一、终端要理解伪终端(Pseudo Terminal),先来看看什么是“终端”(Terminal)。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。1、串行端口终端(/dev/ttySx)串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。这些串行端口所对应的设备名
阅读全文
摘要:ttS*是面向设备ttyn是面向进程shell与终端的关系:shell把一些信息适当的输送到终端设备,同时还接收来自终端设备的输入。一般每个shell进程都会有一个终端关联,也可以没有。文件都有设备号属性(主设备号和从设备号)字符设备的特性是FIFO,是一个队列,没有缓冲区,典型的是键盘和屏幕,在用户空间对应的是(stdin,stdout,stderror,对应glibc的FILE结构体),对应的设备文件是tty或者tps/n,stdio中的读写函数(printf,scanf),使用的便是上面三个结构体打开的文件,所谓的读写缓冲区就是stdio和stdout FILE结构体对应的缓冲区,std
阅读全文
摘要:我们打开一个terminal,那么将会在devpts文件系统/dev/pts下创建一个对应的pts字符文件,该pts字符文件节点直接由/dev/ptmx节点的驱动函数ptmx_open()调用devpts_pty_new(tty->link)[tty对应ptmx,tty->link对应/dev/pts/xxx,那么tty->link->link又对应回ptmx同样ptm_driver->other等于pts_driver,pts_driver->other等于ptm_driver]主动创建,而非通过netlink的udev或者hotplug配合创建[luth
阅读全文
摘要:原文链接:http://os.51cto.com/art/201104/256477.htmLinux的普通进程(守护进程除外) 是终端的子进程,进程的存在要依赖终端为其提供空间包括标准输入、标准输出、标准出错。比如,在ssh的客户端启动一个连入linux的终端,运行pstree命令,可以看到如下结果:可以看到pstree相当于当前终端启动的一个子进程。然后,我们在输入sleep 2000 &命令,让终端启动一个在后台运行的sleep进程,接下来再运行pstreee;可以看到,启动了一个pid为1354的进程,然后该进程的父进程为sshd,也就是ssh服务启动的终端;然后,在/proc
阅读全文
摘要:基本概念:1> tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。2> pty(虚拟终端):但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)3> pts/ptmx(pts/ptmx结合使用,进而实现pty):pts(pseudo-terminal slav
阅读全文
摘要:PS:这里的缓冲与非缓冲的区别是相对于用户进程,下文的“非缓冲文件系统”指用户的程序没有缓冲区,不要误解为系统没有缓冲区。1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定。fopen, fclose,
阅读全文
摘要:C语言中open函数作用:打开和创建文件。简述:1234#include int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);返回值:成功则返回文件描述符,否则返回 -1对于open函数来说,第三个参数仅当创建新文件时(即 使用了O_CREAT 时)才使用,用于指定文件的访问权限位(access permission bits)。pathname 是待打开/创建文件的POSIX路径名(如/home/user/a.cpp);flags 用于指定文件的打开/
阅读全文
摘要:Linux文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。linux文件的删除方式是用rm 命令。Linux文件类型;Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)。Linux文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等;现在我们进行一个简要的说明;1 普通文件[root@localhost ~]# ls -
阅读全文
摘要:Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号 一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账 号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。实现用户账号的管理,要完成的工作主要有如下几个方面:· 用户账号的添加、删除与修改。· 用户口令的管理。· 用户组的管理。一、Linux系统用户账号的管理 用户
阅读全文
摘要:ssh远程连接准备工作:1 准备两台linux pc 我们一般用的是VMware虚礼软件2 这两台linux可以互通3 linux1 :192.168.2.2 这台为你要连接的服务器linux2 :192.168.2.34 防火墙关闭5 ssh这个套件一定要安装,不过默认的都是安装好的操作步骤linux客户机[root@localhost~]#ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):Created directo
阅读全文
摘要:关于SSH,几乎每个人都同意密钥要优于密码,更安全,并且更先进,但我并不同意这个观点。虽然密钥的确可以更好,但它有着还没被意识到的严重风险,并且我认为比得到妥善管理的密码更不安全。通常密钥更好的理由是多数人使用了弱密码,并且系统之间共享密码,所以一旦发生密码泄漏就会同时危害到多个系统。既然密钥可以设置口令,那么同时拥有两者(密钥和口令)的它当然就更安全了。这的确没错,但是在大多数得到妥善管理的环境中事实上并非如此,他们没明白真正的风险到底源自哪里,来自哪一步。举个例子,如果我们在每个地方都使用硬性的随机密码,并且不在两个系统、服务,等等之间共享任何密码,在系统搭建的时候就使用工具和流程来这么做
阅读全文
摘要:一、概述1、就是为了让两个linux机器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA来完成这个操作2、模型分析假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;要达到的目的:A机器ssh登录B机器无需输入密码;加密方式选 rsa|dsa均可以,默认dsa二、具体操作流程单向登陆的操作过程(能满足上边的目的):1、登录A机器 2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub3、将 .pub 文件复制到B机器的 .ssh 目录,并 c
阅读全文
摘要:就像莎士比亚的“To be, or not to be, that is the question”始终困扰着哈姆雷特,对于“进程还是线程?”这个问题,也经常困扰着那些进行软件架构设计的家伙。所以今天打算聊一下我对这个问题的体 会。假如你还搞不清楚线程和进程的区别,请先找本操作系统原理的书好好拜读一下,再回来看帖。 由于这个问题很容易引发口水战,事先声明如下:多进程和多线程,无法一概而论地说谁比谁好。因此本帖主要描述特定场景(与我所负责的产品相关)下,进程和线程的权衡经验,仅供大伙儿参考。 由于特定场景是本帖讨论的前提,先说说我目前负责的产品的特点:业务逻辑比较复杂、业务数据量比较大、对数..
阅读全文
摘要:最近学习过程中老是看JDK里面的东西,可每次都翻书找,找了又忘。JDK,我们今天来个了断吧。。。。。。。。 一:bin: JDK中所包含的开发工具的可执行文件,PATH环境变量应该包含一个指向此目录的项。书中是这样说的:一些命令行工具,包括Java编译器的启动命令。二:lib: 开发工具使用的文件。里面有个tool.jar,它包括支持JDK的工具和实用程序的非核心类。里面还有个dt.jar,它是BeanInfo文件的 DesignTime归档,BeanInfo文件用来告诉交互开发环境〔IDE〕如何显示Java组件以及如何让开发人员根据应用程序自定义它们。 书中解释:除去jre中包含的类库,JD
阅读全文
摘要:http://www.cnblogs.com/perfy/archive/2012/07/23/2605550.html
阅读全文
摘要:1、/bin :获得最小的系统可操作性所需要的命令2、/boot :内核和加载内核所需的文件3、/dev :终端、磁盘、调制解调器等的设备项4、/etc :关键的启动文件和配置文件5、/home :用户的主目录6、/lib :C编译器的库和部分C编译器7、/media :可移动介质上文件系统的安装点8、/opt :可选的应用安装包9、/proc :所有正在运行进程的映像10、/root :超级用户的主目录11、/sbin :引导、修复或者恢复系统的命令12、/tmp :每次重新引导就消失的临时文件13、/usr :次要文件和命令的层次结构14、/usr/bin :大多数命令和可执行文件15、/
阅读全文
摘要:Linux,unix在内核中设有 缓冲区高速缓冲或页面高速缓冲,大多数磁盘I/O都通过缓冲进行,采用延迟写技术。sync:将所有修改过的快缓存区排入写队列,然后返回,并不等待实际写磁盘操作结束fsync:只对有文件描述符制定的单一文件起作用,并且等待些磁盘操作结束,然后返回。fdatasync:类似fsync,但它只影响文件的数据部分。fsync还会同步更新文件的属性。fflush:标准I/O函数(如:fread,fwrite)会在内存建立缓冲,该函数刷新内存缓冲,将内容写入内核缓冲,要想将其写入磁盘,还需要调用fsync。(先调用fflush后调用fsync,否则不起作用)传统的U N I
阅读全文
摘要:直入主题-基本磁盘硬盘数据按照不同特点和作用大致分为5部分:MBR区、DBR区、FAT区、DIR区和DATA区1.MBRMBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统
阅读全文
摘要:分区引导记录操作系统的引导过程的一个环节,系统启动时顺序 BIOS -> MBR -> DPT -> PBR-> 寻找根目录下 NTLDR(XP)/bootmgr(WIN7/Vista)/grldr(Grub)/btldr.mbr(BootLink) 等可用于引导的程序。 分区的PBR (Partition Boot Record)可以加载该分区的io.sys (dos / win9x) 或 ntldr(win2000 xp 2003) 或 bootmgr (vista / win2008 / win7) 。PBR (Partition Boot Record)PBR是
阅读全文
摘要:http://www.cnblogs.com/rocketfan/archive/2009/10/02/1577361.htmlhttp://blog.csdn.net/ithomer/article/details/6103530http://wenku.baidu.com/link?url=SbjiZ7EihZXsvWecguJPsoc43zMlu82WxCwd_bvDj29XpbkWfXSUhrrw7VOolxlcUPK0up3EEaVkREabxewcM7fXfwItpPrzqTk2is2jxYS###http://www.cnblogs.com/devil-91/archive/20
阅读全文

浙公网安备 33010602011771号