Skip to content

Latest commit

 

History

History
136 lines (98 loc) · 12.3 KB

File metadata and controls

136 lines (98 loc) · 12.3 KB

六、应用层

  • 功能:文件传输、电子邮件服务

  • 协议(都是基于 TCP 的):FTP、TELNET、DNS、HTTP、HTTPS、电子邮件传输协议:SMTP、POP3、Outlook 基于 UDP 的有: TFTP、SNMP 与 DNS 其中 DNS 既可以基于 TCP,也可以基于 UDP


常见的端口号

FTP SSH TELNET SMTP DNS TFTP HTTP POP3 HTTPS
20,21 22 23 25 53 69 80 110 443

登记端口号:1024 - 49151,为没有熟知端口号的应用程序使用。 客户端端口或短暂端口:49152 - 65535,为客户进程运行时动态选择。


  • 问:FTP(File Transfer Protocol 文件传输协议)和 TFTP(Trivial File Transfer Protocol 普通文件传输协议)?

  • :FTP 文件传输协议,是因特网上使用最广泛的传送协议。使用 TCP 连接,端口号 21,20。在传输文件时需建立 2 个 TCP 连接,21 号端口 控制连接 用于进行命令控制, 20 号端口 数据连接 进行真正的数据传送。先建立 控制连接,当需要传送数据时建立 数据连接,数据传输完成 关闭数据连接,控制连接只有等到关闭命令时才会关闭,不是一起关闭的,也不是一起建立的。 TFTP:使用的是 UDP 协议,对于每一个数据报在获得确认后才发送另一个数据报,灵活,使用资源少,流量控制较简单,是一种平等的传输协议。‘ 区别:使用协议不同,端口号不同,FTP 在速度方面没有 TFTP 快但是 FTP 安全性好。


  • TELNET ?

  • :是 Internet 远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用 Telnet 程序,用它连接到服务器。终端使用者可以在 Telnet 程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 Telnet 会话,必须输入用户名和密码来登录服务器。Telnet 是常用的远程控制 Web 服务器的方法。


  • 问:DNS(Domain Name System 域名解析系统)?

  • :如果不允许你用 www.baiwu.com 来访问百度的首页,你要咋办。当然可以直接用 IP 地址访问,在网上搜了一下,本地可以 ping www.baidu.com 发现有好几个 IP 地址,这也好理解,大公司为了分担服务器压力,可以给一个域名分配好几个 IP 地址,然后使用循环分配使用或者其他方式,降低服务器压力,这样才不会让你感觉卡卡的嘛。题外话,DNS 就是可以根据你给的英文网址,查找对应的 IP 地址,你的浏览器再根据 IP 地址查找目的服务器,如果直接用 IP 地址是不是更快,是的。


电子邮件使用的协议

  • 问:SMTP(Simple Message Transfer Protocol 简单邮件传输协议)?

  • :简单邮件传送协议,使用 25 号端口。


  • 问:POP3(Post Office Protocol 3 邮局通讯协议第三版)?

  • :邮局协议版本 3,一个邮件读取协议。


  • 问:Outlook 等常用的电子邮件软件使用 SMTP 协议进行邮件的收发?

  • :错误!使用 SMTP 来发送邮件,使用 POP3 来接受邮件。


  • 问:电子邮件收发过程?

  • :首先 发信人使用代理来编辑邮件,用户代理使用 SMTP 将邮件发送给邮件服务器缓存队列中等待发送,邮件服务器发现有邮件,便与接收端服务器使用 SMTP 协议进行 TCP 连接,发送完后便断开连接。接收端服务器接受到邮件后放入收信人用户邮箱中。收信人收信时使用 POP3 将自己的邮件从接收端服务器中取出。因此可以简单记忆为发送邮件使用 SMTP,而接受邮件需要使用 POP3。


  • 问:介绍 HTTP (Hyper Text Transport Protocol 超文本传输协议)协议的传输过程?

  • : 服务流程:从协议执行过程来说,当浏览器要访问 www 服务器时,首先要对服务器进行域名解析(DNS 协议)。一旦获得 IP 地址【网络层的路由选择与转发,找到目的 IP 地址】,浏览器要通过 TCP 三次握手和服务器建立连接。每个服务器都有一个服务进程,它不断监听 TCP 端口号 80,当监听到浏览器请求后便和浏览器建立连接。TCP 连接建立后,浏览器就向服务器发送某个 HTTP 请求。如 localhost/test/index.jsp 。服务器收到请求后,将构建的服务页面返回给浏览器,浏览器对信息进行解释后,显示给客户。

  • 问:介绍 HTTPS (超文本传输安全协议)?

  • : 简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层。也就是说它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性,凡是使用了 HTTPS 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询 。

  • 问:HTTPS 和 HTTP 的区别主要?

  • :1、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。2、HTTP 和 HTTPS 端口不同,前者是 80,后者是 443。 HTTPS 会明显比 HTTP 协议慢很多:HTTPS 比 HTTP 更慢,因为多了协商密钥、验证证书的环节,而且之后传输的所有数据都需要加密解密。同样的服务器,能承受的 HTTPS 并发数要比 HTTP小很多。HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,HTTPS 除了 TCP 的三个包,还要加上 SSL 握手需要的 9 个包,所以一共是 12 个包。 HTTPS 已被广泛地用于 Web 浏览器与服务器之间的身份认证和加密数据传输,HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用。

  • HTTP 状态码 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。 2xx (成功)表示成功处理了请求的状态代码。 3xx (重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。 4xx(请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。 5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

200: 请求已成功,请求所希望的响应头或数据体将随此响应返回。-正常响应。 304: 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。 403: 服务器已经理解请求,但是拒绝执行它。-无权限。 404: 未找到,服务器找不到所请求的网页。 500:内部服务器错误 502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。 505: 服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。-服务端错误。

练习:A,B 两台机器都正常工作,B 机器未监听任何端口。如果 A 机器向 B 机器 80 端口发送 SYN 包,会收到何种类型的回包? :因为 B 机器未监听任何端口,A 又向 B 的 80 端口发送了数据包,所以 B 不会建立连接,会异常结束建立连接,会发送 RST 包,如果是正常结束的话就会发送 FIN 包, RST 是 TCP 连接中 出现差错产生的,RST 置 1可以用来拒绝一个非法的报文段或拒绝打开一个连接。RST 是 TCP 报文段首部里的字段,还有其他一些很容易忘的字段。


  • 问:GET 和 POST的区别?

  • 参考博客 1、GET 请求只能进行 URL 编码,而 POST 支持多种编码方式。 2、GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留。 3、GET 参数通过 URL 传递,POST 放在 Request body 中,因此 GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。 参考:GET 和 POST 是什么?HTTP 协议中的两种发送请求的方法。HTTP 是什么?HTTP 是基于 TCP/IP 的关于数据如何在万维网中如何通信的协议。HTTP 的底层是 TCP/IP。所以 GET 和 POST 的底层也是 TCP/IP,也就是说,GET/POST 都是 TCP 链接。GET 和 POST 能做的事情是一样一样的。你要给 GET 加上 Request body,给 POST 带上 URL 参数,技术上是完全行的通的。

  • 问:POST 方法比 GET 方法安全?

  • :有人说POST 比 GET 安全,因为数据在地址栏上不可见。然而,从传输的角度来说,他们都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上捉包,就能完整地获取数据报文。要想安全传输,就只有加密,也就是 HTTPS。

  • 问:GET 方法的长度限制是怎么回事?

  • :网络上都会提到浏览器地址栏输入的参数是有限的。首先说明一点,HTTP 协议没有 Body 和 URL 的长度限制,对 URL 限制的大多是浏览器和服务器的原因。浏览器原因就不说了,服务器是因为处理长 URL 要消耗比较多的资源,为了性能和安全(防止恶意构造长 URL 来攻击)考虑,会给 URL 长度加限制。

  • 问:POST 方法会产生两个 TCP 数据包?

  • :有些文章中提到,POST 会将 header 和 body 分开发送,先发送 header,服务端返回 100 状态码再发送 body。HTTP 协议中没有明确说明 POST 会产生两个 TCP 数据包,而且实际测试(Chrome)发现,header 和 body 不会分开发送。所以,header 和 body 分开发送是部分浏览器或框架的请求方法,不属于 POST 必然行为。


  • 问:同源策略是浏览器的安全基石,但互联网业务往往需要实现跨域通信,以下哪一种方案可以实现跨域?

  • :同源策略(Same Origin Policy,SOP)需要同时满足以下三点要求: 1)协议相同 2)域名相同 3)端口相同 http:www.test.com与https:www.test.com 不同源——协议不同 http:www.test.com与http:www.admin.com 不同源——域名不同 http:www.test.com与http:www.test.com:8081 不同源——端口不同 只要不满足其中任意一个要求,就不符合同源策略,就会出现“跨域。 不同源的客户端脚本(js,actionscript)在没有明确的授权的情况下不能读取对方的资源。 以下三种可实现跨域: 跨源资源(CrossOrigin Resources Sharing,CORS)是一种允许多种资源在一个 web 页面请求域之外的另一个域的资源的协议,是为了让 AJAX 能够跨域而生的。 内容安全策略(Content Security Policy,CSP)是一种白名单机制,限制网站中是否可以包含某来源的内容。 Oauth是一个关于授权的开放网络标准,相当于在客户端与服务器之间添加了一个授权层。


  • 问:简述cookie和session的区别?

  • :1,session 在服务器端,cookie 在客户端(浏览器) 2、session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效,存储Session时,键与Cookie中的sessionid相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置 3、cookie安全性比session差


  • 问题? UDP不是面向连接的,所以源IP地址通常可以伪造的? TCP SYN数据包中的源IP地址通常是可以伪造的? TCP是面向连接的,三次握手后,源IP不一定是真实的? 禁止PING就是禁止ICMP协议?