客户机/服务器网模式(C/S模式):在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。
对等连接(P2P模式):指两个主机在通行时并不区分哪一个是服务请求方还是服务提供方。只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。
虽然对等网是平等的,但仍然不能共享可执行程序,只有上升到客户/服务器结构的局域网,才能共享服务器上的可执行程序。客户服务器模式,需要专人维护、管理服务器,增加费用。它比较适合较大的网络。像较小的网络。如10PC以下的,使用对等网就可以了。
HTTP协议运行在TCP之上,明文传输(未加密的),客户端与服务器端都无法验证对方的身份,因此使用HTTP协议传输隐私信息非常不安全。
HTTPS协议是运行于SSL之上,SSL运行于TCP之上,由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。
HTTPS和HTTP的区别主要如下:
在HTTP1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源,每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
HTTP1.1,默认使用长连接,用以保持连接特性。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。而像Web网站的HTTP服务由于有成千上万甚至上亿客户端的连接,一般用短连接会更省一些资源。HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。
优点
缺点
HTTP请求报文主要由请求行,请求头部,请求正文3部分组成
HTTP响应报文主要由状态行,响应头部,响应正文3部分组成
状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
常见状态代码、状态描述的说明如下:
发送的请求信息包括:请求行,请求头,空行,可选的消息体
HTTP/1.1协议中共定义了八种方法来表明Request-URI指定的资源的不同操作方式:
OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法
HEAD:在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息
GET:向特定的资源发出请求
POST:向指定资源提交数据进行处理请求
PUT:向指定资源位置上传其最新内容
DELETE:请求服务器删除Request-URI所标识的资源
TRACE:回显服务器收到的请求,主要用于测试或诊断
CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
方法名称是区分大小写的;HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。
GET与POST是我们常用的两种HTTP Method,二者之间的区别主要包括如下五个方面:
定义:动态主机配置协议,是一个应用在局域网中的网络协议,它使用UDP协议工作。其最终的目的就是获取响应的IP地址,其中这过程中有多种分配方式,以及发送报文的格式要求等。
作用:动态分配IP地址,过程自动化,终端无需一一手工配置,提高配置IP地址效率,减少配置工作量,减少IP地址冲突
分配IP地址的方式:
DHCP报文种类:DHCP-DISCOVERY,DHCP-OFFER,DHCP-REQUEST,DHCP-ACK,DHCP-NAK,DHCP-RELEASE,DHCP-DECLINE,DHCP-INFORM。(8种)
DHCP动态获取IP地址的过程主要分为发现阶段、提供阶段、选择阶段、确认阶段四个阶段。
DNS工作原理:
在因特网上,构建了域名和IP地址互相映射的分布式数据库,在IP地址和域名之间形成一种转换和查询机制。所以,DNS工作的过程可以简单描述为:域名地址经过DNS服务器解析后,得到对应的IP地址,通过该IP地址访问到服务器获取我们要访问的内容。
DNS基于UDP服务,端口53。当然,端口号可以修改,但是默认是使用53端口。
DNS报文格式:
概念解释
域名:IP地址对应的主机名。
label:域名由多个label组成,label间常用符号"."连接。
DNS客户端:局域网内的用户程序向DNS客户端发出请求,本地设备收到请求报文后,会向DNS服务器发送查询报文。在收到DNS服务器的应答报文后,本地会对报文进行解析,并决定下一步的操作,从而完成一次域名解析过程。
DNS代理:用来在DNS客户端和DNS服务器之间转发DNS请求和应答报文。
DNS透明代理:可以修改部分DNS请求报文的目的地址,将其修改为其他ISP内的DNS服务器地址,DNS请求被转发到不同的ISP,解析后的Web服务器地址也就属于不同的ISP,所有上网流量将通过不同的ISP链路转发。这样就不会造成一个链路拥塞、其他链路却闲置的情况,充分利用了所有链路资源。
DDNS(动态域名系统):DNS仅提供了域名和IP地址之间的静态对应关系,当节点的IP地址发生变化时,DNS无法动态地更新域名和IP地址的对应关系。DDNS通过动态更新DNS服务器上域名和IP地址之间的对应关系,保证通过域名解析后得到正确的IP地址。
DNS64:将DNS查询信息中的A记录(ipv4地址)合成到AAAA记录(ipv6地址)中,返回合成的AAAA记录给ipv6侧用户。
细粒度订阅:发布端提供按需的数据发布机制,订阅端只需要订阅其关系的数据,一旦订阅的数据发生变化,发布者将相关数据实时发布到相关的订阅端。
DNS缓存:实际使用中,DNS服务器会将接收到的DNS应答结果在本地缓存一段时间,直到数据老化才删除。当出现对相同域名的查询时,便可以通过缓存的结果直接进行回复,只有在本地缓存中找不到时才向DNS服务器发起查询请求。通过DNS缓存,大部分查询都只需要本地DNS服务器即可完成解析,可以提高效率。
递归解析是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器不能解析,则后面的查询全部由本地名称服务器代替DNS客户端进行查询,直到本地名称服务器从权威名称服务器得到正确的解析结果,然后由本地名称服务器告诉DNS客户端查询的结果。
在这个查询过程中,一直是以本地名称服务器为中心的,DNS客户端只是发出原始的域名查询请求报文,然后就一直处于等待状态的,直到本地名称服务器发来了最终的查询结果。
满足以下一个条件时就会采用迭代解析方式:
使用递归解析方式时,如果它所配置的主名称服务器不能解析的话,客户端还会继续向所配置的其他名称服务器查询。
从域名到IP地址的解析过程
当一个业务需要把域名解析为IP地址时,它就成为了DNS的一个客户端,调用地址解析程序,把待解析的域名加入到DNS请求报文中,通过UDP先发送给本地DNS服务器。本地DNS服务器查找得到对应的IP地址后,通过回应报文将该IP返回,客户端获得该IP地址后可继续后续操作。如果本地域名服务器不能回答该请求,则自身会成为一个新的DNS客户端,向其他DNS服务器发送请求报文。这个过程一直重复,直至得到回应报文为止。
从IP地址到域名的解析过程
当在浏览器内输入URL时,便开始了DNS解析过程,最后会把找到后的IP地址告知浏览器客户端,方便它继续发出HTTP(s)请求。在这个过程中,浏览器提出的查询记录类型叫A记录查询,主要是针对ipv4,如果是ipv6的话,就是AAAA。这个A记录意思是从域名解析得到IP地址。那么反过来,从IP地址得到域名的解析过程也需要一个记录,叫PTR记录。我们可以通过查询IP地址的PTR记录来得到该IP地址指向的域名,达到反查的目的。
实际上网时域名的解析过程
DNS劫持:
通过劫持DNS服务器,使用某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。
DNS劫持症状:某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面,还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。
DNS污染:
是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,是一种DNS缓存投毒攻击。其工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非常容易被篡改,通过对UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器给查询者返回虚假结果。
DNS污染症状:目前一些被禁止访问的网站基本都是通过DNS污染来实现的,例如YouTube、Facebook等网站。
解决办法:
对于DNS劫持,可以通过手动更换DNS服务器为公共DNS解决。
对于DNS污染,可以说,个人用户很难单单靠设置解决,通常可以使用VPN或者域名远程解析的方法解决,但这大多需要购买付费的VPN或SSH等,也可以通过修改Hosts的方法,手动设置域名正确的IP地址。
常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,处于应用层的下层。
SMTP协议帮助每台计算机在发送或中转信件时找到下一个目的地;SMTP是一种推协议,即服务端向客户端发送推送请求,客户端接受,服务端发送邮件;SMTP用于将发送方的邮件服务器发送报文到接收方邮件服务器
SMTP服务工作在两种情况下:一是从发送方把电子邮件传输到发送方邮件服务器上;二是从发送方邮件服务器传输到接收方邮件服务器上
POP3协议仅用于用户从自己的邮件服务器上接收邮件;POP3可以下载邮件、从服务器中删除邮件或询问是否有新邮件
POP3按照3个阶段进行工作:特许、事务处理以及更新
一种功能更强大但是也更加复杂的邮件接收协议。互联网信息访问协议(IMAP)是一种优于POP的新协议,它可以决定客户机请求邮件服务器提交所收到邮件的方式,请求邮件服务器只下载所选中的邮件而不是全部邮件
IMAP是双向的,在本地的操作也会反馈到服务器
POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作不会反馈到服务器上,如移动邮件、标记已读等。比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的。
而IMAP提供webmail与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。
同时,IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP更好地支持了从多个不同设备中随时访问新邮件。
总之,IMAP整体上为用户带来更为便捷和可靠的体验。POP3更易丢失邮件或多次下载相同的邮件,而IMAP通过邮件客户端与webmail之间的双向同步功能很好地避免了这些问题。
功能:FTP服务的主要功能是向用户提供本地与远程主机之间的文件传输,通过搭建FTP服务器实现文件资源共享
优缺点:FTP服务的优点是可以传输任意类型的文件,而不需要做任何处理;缺点是因为通过FTP协议传输文件是要先建立两种连接,所以有较大的延迟
两种模式:FTP具有两种模式,分别是主动模式和被动模式
在主动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的20端口,你就从这里把东西给我吧,服务器收到后就会连接客户端已打开的20端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件。
在被动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,服务器端知道后,就打开一个空闲的端口,然后告诉客户端,我已经打开了某某端口,你自己进去拿吧,于是客户端就从那个端口进去拿文件了,这就是被动模式,可以理解为服务端被客户端拿走了东西。
功能:利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。
工作原理:SNMP采用特殊的C/S模式,即代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。
管理进程和代理进程之间的通信有两种方式,一种是管理进程向代理进程发出请求,询问参数值,另一种方式是代理进程主动向管理进程报告某些重要的事件。
为什么需要SNMP?
作为运维人员,我们很大一部分的工作就是为了保证我们的网络能够正常、稳定的运行。因此监控,控制,管理各种网络设备成了我们日常的工作。在网络兴起的早期,维护方式就是运维人员蹲在近端对设备进行各种操作,当网络设备越来越多,网络规模越来越大时,管理工作会变得越来越单调乏味,这样的近端维护方式也近乎不可能。因此,远程管理网络的需求日益迫切,SNMP应运而生。使用SNMP,一个运行网管软件的工作站就能对成千上万的网络设备进行监控和信息采集,这些信息可以用来构建网络或者定位网络中的问题。
URL:统一资源定位符。俗称网页地址或者网址。URL用来表示某个资源的地址。
当在浏览器中输入URL后,浏览器首先对拿到的URL进行识别,抽取出域名字段。
DNS解析,DNS实际上是一个域名和IP对应的数据库。
IP地址往都难以记住,但机器间互相只认IP地址,于是人们发明了域名,让域名与IP地址之间一一对应,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。
可以在浏览器中输入IP地址浏览网站,也可以输入域名查询网站,虽然得出的内容是一样的但是调用的过程不一样,输入IP地址是直接从主机上调用内容,输入域名是通过域名解析服务器指向对应的主机的IP地址,再从主机调用网站的内容。
通过以上的查找,就可以获取到域名对应的IP了。接下来就是向该IP地址定位的HTTP服务器发起TCP连接。
第一次握手:客户端向服务器端发送请求(SYN=1)等待服务器确认;
第二次握手:服务器收到请求并确认,回复一个指令(SYN=1,ACK=1);
第三次握手:客户端收到服务器的回复指令并返回确认(ACK=1)。
通过三次握手,建立了客户端和服务器之间的连接,现在可以请求和传输数据了。
通过get请求访问网站,请求头中包含了这个cookie信息。
cookie可以用来保存一些有用的信息:Cookies如果是首次访问,会提示服务器建立用户缓存信息,如果不是,可以利用Cookies对应键值,找到相应缓存,缓存里面存放着用户名,密码和一些用户设置项。
通过这种GET请求,和服务器的响应。可以将服务器上的目标文件传输到浏览器进行渲染。
客户端拿到服务器端传输来的文件,找到HTML和MIME文件,通过MIME文件,浏览器知道要用页面渲染引擎来处理HTML文件,最终呈现给用户一个完整的页面。
事件顺序:
涉及的协议:
应用层:HTTP(www访问协议),DNS(域名解析服务)
传输层:TCP(为HTTP提供可靠的数据传输),UDP(DNS使用UDP传输)
网络层:IP协议;ICMP(提供网络传输过程中的差错检测);ARP(将本机的默认网关IP地址映射成物理MAC地址)
各层具体作用分析:
Cookie的作用与原理
在客户端访问某个地址时,会将请求交到服务器进行处理,在发送请求的时候,浏览器会将页面的头部信息一并的交到服务器端进行处理。在处理的过程中,Cookie在服务器端生成,在此同时,可以将一些需要保存的信息,存放到此Cookie中。
生成Cookie对象时,需要确定具体的名称及具体的值,可以设置当前Cookie的过期时间,设置过期时间后,就相当于持久化了Cookie中的数据,此时的Cookie会以之前的Cookie名称,保存在客户端。如果不设置过期时间,则当前Cookie的生命期是浏览器会话期间,一旦关闭了该浏览器,当前的Cookie就会不存在了,此时的Cookie信息是保存在内存中。
在服务器端,处理完后,会将生成的Cookie,随着HTTP响应,会在HTTP响应头中,加上Cookie信息,浏览器接受到响应后,会按照HTTP响应头里的Cookie,在客户端建立Cookie。在下次客户进行请求的时候,HTTP会附带着已经存储过的Cookie,一并发送到服务器。一个域,在客户端建立的所以Cookie都是可以共享的,只要Cookie没有过期。
Session的作用与原理
Session是在服务器端生成的,存储在服务器端,即存在内存中。
可以对生成的Session设置过期时间,如果不设置过期时间,默认的Session过期时间是30分钟(在不同的服务器中,它的过期时间略有不同)。但是,Session的生成的同时,会生成一个与之相关联的的SessionID,此SessionID的存储是需要Cookie来完成的。SessionID其值应该是一个既不会重复,又不容易被找到规律以仿造的字符串。SessionID会随着此次HTPP响应,一并返回到客户端,并保存在客户端中。到当前请求再次发出后,该SessionID会随着HTTP头部,传到服务器中,服务器依据当前SessionID得到与之对应的Session。
区别
二者都是用于保持用户的会话,用于保存用户的用户名和密码等个人信息。