客户端和服务器通过因特网这个全球网络来通信.从程序员的观点来看,我们可以把因特网看成是一个全球范围的主机集合,具有以下几个属性: 1.每个因特网主机都有一个唯一的 32 为名字,称为它的 IP 地址 2.IP 地址的集合被映射为一个因特网域名的集合 3.不同因特网主机上的进程能够通过链接互相通信 客户端和服务器通过套接字接口建立连接.一个套接字是连接的一个端点,连接以文件描述符的形式提供给应用程序.套接字接口提供了打开和关闭套接字描述符的函数.客户端和服务器通过读写这些描述符来实现彼此间的通信…
客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型的.采用这个模型,一个应用是由一个服务器进程和一个或者多个客户端进程组成.服务器管理某种资源,并且通过操作这种资源来为它的客户端提供某种服务. 事务 客户端-服务器模型中的基本操作是事务,一个客户端-服务器事务由以下四步组成. 1.当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务.例如,当 Web 浏览器需要一个文件时,它就发送一个请求给 Web 服务器. 2.服务器收到请求后,解释它,并以适当的方式操作它的资源.例如,当…
第十一章 网络编程 我们需要理解基本的客户端-服务端编程模型,以及如何编写使用因特网提供的服务的客户端-服务端程序. 最后,我们将把所有这些概念结合起来,开发一个小的但功能齐全的Web服务器,能够为真实的Web浏览器提供静态的和动态的文本和图形内容. 11.1 客户端 - 服务器编程模型 每个网络应用程序都是基于客户端 - 服务器模型的 采用这种模型,一个应用是由一个服务器进程 和一个或多个客户端进程组成. 服务器管理某种资源,并且通过操作这种资源为它的客户端提供某种服务. WEB服务器,代表客…
CSAPP:第十一章 网络编程 11.1 客户端服务器模型11.2 全球IP因特网11.3 套接字接口 11.1 客户端服务器模型   每个网络应用都是基于客户端-服务器模型.采用这个模型,一个应用是由一个服务器进程和一个或者多个客户端进程组成.  客户端-服务器模型的基本操作是事务.一个客户端-服务器事务由以下四步组成. 当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务. 服务器收到请求后,解释它,并以适当的方式操作它的资源. 服务器给客户端发送一个响应,并等待下一个请求. 客户端…
三种构造并发程序的方法及其优缺点 1.进程 用这种方法,每个逻辑控制流都是一个进程,由内核来调度和维护.因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显式的进程间通信机制. 优点: 由于进程有独立的地址空间,所以一个进程不可能不小心覆盖另一个进程的虚拟内存,这就消除了许多令人迷惑的错误 缺点: (1)还是由于进程有独立的地址空间,使得进程共享状态信息变得更加困难.为了共享信息,它们必须使用显式的 IPC(进程间通信)机制. (2)由于进程控制和 IPC 的开销很高,所以这种方…
了解 Unix I/O 的好处 了解 Unix I/O 将帮助我们理解其他的系统概念 I/O 是系统操作不可或缺的一部分,因此,我们经常遇到 I/O 和其他系统概念之间的循环依赖.例如,I/O 在进程的创建和执行中扮演着关键的角色.反过来,进程创建又在不同进程间的文件共享中扮演着关键角色.因此,要真正理解 I/O,我们必须理解进程,反之亦然.在对存储器层次结构.链接和加载.进程以及虚拟内存的讨论中,我们已经接触了 I/O 的某些方面,在这个基础上,我们就能闭合整个循环,更好地研究 I/O. 应用…
@by Ruth92(转载请注明出处) 第7章 网络编程 Node 只需要几行代码即可构建服务器,无需额外的容器. Node 提供了以下4个模块(适用于服务器端和客户端): net -> TCP dgram -> UDP http -> HTTP https -> HTTPS OSI 模型:由七层组成,分别为物理层.数据链路层.网络层.传输层.表示层.应用层. 一.构建 TCP 服务 TCP TCP(传输控制协议),属于传输层协议,是面向连接的协议. 许多应用层协议基于 TCP 构…
第七章读书笔记 链接 链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.(这个文件可被加载或拷贝到存储器并执行) 链接可以执行于编译,加载或运行时. 静态链接: 两个主要任务: 1 符号解析:将目标文件中的每个全局符号都绑定到一个唯一的定义 2 重定位:确定每个符号的最终存储器地址,并修改对那些目标的引用 符号表: typedef struct{ int name; //字符串表中的字节偏移,指向符号的以NULL结尾的名字 int value; //符号的地址,对于可重定位的模块是…
网络编程 一.网络编程基础 python 的网络编程模块主要支持两种Internet协议: TCP 和 UDP. 1.1通信协议 通信协议也叫网络传输协议或简称为传送协议(Communications Protocol),是指计算机通信或网络设备的共同语言. 现在最普及的计算机通信为网络通信,所以"传送协议"一般都指计算机通信的传送协议,如:TCP/IP.NetBEUI.HTTP.FTP等. 然而,传送协议也存在于计算机的其他形式通信,例如:面向对象编程里面对象之间的通信:操作系统内不…
1.计算机基础 作为应用开发程序员,我们开发的软件都是应用软件,而应用软件必须运行于操作系统之上,操作系统则运行于硬件之上,应用软件是无法直接操作硬件的,应用软件对硬件的操作必须调用操作系统的接口,由操作系统操控硬件. 比如客户端软件想要基于网络发送一条消息给服务端软件,流程是: 1.客户端软件产生数据,存放于客户端软件的内存中,然后调用接口将自己内存中的数据发送/拷贝给操作系统内存 2.客户端操作系统收到数据后,按照客户端软件指定的规则(即协议).调用网卡发送数据 3.网络传输数据 4.服务端…
9.11 A. 00001001 111100 B. +----------------------------+ | Parameter Value | +----------------------------+ | VPN 0x09 | | TLB index 0x01 | | TLB tag 0x02 | | TLB hit? N | | Page fault? N | | PPN 0x17 | +----------------------------+ C. 010111 11110…
对此书已经慕名已久了,抽空看了第1,2,3,5章,其他章节等有空闲继续看吧. 我的许多博客是给自己快速复习使用的,比如此读书后感,你可以根据我下面的建议读完原书几章再回来复习一下(或许那时候就没必要回来这里复习了): 第一章个人认为必须看,理由有: 1.它很短,花不了多少时间 2.它有趣味,我犹记得看此章节的畅快. 第二章个人认为必须看,而且要认真看,不要跳 第三章个人认为最好看一看,但或许用处不会太大,讲的是程序的汇编级代码,可以用来调试.逆工程.查看性能等 第四章我还没看 第五章个人认为只需…
全部章节   >>>> 本章目录 4.1 网络基础知识 4.1.1 IP地址 4.1.2 端口号 4.1.3 使用InetAddress 4.1.4 InetAddress 类的具体操作 4.1.5 实践练习 4.2 基于TCP协议的网络编程 4.2.1 TCP 协议基础 4.2.2 创建服务端套接字 4.2.3 创建客户端套接字 4.2.4 基于TCP的通信 4.2.5 实践练习 4.3 使用 Socket 类进行单向通信 4.3.1 服务端读取数据 4.3.2 客户端发送数据…
//网络编程发送端--大文件传输(UDP) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arp…
在进行网络编程之前,先对网络以及互联网协议做一个了解. 推荐阮一峰的博客:(感谢) http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html --再去看一遍先-- --看完了-- 16.1引言 客户端.服务器架构 服务器是一个软件或者硬件,用来想一个或多个客户端提供所需要的“服务”.其中,硬件是指打印机.文件服务器等.软件服务器提供的服务主要是程序的运行.数据的发送与接收.合并.升级.或其他的程序或数据操…
▶ 书中第十一章的程序,主要讲了 Windows 接口,在小黑框中进行程序交互 ● 在屏幕指定位置输出带自定义属性的文字 INCLUDE Irvine32.inc .data outHandle HANDLE ? cellsWritten DWORD ? ; 输出计数(输出参数) xyPos COORD <,> ; 输出坐标 buffer BYTE 41h,42h,43h,44h,45h,46h,47h,48h,49h,4Ah,4Bh,4Ch,4Dh,4Eh,4Fh,50h,51h,52h,5…
01-计算机基础 02-什么是网络 03-五层协议详解 04-传输层详解 05-什么是Socket 06-基于socket实现简单套接字通信 07-在简单套接字基础上加上通信循环 08-客户端与服务端代码bug修复 09-实现服务端对多个客户端提供服务 10-模式ssh远程执行命令-项目分析 11-模拟ssh远程执行命令-代码实现 12-粘包现象 13-粘包底层原理分析 14-解决粘包问题-伪代码实现 15-解决粘包问题-简单版本 16-解决粘包问题-终极版本 17-文件传输功能实现 18-文件…
<深入理解计算机系统> 第三版 第二遍读这本书,每周花两到三小时时间,能读多少读多少(这次看了 29 ~ 34 页) 第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9866674.html 对于跨越多字节的程序对象,有两个规则必须建立 1.这个对象的地址是多少? 一般使用所有字节中最小的地址作为对象的地址 2.这个对象的内容在内存中如何排列? 有两种排列方法 (1)大端法 最高有效为放在前面 (2)小端法 最低有效位放在前面 Android 和 IOS…
第二遍读这本书,每周花两到三小时时间,能读多少读多少(这次看了第 508~530 页,共 23 页) 第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/10206004.html 进程是计算机科学中最深刻.最成功的概念之一.(尽管看了书中关于进程的很多描述,我还是理解不了这句话,不是说怀疑这句话的正确性,只是自己不能理解,或许以后看得多了就能理解了) 进程和应用程序的关系 “进程的经典定义就是一个执行中的程序的示例” 那么,是否可以将它们的关系类比于 Jav…
01-进程与程序的概念 02-操作系统介绍 03-操作系统发展历史-第一代计算机 04-操作系统发展历史-批处理系统 05-操作系统发展历史-多道技术 06-操作系统发展历史-分时操作系统 07-总结操作系统功能与多道技术 08-进程理论 09-开启子进程的两种方式 10-查看进程的pid与ppid 11-僵尸进程与孤儿进程 12-Process对象的其他属性或方法 13-练习题讲解 14-守护进程 15-互斥锁 16-模拟抢票 17-互斥锁与join的区别 18-队列的使用 19-生产者消费者…
第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9943779.html 本章汇编代码中常出现的几个指令及其含义 1.push 操作数的个数:1 将操作数(一般是寄存器)的值压入栈中,由于栈向下生长,所以这时栈顶指针会减小一点 2.move 操作数的个数:2 第一个操作数是源操作数,第二个操作数是目的操作数,该指令将源操作数的值赋给目的操作数 3.call 操作数的个数:1 调用某个方法,栈的变化没有完全弄明白 4.pop 操作数的个数:1 将栈顶元素赋给…
第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9905345.html 机器级代码 计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节.对于机器级编程来说,其中两种抽象尤为重要.第一种是由指令集体系结构或指令集架构(Instruction Set Architecture,ISA)来定义机器级程序的格式和行为,它定义了处理器状态.指令的格式,以及每条指令都是按顺序执行的,一条指令结束后,下一条再开始.处理器的硬件远比描述的精细复杂,…
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 本书中的许多例子关注的是读取文件并查找数据,但在互联网中还有许多不同信息源. 本章我们将伪装成浏览器用超文本传送协议(HTTP)从网站获取网页,通读并分析它. 12.1 超文本传送协议-HTTP 支撑网页运转的网络协议实际非常简单,在Python中内置了套接字(socket)模块,使得使用套接字创建网络连接并获取数据变得非常容易. 套接字最…
Socket编程原理 Socket是网络通信端点的一种抽象,它提供了一种发送和接收数据的机制. 流socket(SOCK_STREAM):双向.有序.无重复.并且无记录边界 数据报Socket(SOCK_DGRAM):双向.保留记录边界 面向连接的操作比无连接的操作效率低,但数据的安全性更高. Socket通信流程 IP地址标志主机,端口号标志进程,IP加上端口号才能确定连接目标.…
如题所示,这一章讲解了程序在机器中是怎样表示的,主要讲汇编语言与机器语言. 学习什么,为什么学,以及学了之后有什么用 我们不用学习如何创建机器级的代码,但是我们要能够阅读和理解机器级的代码. 虽然现代的优化编译器能够很有效的将高级代码翻译成机器级的代码,但是,为了能够达到以下 2 点目的,我们还是要能够阅读和理解机器级的代码: 1.通过查看程序对应的汇编代码,可以了解程序的运行效率,然后可以采取相应措施提高其效率 2.系统程序中的漏洞会被人利用,导致安全问题.了解这些漏洞是如何出现的,以及如何防…
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.9 词汇表 BeautifulSoup: 一个用于分析HTML文档,并从中抓取数据的Python库.它弥补了大部分在浏览器中被忽略的HTML缺陷.你可以从www.crummy.com下载BeautifulSoup代码. port:端口.当你用套接字链接服务器,通常表示正在联系的的服务器应用程序的数字.例如,网页服务使用80端口,电子邮…
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.8 用urllib读取二进制文件 有时你想获取一个非文本文件,或者说二进制文件,比如图像或视频.这些文件中的数据不用打印出来,但是你可以轻松地用urllib从网络获取一份拷贝到你的硬盘. 打开网络地址,读取并下载整个文档的内容至一个字符串变量(img),然后把文档内容写到本地文件的方式如下: import urllib.request…
1.  TCP/IP协议模型 应用层:应用程序: 传输层:将数据套接端口,提供端到端的通信服务: 网络互联层:负责数据包装.寻址和路由,同时还包含网间控制报文协议: 网络接口层:提供TCP/IP协议的数据结构和实际物理硬件之间的接口. 2.  端口: 端口,就是应用程序用于数据交互的通道,用于实现程序间的通信.每个应用程序都有固定的端口.Telnet--23   SMTP—25   FTP—21    HTTP—80 3.  TCP协议: 较可靠的双向流协议: 三次握手: 提供消息确认.错误检测…
11 网络问题 11.1 IP地址更改 请参阅wiki 处理IP地址更改.请注意,本指南使用PJSUA API作为参考. 11.2 被阻止/过滤的网络 请参阅维基百科 通过阻止或过滤的VoIP网络…