Linux网络编程学习路线】的更多相关文章

转载自:https://blog.csdn.net/lianghe_work/article 一.网络应用层编程   1.Linux网络编程01——网络协议入门 2.Linux网络编程02——无连接和面向连接的区别 3.Linux网络编程03——字节序和地址转换 4.Linux网络编程04——套接字 5.Linux网络编程05——C/S与B/S架构的区别 6.Linux网络编程06——UDP协议编程 7.Linux网络编程07——广播 8.Linux网络编程08——多播 9.Linux网络编程0…
由于网络编程是很重要的一块,自己这一块也比较欠缺,只知道一些皮毛,从今天开始系统学习<Linux网络编程>一书,全书分为十四个章节: 第一章   概论   P1-16 第二章   UNIX/LINUX模型 P17-20 第三章   进程控制  P22-50 第四章   进程间通信 P50-120 第五章  通信协议简介 P120-P135 第六章  Berkeley套接字 P136-P205 第七章 网络安全性 P206-220 第八章  Ping例程 P221-P222 第九章  TFTP例…
对于使用过程中并发.通过实现更轻量级线程. 每个线程都是一个独立的逻辑流. 主题是CPU在执行调度的最小独立单位,这个过程是资源分配单元.当然,这是在微内核操作系统说.总之,这是唯一的一个操作系统内核提供了最重要的OS服务,许多人看点击打开链接 每一个线程有它自己的线程上下文.包含一个唯一的线程ID(linux上实现为unsigned long),栈,栈指针.程序计数器.通用目的寄存器和条件码,还有自己的信号掩码和优先级.同一个进程里的线程共享这个进程的整个虚拟地址空间,包含可运行的程序文本.程…
该书提前看完了,重点看了第四章和第六章,第七章以后只是大致浏览了一下,如果以后工作中涉及这一块再仔细研究一下,大概花了二十天的样子,主要了解了进程间的通信方式.socket编程以及五种I/O模式,看的过程中只是了解了基本概念,还没有实战经验,只看一遍书是不可能完全掌握的,重在了解基本概念,以后看到就不那么陌生了,更有亲近感,在此结贴了,后续打算学习一下设计模式了,加油,非计算机科班出身,知识面还需要不断扩展.…
前言:由于第五章主要介绍了TCP和UDP协议以及两者的包头的字段以及相应的功能,这里就不介绍了,对着字段看功能就好了,后续开始学习第六章 1.Socket Socket实质上就是提供了通信的端点,每个socket都用一个半相关描述{协议,本地地址,本地端口},完整的socket描述{协议,本地地址,本地端口,远程地址,远程端口} 可以这样解释:套接字是通过标准的UNIX文件描述符和其他的程序通讯的一个方法. 2.Socket的三种类型 1)流式套接字(SOCK_STREAM) 提供可靠.面向连接…
进程线程分配方式 简述下常见的进程和线程分配方式:(好吧,我仅仅是举几个样例作为笔记...并发的水太深了,不敢妄谈...) 1.进程线程预分配 简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销.能够在请求到达前预先进行分配. 2.进程线程延迟分配 预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销.由此,有个折中的方法是,当某个处理须要花费较长时间的时候,我们创建一个并发的进程或线程来处理该请求.实现也非常easy,在主线程中定时,定…
首先是fork()函数.移步APUE 8.3.  比較清晰的解释能够參考http://blog.csdn.net/lingdxuyan/article/details/4993883和http://www.oschina.net/question/195301_62902 补充一点是:fork返回后,原进程中的每一个文件或套接口描写叙述符的引用计数加1(相当于被多打开了一次),每调用一次close,引用计数减1,仅仅有当引用计数减到0时才会真正关闭该套接字. 可运行文件被linux运行的唯一方式…
1.五种I/O模式是哪几个? 阻塞I/O,非阻塞I/O,I/O多路复用,信号驱动I/O(SIGIO),异步I/O 一般来讲程序进行输入操作有两个步骤,一是等待有数据可读,二是将数据从系统内核中拷贝到程序的数据集区. 对于一个套接字的数据操作,第一步就是等待数据从网络上传到本地,当数据包到达时,数据将会从网络层拷贝到内核的缓冲中,第二步就是从内核中将数据拷贝到程序的数据区中. 2.五种阻塞模式简介 1)阻塞I/O模式 套接字建立后默认的模式就是阻塞I/O模式,对于UDP而言,数据就绪的标志比较简单…
1.System V IPC System V中引入的几种新的进程间通信方式,消息队列,信号量和共享内存,统称为System V IPC,其具体实例在内核中是以对象的形式出现的,称为IPC 对象,每个IPC对象在内核中都有一个唯一的标识符.这个标识符的唯一性在同一类IPC中成立,不同IPC的标识符可以相同.IPC对象三个知识点差不多,有一个数据结构,还有各自的使用的函数,这里只以消息队列为例,信号量和共享内存大家自己去看咯. IPC对象在程序中是使用关键字key来访问,服务端和客户端用的关键字必…
1.什么是有名管道?为什么有了管道还需要有名管道? 有名管道是解决管道不能提供非父子进程间通信的缺陷.管道在Linux系统内部是以文件节点(inode)的形式存在,但由于其对外的不可见性(“无名”性),就无法创建新的句柄对其进行访问.而有名管道则以一种特殊的设备文件的形式存在于文件系统中,这样,有名管道不仅有了管道的通信功能,还具备普通文件的优点,也就是可以被对个进程共享,可以长期存在等. 2.有名管道的创建 有名管道是文件系统中的文件节点,可以通过建立文件节点的方式创建有名管道,可以用命令 #…
1.基本概念 进程阻塞: 进程执行条件得不到满足,就自动放弃CPU资源而进入休眠状态,以等待条件满足,当条件满足时,系统就将控制权还给该进程进行未完成的操作 共享资源: 进程间协调使用的系统资源 锁定: 当某个进程使用共享资源时,可能需要防止别的进程对该资源的使用.Linux提供一些方法保证共享资源被某个进程使用时,其他进程不能使用,就称为共享资源的锁定 2.信号 信号的作用是通知一个或多个进程异步事件的发生,也可以用来处理某种严重的错误,可以从内核发往进程,也可以从一个进程发往另一个进程, 例…
1.进程和程序 程序是一个可执行文件,而一个进程是一个执行中的程序实例.一个进程对应于一个程序的执行,进程是动态的,程序是静态的,多个进程可以并发执行同一个程序.比如几个用户可以同时运行一个编辑程序,每个用户对此程序的执行均作为一个单独的进程. 2.进程控制的系统调用一个进程可以启动另一个进程,进程之间形成层次结构,而进程树的顶端是一个控制进程,一个名为Init的程序的执行,该进程是所有用户进程的祖先.主要的系统调用有 fork()   通过复制调用进程来建立新的 进程,是最基本的进程建立操作…
1.什么是计算机网络,通信方式是什么? 计算机网络就是通过通信线路相互连接的计算机的集合,主要通过双绞线.同轴电缆.电话线或者光缆等有形传输介质通信,还有就是通过激光.微波.卫星等实现无线通信 2.WAN和LAN 广域网和局域网,局域网通常有较高的通信速率,有限的地理范围,为一个部门所有 3.TCP/IP协议的基本思想 通过网间连接器,也就是gateway将各种不同的网络连接起来,在各个网络的低层协议之上构造一个虚拟的大网,使用户和其他网的通讯就像和与本网的主机通信一样方便 4.OSI的七层协议…
errno 在unix系统中对大部分系统调用非正常返回时,通常返回值为-1.并设置全局变量errno(errno.h),如socket(), bind(), accept(), listen(). erron存放一个正整数来保存上次出错的错误值. 对线程而言.每一个线程都有专用的errno变量.不必考虑同步问题. strerror converts to English (Note: use strerror_r for thread safety) perror is simplified s…
1.什么是文件和记录锁定? 文件锁定的是整个文件,而记录锁定只锁定文件的一部分,文件和记录锁分为咨询式锁定和强制锁定 1)咨询式锁定 某个进程对某个文件进行了咨询式锁定,其他想访问该文件的进程将会被操作系统告知文件已经上锁,但并不阻止这些进程对锁定文件的操作,只要有对锁定文件的存取权,这些进程便可忽略咨询式锁定而去写文件.比如Symtem V和BSD两种锁 2)强制锁定 操作系统会对每一个读写文件的请求进行核查,只有在确认该请求下不会干扰上了锁的文件,才允许对应的操作. 2.System V的咨…
1.管道的定义 管道就是将一个程序的输出和另外一个程序的输入连接起来的单向通道,比如命令: ls -l|more,就建立了一个管道,获取ls -l的输出作为more的输入,数据就沿着管道从管道的左边流到了管道的右边. 实际上内核为进程建立了两个句柄f1和f2,进程通过句柄f1向管道写入数据,同时通过f2从管道读出数据,这里是同一个进程建立了自己的管道 进程间的管道:通过fork出来的子进程,与父进程一样,拥有对同一个管道的读写句柄,但管道是单向的,因此要决定数据流向,如父进程到子进程或者子进程到…
本文介绍一个例程daemon_init() #include <sys/types.h> #include <signal.h> #include <unistd.h> #include <syslog.h> #define MAXFD 64 void daemon_init(const char *pname, int facility) { int i: pid_t pid; /* fork,终止父进程 */ if (pid = fork()) exit…
本节主要介绍一个进程控制的实例,功能就是在前台或者后台接收命令并执行命令,还能处理由若干个命令组成的命令行,该程序命名为samllsh. 基本逻辑就是 while(EOF not typed) { 从用户终端取得命令行 执行命令 } setp1:取得命令行内容,用uerin函数实现,处理步骤首先显示提示符,提示符的具体内容由用户通过参数传递给函数,然后每次从键盘读取一个字符,存入inpbuf中,结束时userin返回字符个数或者EOF(文件结尾),换行符也要存入inpbuf 代码如下: #inc…
春节过后,万物复苏,在这元宵佳节的前一天,决定继续开启新年的学习计划,生命在于运动,提高源于学习,在经过漫长的Linux网络编程学习后,接下来会以一个综合的小项目来将所学的知识点综合运用,首先是对项目的一些概念进行了解,纯理论,有些枯燥,但是很重要,当然不用去背,大概了解一下既可,下面开始. FTP简介 文件传输协议FTP(File Transfer Protocol,由RFC 959描述). FTP工作在TCP/IP协议族的应用层,其传输层使用的是TCP协议,它是基于客户/服务器模式工作的.…
c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: (美)Greg Perry    [作译者介绍] 译者: 谢晓钢 刘艳娟 丛书名: 图灵程序设计丛书 C/C++系列 出版社:人民邮电出版社 ISBN:9787115216359上架时间:2009-12-10出版日期:2010 年1月开本:16开页码:308 说明:这本是入门最好的,最简单,最好懂 2.<…
Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到, Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该是Windows的优点)相比,后者无疑在易操作 性上更胜一筹.但是为什么又有那么多的爱好者钟情于Linux呢,当然自由是最吸引人的一点,另外Linux强大的功能也是一个非常重要的原因,尤其是 Linux强大的网络功能更是引人注目.放眼今天的WAP业务.银行网络业务和曾经红透半边天的电子商务,都越来越倚重基于L…
http://blog.csdn.net/cloudtech/article/details/1823531 Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到,Linux和Windows这样的傻瓜操作系统(这里丝毫没有贬低Windows的意思,相反这应该是Windows的优点)相比,后者无疑在易操作性上更胜一筹.但是为什么又有那么多的爱好者钟情于Linux呢,当然自由是最吸引人的一点,另外Linux强大的功能也是一个非常重要的原因,尤其是Linux强大的网络功能更是…
Linux C++ 网络编程学习系列(1)--端口复用实现 源码地址:https://github.com/whuwzp/linuxc/tree/master/portreuse 源码说明: server1.cpp: 监听127.1:6666,功能是将收到的小写转大写 server2.cpp: 监听192.132:6666, 功能是接收数据, 将自己的数据从大写转小写, 把不是自己的数据转发给server1处理(判断方法是头三个字符是不是123) client.cpp: 客户端, 地址在: ht…
Linux 系统编程 学习:006-基于socket的网络编程1:有关概念 背景 上一讲 进程间通信:System V IPC(2)中,我们介绍了System IPC中关于信号量的概念,以及如何使用. 这一讲我们来讨论"BSD socket(简称socket)",作为Linux中进程间通信的最后一种方式.实际上,socket可以跨主机通信. 本来文章标题应该以"进程间xxx"为字眼的,但是在开发中,我们更多提及"基于socket的网络编程". 知…
Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信 背景 上一讲我们介绍了网络编程的一些概念.socket的网络编程的有关概念 这一讲我们来看UDP 通信. 知识 UDP:User Datagram Protocol的缩写. UDP不提供复杂控制机制,利用IP提供面向无连接的通信服务.且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制. UDP面向无连接,可以随时发送数据.它常用于几个方面: 包总量较少的通信(DNS.SNMP等) 视频…
看了下各位大神的推荐路线,总结如下: 0. 跟着项目走: 1. 学会用.熟练用linux系统: 2. Linux Kernel Development. 3. Understanding the Linux Kernel. 4. Linux Device Driver. 5. 找一个感兴趣的子系统研究,认真研究代码,这里的建议是可以看提交的每个change.比如网络子系统:Understanding linux network internels. “严谨而细致的仔细分析它的代码,不懂的地方就通…
创作不易,点赞关注支持一下吧,我的更多原创技术分享,关注公众号「后端技术学堂」第一时间看! 最近在知乎经常被邀请回答类似如何学习C++和C++后台开发应该具体储备哪些基础技能的问题. 本身我从事的的C++后台开发的工作,目前在腾讯从事软件开发工作,所以写这篇文章,分享自己的C++后台开发学习路径和点过的技能树,希望能给想从事后台开发的同学一点参考,若能帮你少走些弯路就更好. 工欲善其事必先利其器,好的书籍能让学习事半功倍,所以每个技能点之后我会推荐一些书,都是我读过且口碑不错的书,供参考. 文末…
❝ 文章每周持续更新,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ❞ 最近在知乎经常被邀请回答类似如何学习C++和C++后台开发应该具体储备哪些基础技能的问题. 本身我从事的的C++后台开发的工作,目前在鹅厂从事软件开发工作,所以写这篇文章,分享自己的C++后台开发学习路径和点过的技能树,希望能给想从事后台开发的同学一点参考,若能帮你少走些弯路就更好. 工欲善其事必先利其器,好的书籍能让学习事半功倍,所以每个技能点之后我会…
[深入浅出Linux网络编程]是一个连载博客,内容源于本人的工作经验,旨在给读者提供靠谱高效的学习途径,不必在零散的互联网资源中浪费精力,快速的掌握Linux网络编程. 连载包含4篇,会陆续编写发出,欢迎持续关注,分别如下: 1,开篇 -- 知其然,知其所以然 2,基础 -- 事件触发机制 3,实践 -- TCP & UDP 4,应用 -- 基于轮子造汽车 该连载博客假设读者对Linux网络编程充满了学习兴趣,并且清楚的明白学习Linux网络编程能够解决什么问题,从而可以将博客重点放在内容本身,…
本文属于转载,稍有改动,以利于学习. (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程…