(1)网络应用程序体系结构: 1、客户——服务器结构:这个结构的话就是服务器是中心,客户与中心服务器连接。客户端之间不会相互通信,并且服务器有一个固定的公共的IP地址。 2、p2p结构:(这个结构与客户——服务器结构的区别就是在这个结构中不存在中心服务器)括号里是我自己写出的P2P结构的理解,是错误的,实际上,在P2P结构中客户端对位于中心的服务器依赖很小甚至没有依赖,客户端和客户端是可以相互通信的,像树的分支一样。位于中心的服务器用于追踪用户的IP地址。 (2)进程间通信: 1、套接字:进程通过套接字向网络发送接收报文。在同一台主机内:套接字是应用层和网络层之间的接口,套接字也称为应用程序和网络之间的应用程序编程接口, 2、进程寻址:为了找到接收进程,我们需要两个信息:目的主机的地址和目的主机上接收进程的标识符。前者可以运用IP地址,而后者可以运用目的端口号。 3、应用层协议将为应用程序提供服务,那么提供服务可以按四个要求来讨论:可靠传输,吞吐量,定时,安全性: <1>可靠传 继续阅读 >>


梁梦迪 17/12/26 21:53:55
cookie AND session 首先cookie是用来标识用户身份以及追踪用户状态的,下面我用自己的话来描述一下cookie的工作流程~ 某一天,mendy第一次登录baidu这个网站。Baidu发现mendy是第一次登录,于是baidu会创建一个唯一的标识码给mendy,同时baidu会以这个标识码作为索引将标识码添加到后端的数据库中(这个标识码可能是cookie:1008),接下来,baidu会在http response中添加set-cookie:cookie:1008返回给mendy的浏览器。mendy的浏览器会将这个cookie信息添加到它的cookie文件中,下次mendy再一次访问baidu的时候,会从cookie文件中找到对应的cookie信息添加到http请求报文中发送给baidu服务器,(cookie包括过期时间,路径,域,名字,值。如果不设置cookie的过期时间,默认过期时间是浏览器的会话期间。如果不设置过期时间,cookie是存储在内存中的,如果设置了过期时间,coo 继续阅读 >>


梁梦迪 17/12/26 21:53:16
…. 1、先来回忆一下因特网网络层最基本的概念,采用自上而下的结构 (1)应用层 应用程序及应用层协议所在的位置(HTTP,FTP),位于这一层的分组叫报文 (2)运输层 应用层产生的报文到了这层,运输层给上一层的报文加上运输层头部(允许接收端的运输层向上一层应用程序交付报文信息,差错控制信息,在应用程序两个端点间传输) (3)网络层 运输层产生的报文段在这一层加上网络层头信息,包括目的地和源的地址,这一层产生的分组叫数据报文(从一台主机移动到另一台主机,完成这一层还需要链路层的帮助)。 (4)链路层 这一层的作用主要是运输,大概过程就是,网络的一个节点将数据报文传递给链路层,链路层再将该数据报文传送给网络层的另一个节点。这一层产生的分组叫帧。(将一个帧从一个网络元素移动到另一个网络元素) (5)物理层 这一层主要就是一些物理媒介。(将帧中的每一个比特从一个节点移动到下一个节点)。 2、网络中的网络 网络中的网络说白了我觉得就是ISP的互联…… (1)网络结构1: 有一个 继续阅读 >>


梁梦迪 17/12/26 21:51:48
1、什么是因特网? 我们平时使用的电脑,手机都可以称为端系统。因特网就是利用路由器(分组交换机)和链路将各个终端互联起来。 2、一些基本概念 (1)分组: 一个主机要向另外一个主机发送数据时,数据被分成很多段,每段前面还会加上特定的首部字节,这样的数据包就称为分组。 (2)因特网服务提供商(ISP): 主机就是通过ISP连接进互联网的,。ISP是一个由多个分组交换机和段通信链路组成的网络。各ISP都是互联的,初级ISP由高级国家ISP互联,高级ISP通过高速光纤链路互联的高速路由器组成.看了第一章后面的部分,其实ISP提供的主要服务就是另电脑啊,手机啊这些接入因特网,接入的方法就有下面提到的DSL,电缆,WIFI等等。 3、对因特网的另外一种理解 可以将因特网理解为为应用服务程序提供平台。那么一台主机如何向另外一台主机发送数据呢?这是因为与因特网连接的端系统提供了一个应用程序编程接口(API),该API规定了传输数据的方法,API是发送数据必须遵守的一套规则。 4、什么是协议 协议规 继续阅读 >>


梁梦迪 17/12/26 21:50:53
1、什么是跨与访问 跨域访问简单来说就是有两个域名去同时访问一个页面。提到跨域访问就很容易想到现在最常见的CSRF攻击。那么何为CSRF攻击呢?接下来我就简单的用语言描述一下~ 2、什么是CSRF攻击 现在有用户usr,网站A,恶意网站B。 1、用户usr去访问A 2、usr得到了A的cookies 3、在没有关闭登录网站A页面的情况下登录了恶意网站B 4、恶意网站B要求访问网站A 5、此时用户usr带着步骤2得到的cookies去访问网站A 6、此时网站A并不能识别到底是usr要访问还是恶意网站B要访问,这也就意味着,恶意网站B实现了隐藏自己身份,把自己伪装成usr的目的。 3、如何在nginx中设置允许跨域访问 这就是CSRF攻击的大概过程。因为存在CSRF攻击非常不安全,所以大多数浏览器是不允许进行跨域访问的。但是跨域访问有时候又是需要的,所以我们可以通过设置nginx来实现跨域访问。因为不太好演示,所以下面我仅列出一些配置语法: adder_header name 继续阅读 >>


梁梦迪 17/11/15 19:55:33
1、nginx的文件缓存是基于http协议的文件缓存机制。 2、浏览器第一次请求url 在浏览器第一次请求url的时候,服务器端无缓存,大致过程如下: 浏览器——>无缓存——>请求web服务器——>请求响应——>呈现 3、浏览器不是第一次请求url 若浏览器不是第一次请求url的时候,服务端有缓存,大致过程如下: 浏览器——>有缓存——>校验过期——>呈现 既然着这里提到了校验过期,那么接下来我们就来讨论一下校验过期机制。 4、校验过期机制 1、Expries & Cache_Control : 本地缓存文件http头部信息。Expires适用于http1.0,Cache-Control适用于http1.1,但现在基本上使用的都是http1.1协议,所以这里主要讨论一下Cache-Control。Cache-Control后面跟的是max-age,max-age定义了周期,即文件过期的周期。 2、Etag&Last-Modi 继续阅读 >>


梁梦迪 17/11/15 17:05:00
1、什么是nginx服务器 nginx是一个开源且高性能可靠的HTTP和反向代理服务器。 2、正向代理与反向代理 1、正向代理服务: 假设用户A要访问服务器C,但是由于某些原因用户发现无法访问的到服务器C,这时候,用户A就设置了代理服务器B,告诉B帮助自己去访问服务器C。于是,用户A将请求发送给服务器B,B将请求转发给服务器C,C接收到请求并处理后将反馈结果发送给B,再由B转发回给A。此时,对于服务器C,它并不知道是谁发送的请求。一般情况下所说的代理服务默认为正向代理。 2、反向代理服务: 假设用户A要请求资源X,这时候用户A将请求发送给反向代理服务器B,反向代理服务器分析用户的请求后决定将请求发送给哪个后端服务器处理并接收处理结果反馈给用户A。此时用户并不知道有反向代理服务器的存在,对于用户来说,反向代理服务器就相当于原始服务器。 3、nginx服务器的优点 1、使用IO多路复用epoll技术。 继续阅读 >>


梁梦迪 17/10/24 20:29:41
一、VA_LIST VA_LIST 是在C语言中解决变参问题的一组宏,用于获取不确定个数的参数。 1、用法 (1). 首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针; (2). 然后用VA_START宏初始化刚定义的VA_LIST变量; (3). 然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数,依次调用VA_ARG获取各个参数; (4). 最后用VA_END宏结束可变参数的获取; 2、成员详解 (1). VA_START宏:获取可变参数列表的第一个参数的地址。va_start(ap,v)(ap是类型为va_list的指针且ap指向第一个变参的位置,即将第一个变参的地址赋予ap,v是可变参数最左边的参数); (2). VA_ARG宏:获取可变参数的当前参数,返回指定类型并将指针指向下一参数。va_arg(ap,t)(t参数描述了当前参数的类型); (3). VA_END宏:清空va_list可变参数 继续阅读 >>


梁梦迪 17/09/06 22:32:52
I/O复用——select与poll 1. select (1). 作用: 在一段指定时间内,监听用户感兴趣的文件描述符上的可读、可写和异常事件。 (2). 函数原型: int select (int nfds,fd_set* readfds,fd_set* writefds,fd_set * exceptfds,struct timeval* timeout) <1>. nfds:指定被监听的文件描述符的总数。它通常被设置为select监听的所有文件描述符的最大值加1。 <2>. reafds、 writefds、exceptfds:分别指向可读,可写和异常等事件对应的文件描述符集合,内核通过修改它们来通知应用程序哪些文件描述符已经就绪。这三个参数是fd_set结构体指针类型。可以使用下列宏来访问fd_set结构体: - FD_ZERO(fd_set * fdset) /*清除fdset的所有位*/ - FD_SET(int fd, 继续阅读 >>


梁梦迪 17/07/31 17:24:58
利用C API连接数据库 一、基本步骤: 1.定义mysql结构体变量 2.mysql_init()初始化链接 3.mysql_real_connect()连接数据库 4.mysql_query()执行查询语句 5.mysql_store_result()检索完整的结果集 6.mysql_num_rows(),mysql_num_fields()获取数据库表的行与列 7.循环每一行,利用mysql_fetch_row()获取每一行的内容 8.循环每一列,逐次输出数据表的内容 9.可在第5部操作后判断是否为SELECT操作,若不是再进行处理 二、涉及函数简介: 1. mysql_init(): 初始化mysql结构体 2. mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const 继续阅读 >>


梁梦迪 17/07/26 17:16:08