计算机网络基础知识 - 应用层

                                              第六章 应用层

1. 对等模式与C/S模式的区别

客户机/服务器网模式(C/S模式):在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源

对等连接(P2P模式):指两个主机在通行时并不区分哪一个是服务请求方还是服务提供方。只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。

虽然对等网是平等的,但仍然不能共享可执行程序,只有上升到客户/服务器结构的局域网,才能共享服务器上的可执行程序。客户服务器模式,需要专人维护、管理服务器,增加费用。它比较适合较大的网络。像较小的网络。如10PC以下的,使用对等网就可以了。

 2. HTTP协议的主要特点

  • 支持客户/服务器模式
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GETHEADPOST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。HTTP协议自身不对请求和响应之间的通信状态进行保存。每当有新的请求,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应信息,所以在购物网站中一般使用Cookie技术。

 3. HTTPHTTPS的基本概念

  • HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
  • HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSLHTTPS的安全基础是SSL,因此加密的详细内容就需要SSLHTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

 4. HTTPHTTPS有什么区别?

HTTP协议运行在TCP之上明文传输(未加密的),客户端与服务器端都无法验证对方的身份,因此使用HTTP协议传输隐私信息非常不安全

HTTPS协议是运行于SSL之上SSL运行于TCP之上,由SSL+HTTP协议构建的可进行加密传输身份认证的网络协议,要比HTTP协议安全

HTTPSHTTP的区别主要如下:

  1. HTTPS协议需要申请证书,一般免费证书较少,需要向认证机构购买。
  2. HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议,HTTPS的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。
  3. HTTPHTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
  4. HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

 5. HTTP1.1HTTP1.0的区别(什么是长连接和短连接)

HTTP1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源,每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

HTTP1.1,默认使用长连接,用以保持连接特性。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。而像Web网站的HTTP服务由于有成千上万甚至上亿客户端的连接,一般用短连接会更省一些资源。HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

6. HTTPS的工作原理

                       计算机网络基础知识 - 应用层_第1张图片

客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。

  1. 客户使用HTTPSURL访问Web服务器,要求与Web服务器建立SSL连接。
  2. Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
  3. 客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
  4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
  5. Web服务器利用自己的私钥解密出会话密钥。
  6. Web服务器利用会话密钥加密与客户端之间的通信。

 7. HTTPS的优缺点

优点

  1. 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
  2. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
  3. HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本

缺点

  1. HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%20%的耗电。
  2. HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响。
  3. SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
  4. SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
  5. HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

 8. HTTP的状态码含义

HTTP请求报文主要由请求行,请求头部,请求正文3部分组成

                         计算机网络基础知识 - 应用层_第2张图片

HTTP响应报文主要由状态行,响应头部,响应正文3部分组成

                         计算机网络基础知识 - 应用层_第3张图片

状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

  • 1xx:指示信息--表示请求已接收,继续处理
  • 2xx:成功--表示请求已被成功接收、理解、接受
  • 3xx:重定向--要完成请求必须进行更进一步的操作
  • 4xx:客户端错误--请求有语法错误或请求无法实现
  • 5xx:服务器端错误--服务器未能实现合法的请求

常见状态代码、状态描述的说明如下:

  • 200 OK:表示从客户端发送给服务器的请求被正常处理并返回
  • 204 No Content:表示客户端发送给客户端的请求得到了成功处理,但在返回的响应报文中不含实体的主体部分(没有资源可以返回)
  • 206 Patial Content:表示客户端进行了范围请求,并且服务器成功执行了这部分的GET请求,响应报文中包含由Content-Range指定范围的实体内容
  • 301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL
  • 302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL
  • 303 See Other:表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源
  • 304 Not Modified:表示客户端发送附带条件的请求时,服务器端允许访问资源,但是请求为满足条件的情况下返回改状态码
  • 307 Temporary Redirect:临时重定向,与303有着相同的含义,307会遵照浏览器标准不会从POST变成GET
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务
  • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL
  • 500 Internal Server Error:服务器发生不可预期的错误
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 9. HTTP协议请求方法

发送的请求信息包括:请求行,请求头,空行,可选的消息体

HTTP/1.1协议中共定义了八种方法来表明Request-URI指定的资源的不同操作方式:

OPTIONS返回服务器针对特定资源所支持的HTTP请求方法

HEAD在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息

GET向特定的资源发出请求

POST向指定资源提交数据进行处理请求

PUT向指定资源位置上传其最新内容

DELETE请求服务器删除Request-URI所标识的资源

TRACE回显服务器收到的请求,主要用于测试或诊断

CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

方法名称是区分大小写的;HTTP服务器至少应该实现GETHEAD方法,其他方法都是可选的。

 10. 简述HTTPGETPOST的区别?

GETPOST是我们常用的两种HTTP Method,二者之间的区别主要包括如下五个方面:

  1. 从功能上讲:GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源
  2. REST服务角度上说GET是幂等的,即读取同一个资源,总是得到相同的数据,而POST不是幂等的,因为每次请求对资源的改变并不是相同的;进一步地,GET不会改变服务器上的资源,而POST会对服务器资源进行改变;
  3. 从请求参数形式上看GET请求的数据会附在URL之后,即将请求数据放置在HTTP报文的请求头中;而POST请求会把提交的数据放置在是HTTP请求报文的请求体中。
  4. 就安全性而言:POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而且POST请求参数则被包装到请求体中,相对更安全。
  5. 从请求的大小看:GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的。

 11. DHCP协议

定义:动态主机配置协议,是一个应用在局域网中的网络协议,它使用UDP协议工作。其最终的目的就是获取响应的IP地址,其中这过程中有多种分配方式,以及发送报文的格式要求等。

作用:动态分配IP地址,过程自动化,终端无需一一手工配置,提高配置IP地址效率,减少配置工作量,减少IP地址冲突

分配IP地址的方式:

  1. 手工配置方式:通过网络管理员手工配置某台客户端特定的IP地址,当客户端请求分配时,DHCP服务器就将手动配置的IP地址分配给客户端。
  2. 自动配置方式:当DHCP客户端第一次向服务端租用到第一个IP地址后,就将这个IP地址永久分配给客户端使用。
  3. 动态配置方式:服务器暂时分配一个IP地址给客户端,根据租约到期或者续约租期的方式来管理分配的IP地址。

DHCP报文种类:DHCP-DISCOVERYDHCP-OFFERDHCP-REQUESTDHCP-ACKDHCP-NAKDHCP-RELEASEDHCP-DECLINEDHCP-INFORM。(8种)

DHCP自动分配IP地址的原理:

DHCP动态获取IP地址的过程主要分为发现阶段、提供阶段、选择阶段、确认阶段四个阶段。

                                                             计算机网络基础知识 - 应用层_第4张图片

  1. 发现阶段:客户机发广播,搜寻DHCP服务器
  2. 提供阶段:DHCP服务器发出邀请,提供一个可用的IP地址
  3. 选择阶段:客户机正式请求使用该IP地址
  4. 确认阶段:DHCP服务器确认,并提供其他配置参数

 12. DNS(域名解析系统)协议

DNS工作原理:

在因特网上,构建了域名和IP地址互相映射的分布式数据库,在IP地址和域名之间形成一种转换和查询机制。所以,DNS工作的过程可以简单描述为:域名地址经过DNS服务器解析后,得到对应的IP地址,通过该IP地址访问到服务器获取我们要访问的内容。

DNS基于UDP服务,端口53。当然,端口号可以修改,但是默认是使用53端口。

DNS报文格式:

                             计算机网络基础知识 - 应用层_第5张图片

概念解释

域名: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地址。

DNS64DNS查询信息中的A记录(ipv4地址)合成到AAAA记录(ipv6地址)中,返回合成的AAAA记录给ipv6侧用户。

细粒度订阅:发布端提供按需的数据发布机制,订阅端只需要订阅其关系的数据,一旦订阅的数据发生变化,发布者将相关数据实时发布到相关的订阅端。

DNS缓存:实际使用中,DNS服务器会将接收到的DNS应答结果在本地缓存一段时间,直到数据老化才删除。当出现对相同域名的查询时,便可以通过缓存的结果直接进行回复,只有在本地缓存中找不到时才向DNS服务器发起查询请求。通过DNS缓存,大部分查询都只需要本地DNS服务器即可完成解析,可以提高效率。

 13. DNS解析方式

DNS递归解析

递归解析是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器不能解析,则后面的查询全部由本地名称服务器代替DNS客户端进行查询,直到本地名称服务器从权威名称服务器得到正确的解析结果,然后由本地名称服务器告诉DNS客户端查询的结果

                           计算机网络基础知识 - 应用层_第6张图片

在这个查询过程中,一直是以本地名称服务器为中心的,DNS客户端只是发出原始的域名查询请求报文,然后就一直处于等待状态的,直到本地名称服务器发来了最终的查询结果。

DNS迭代解析

满足以下一个条件时就会采用迭代解析方式:

  1. 查询名称服务器时客户端的请求报文中没有申请使用递归解析,也就是说DNS请求报文的RD字段没有设置1
  2. 客户端在DNS请求报文中没有申请使用递归解析,但是所配置的本地名称服务器上是禁用递归查询的

使用递归解析方式时,如果它所配置的主名称服务器不能解析的话,客户端还会继续向所配置的其他名称服务器查询

                              计算机网络基础知识 - 应用层_第7张图片

 14. DNS解析过程

从域名到IP地址的解析过程

当一个业务需要把域名解析为IP地址时,它就成为了DNS的一个客户端,调用地址解析程序,把待解析的域名加入到DNS请求报文中,通过UDP先发送给本地DNS服务器。本地DNS服务器查找得到对应的IP地址后,通过回应报文将该IP返回,客户端获得该IP地址后可继续后续操作。如果本地域名服务器不能回答该请求,则自身会成为一个新的DNS客户端,向其他DNS服务器发送请求报文。这个过程一直重复,直至得到回应报文为止。

IP地址到域名的解析过程

当在浏览器内输入URL时,便开始了DNS解析过程,最后会把找到后的IP地址告知浏览器客户端,方便它继续发出HTTPs)请求。在这个过程中,浏览器提出的查询记录类型叫A记录查询,主要是针对ipv4,如果是ipv6的话,就是AAAA。这个A记录意思是从域名解析得到IP地址。那么反过来,从IP地址得到域名的解析过程也需要一个记录,叫PTR记录。我们可以通过查询IP地址的PTR记录来得到该IP地址指向的域名,达到反查的目的。

实际上网时域名的解析过程

  1. 当用户在地址栏输入一个URL之后,浏览器首先查询浏览器的缓存
  2. 找不到就去查询主机文件和本地DNS缓存,如果主机和本地DNS缓存都没有找到域名对应的IP,则自动进入路由器的缓存中检查
  3. 以上均为客户端DNS缓存,若在客户端DNS缓存还是没找到,则进入ISP DNS缓存中查询
  4. 还是找不到,最终才向根DNS服务器发出DNS查询报文,再找不到就报错

 15. DNS劫持与DNS污染

DNS劫持:

通过劫持DNS服务器,使用某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。

DNS劫持症状:某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面,还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。

DNS污染:

一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,是一种DNS缓存投毒攻击。其工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非常容易被篡改,通过对UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器给查询者返回虚假结果。

DNS污染症状:目前一些被禁止访问的网站基本都是通过DNS污染来实现的,例如YouTubeFacebook等网站。

解决办法:

对于DNS劫持,可以通过手动更换DNS服务器为公共DNS解决。

对于DNS污染,可以说,个人用户很难单单靠设置解决,通常可以使用VPN或者域名远程解析的方法解决,但这大多需要购买付费的VPNSSH等,也可以通过修改Hosts的方法,手动设置域名正确的IP地址。

 16. 电子邮件协议

常用的电子邮件协议有SMTPPOP3IMAP4,它们都隶属于TCP/IP协议簇,处于应用层的下层。

SMTP协议

SMTP协议帮助每台计算机在发送或中转信件时找到下一个目的地;SMTP是一种推协议,即服务端向客户端发送推送请求,客户端接受,服务端发送邮件;SMTP用于将发送方的邮件服务器发送报文到接收方邮件服务器

SMTP服务工作在两种情况下:一是从发送方把电子邮件传输到发送方邮件服务器上;二是从发送方邮件服务器传输到接收方邮件服务器上

POP3协议

POP3协议仅用于用户从自己的邮件服务器接收邮件;POP3可以下载邮件、从服务器中删除邮件或询问是否有新邮件

POP3按照3个阶段进行工作:特许、事务处理以及更新

  1. 特许阶段,用户代理发送用户名和口令
  2. 事务处理阶段:用户代理取回报文;还可以对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息
  3. 更新阶段:结束该POP3会话;这个时候该邮件服务器删除那些被标记的删除的报文

IMAP协议

一种功能更强大但是也更加复杂的邮件接收协议。互联网信息访问协议(IMAP)是一种优于POP的新协议,它可以决定客户机请求邮件服务器提交所收到邮件的方式,请求邮件服务器只下载所选中的邮件而不是全部邮件

IMAP是双向的,在本地的操作也会反馈到服务器

17. POP3IMAP的区别

POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作不会反馈到服务器上,如移动邮件、标记已读等。比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的。

IMAP提供webmail与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。

同时,IMAPPOP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP更好地支持了从多个不同设备中随时访问新邮件。 

                                       计算机网络基础知识 - 应用层_第8张图片

总之,IMAP整体上为用户带来更为便捷和可靠的体验。POP3更易丢失邮件或多次下载相同的邮件,而IMAP通过邮件客户端与webmail之间的双向同步功能很好地避免了这些问题。

 18. FTP协议

功能:FTP服务的主要功能是向用户提供本地与远程主机之间的文件传输,通过搭建FTP服务器实现文件资源共享

优缺点:FTP服务的优点是可以传输任意类型的文件,而不需要做任何处理;缺点是因为通过FTP协议传输文件是要先建立两种连接,所以有较大的延迟

两种模式:FTP具有两种模式,分别是主动模式被动模式

在主动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的20端口,你就从这里把东西给我吧,服务器收到后就会连接客户端已打开的20端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件

在被动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,服务器端知道后,就打开一个空闲的端口,然后告诉客户端,我已经打开了某某端口,你自己进去拿吧,于是客户端就从那个端口进去拿文件了,这就是被动模式,可以理解为服务端被客户端拿走了东西

 19. SNMP协议

功能:利用SNMP一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。

                                                计算机网络基础知识 - 应用层_第9张图片

工作原理:SNMP采用特殊的C/S模式,即代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。

管理进程和代理进程之间的通信有两种方式,一种是管理进程向代理进程发出请求,询问参数值,另一种方式是代理进程主动向管理进程报告某些重要的事件。

为什么需要SNMP

作为运维人员,我们很大一部分的工作就是为了保证我们的网络能够正常、稳定的运行。因此监控,控制,管理各种网络设备成了我们日常的工作。在网络兴起的早期,维护方式就是运维人员蹲在近端对设备进行各种操作,当网络设备越来越多,网络规模越来越大时,管理工作会变得越来越单调乏味,这样的近端维护方式也近乎不可能。因此,远程管理网络的需求日益迫切,SNMP应运而生。使用SNMP,一个运行网管软件的工作站就能对成千上万的网络设备进行监控和信息采集,这些信息可以用来构建网络或者定位网络中的问题。

 20. 在浏览器中输入一个URL至页面呈现,网络上都发生了什么事?

解析URL

URL:统一资源定位符。俗称网页地址或者网址。URL用来表示某个资源的地址。

         

当在浏览器中输入URL后,浏览器首先对拿到的URL进行识别,抽取出域名字段。

DNS解析

DNS解析,DNS实际上是一个域名和IP对应的数据库。

IP地址往都难以记住,但机器间互相只认IP地址,于是人们发明了域名,让域名与IP地址之间一一对应,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。

可以在浏览器中输入IP地址浏览网站,也可以输入域名查询网站,虽然得出的内容是一样的但是调用的过程不一样,输入IP地址是直接从主机上调用内容,输入域名是通过域名解析服务器指向对应的主机的IP地址,再从主机调用网站的内容。

通过以上的查找,就可以获取到域名对应的IP了。接下来就是向该IP地址定位的HTTP服务器发起TCP连接。

浏览器与网站建立TCP连接(三次握手)

第一次握手:客户端向服务器端发送请求(SYN=1)等待服务器确认;

第二次握手:服务器收到请求并确认,回复一个指令(SYN=1ACK=1);

第三次握手:客户端收到服务器的回复指令并返回确认(ACK=1)。

通过三次握手,建立了客户端和服务器之间的连接,现在可以请求和传输数据了。

请求和传输数据

通过get请求访问网站,请求头中包含了这个cookie信息。

cookie可以用来保存一些有用的信息:Cookies如果是首次访问,会提示服务器建立用户缓存信息,如果不是,可以利用Cookies对应键值,找到相应缓存,缓存里面存放着用户名,密码和一些用户设置项。

通过这种GET请求,和服务器的响应。可以将服务器上的目标文件传输到浏览器进行渲染。

浏览器渲染页面

客户端拿到服务器端传输来的文件,找到HTMLMIME文件,通过MIME文件,浏览器知道要用页面渲染引擎来处理HTML文件,最终呈现给用户一个完整的页面

 21. 在浏览器中输入www.baidu.com后执行的全部过程

事件顺序:

  1. 浏览器获取输入的域名www.baidu.com
  2. 浏览器向DNS请求解析www.baidu.comIP地址
  3. 域名系统DNS解析出百度服务器的IP地址
  4. 浏览器与该服务器建立TCP连接(默认端口号80)
  5. 浏览器发出HTTP请求,请求百度首页
  6. 服务器通过HTTP响应把首页文件发送给浏览器
  7. TCP连接释放
  8. 浏览器将首页文件进行解析,并将Web页显示给用户

涉及的协议:

应用层:HTTP(www访问协议)DNS(域名解析服务)

传输层:TCP(HTTP提供可靠的数据传输)UDP(DNS使用UDP传输)

网络层:IP协议ICMP(提供网络传输过程中的差错检测)ARP(将本机的默认网关IP地址映射成物理MAC地址)

各层具体作用分析:

  1. 应用层:客户端浏览器通过DNS解析到www.baidu.comIP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.181.27.48,然后通过TCP进行数据包封装,输入到网络层。
  2. 传输层:在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口,然后使用IP层的IP地址查找目的端。
  3. 网络层:客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器
  4. 数据链路层:客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。

 22. SessionCookie的区别?

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

区别

二者都是用于保持用户的会话,用于保存用户的用户名和密码等个人信息。

  1. 存储位置:cookie存储在客户端,即浏览器上;session存储于服务器端。
  2. 实现机制:Session的实现常常依赖于Cookie机制,通过Cookie机制回传SessionID
  3. 大小限制:Cookie有大小限制并且浏览器对每个站点也有Cookie的个数限制;Session没有大小限制,理论上只与服务器的内存大小有关
  4. 安全性:Cookie存在安全隐患,通过拦截或本地文件找得到Cookie后可以进行攻击;Session由于保存在服务器端,相对更加安全
  5. 服务器资源消耗:Session保存在服务器端上会存在一段时间才会消失,如果Session过多会增加服务器的压力

你可能感兴趣的:(计算机网络,计算机网络,应用层,TCP/IP)