TCP/IP协议之应用层

TCP/IP协议之应用层

一.基本概念

**** 应用层协议的实现,只需要写出能够运行在不同的端系统(服务器、手机、电脑等)和通过网络彼此通信的程序。因为网络核心设备(路由器、交换机等,不包括端系统设备)并不在应用层上起作用,只在网络层及下面层次起作用,所以不需要为网络核心设备写对应的应用程序,即开发应用程序的时候只需要考虑适配端系统,不需要考虑网络核心设备。

二.主要功能

****目前主流的网络应用程序体系结构有三种:浏览器/服务器,客户-服务器体系结构(client-server architecture)和对等体系结构(P2P)。

****客户-服务器体系结构(client-server architecture):在客户-服务器体系结构中,至少有一个打开的主机,被称为服务器,它服务来自其他许多称为客户的主机的请求。web应用程序就是一个典型的例子,他总是有至少一个web服务器在运行来响应浏览器的请求。客户-服务器体系结构的一个特征就是服务器具有固定且被知晓的IP地址。
****对等体系结构(P2P):P2P体系结构对位于数据中心的专用服务器有最小的(或者没有)依赖。应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。这些对等方并不为服务提供商所有,为用户控制的台式机、笔记本等所有。因为这种对等方通信不必通过专门的服务器,该体系被称为对等方到对等方。

三.应用层的协议

应用层常见的协议: 1.DNS域名解析协议 2.FTP:文件传输协议 3. Telnet:远程终端协议 4. HTTP:超文本传送协议 5. SMTP:电子邮件协议 6. POP3:邮件读取协议 7. SNMP:简单网络管理协议

1.DNS域名解析协议

****DNS (Domain Name Service 域名服务) 协议基于 UDP,使用端口号 53。
****由数字组成的 IP 地址很难记忆,所以我们上网使用网站 IP 地址的别名——域名。实际使用中,域名与 IP 地址是对应的,这种对应关系保存在DNS 服务器之中。
****在浏览器中输入一个域名后,会有 DNS 服务器将域名解析为对应的 IP 地址。注意这和网络层的 ARP 协议的不同之处:DNS 提供的是域名与 IP 地址的对应关系,而 ARP 提供的是 IP 地址和 MAC 地址的对应关系。
DNS 服务器

DNS 服务器是个分层次的系统:

(1)根 DNS 服务器 :全世界共有 13 台根域名服务器,编号 A 到 M,其中大部分位于美国。

(2)顶级(TLD)DNS 服务器 :负责如 com 、org 、edu 等顶级域名和所有国家的顶级域名(如 cn 、uk 、jp )。

(3)权威 DNS 服务器 :大型组织、大学、企业的域名解析服务。

(4)本地 DNS 服务器 :通常与我们主机最近的 DNS 服务器。

而域名解析的过程,有迭代查询和递归查询两种方式:

01 host 命令

**** 在 linux 系统中,可以用 host 命令 进行 DNS 查询,查看一个指定域名的 IP,比如要查询实验楼 GIT 服务的 IP 地址:

host mirrors.aliyuncs.com

****下图示例查询www.shiyanlou.com的操作,由于实验楼网络限制,只有mirrors.aliyuncs.com域名可以查询。

04 DNS 报文
主机向 DNS 服务器发出的查询叫做DNS 报文,大致结构:

03 DNS 问答报文的内容,都是 IP 和域名的对应信息,关于 DNS 首部和内容 各字段这里不做详细介绍。深入了解,可以先 host 一个域名,再使用 tcpdump 抓取报文并解读。

DNS 缓存和 hosts 文件
**** 刚才 DNS 解析查询过程的图中,共发出了 8 份 DNS 报文,这是非常消耗时间的,所以实际应用上使用 DNS 缓存 :当一个 DNS 服务器接收到一个 DNS 回答后,会将其信息缓存一段时间,当再有一个对相同域名的查询时,便可直接回复。

通过 DNS 缓存,其实很多查询都只需要本地 DNS 服务器便可完成。

****有“翻墙”爱好的同学应该知道 hosts 文件,其实 hosts 文件可以看作是一个小型的 DNS 服务器。

使用命令打开 hosts 文件:

sudo gedit /etc/hosts

查看文件内容,可以发现里面全是类似下图中的 IP 和域名对应记录:

02 ****在实际上网过程中,域名解析的的优先顺序是:先在 DNS 缓存查询,若没有找到记录,再查询 hosts 文件,若还是没找到记录,再向 DNS 服务器发出 DNS 查询报文。

在这里插入图片描述

2.FTP:文件传输协议

FTP (File Transfer Protocol 文件传输协议) 基于 TCP,使用端口号 20(数据)和 21(控制)。

它的主要功能是减少或消除在不同操作系统下处理文件的不兼容性,以达到便捷高效的文件传输效果。

FTP 只提供文件传输的基本服务,它采用 客户端—服务器 的方式,一个 FTP 服务器可同时为多个客户端提供服务。

在进行文件传输时,FTP 的客户端和服务器之间会建立两个 TCP 连接:21 号端口建立控制连接,20 号端口建立数据连接。

FTP 的传输有两种方式:ASCII 传输模式和二进制数据传输模式。

在这里插入图片描述
在这里插入图片描述FTP工作模式

    两种工作模式:主动模式和被动模式;

    主动模式:服务器主动连接客户端;

    被动模式:客户端主动连接服务器。
3.HTTP:超文本传送协议

HTTP (HyperText Transfer Protocol 超文本传输协议) 基于 TCP,使用端口号 80 或 8080。

每当你在浏览器里输入一个网址或点击一个链接时,浏览器就通过 HTTP 协议将网页信息从服务器提取再显示出来,这是现在使用频率最大的应用层协议。

这个原理很简单:

点击一个链接后,浏览器向服务器发起 TCP 连接;
连接建立后浏览器发送 HTTP 请求报文,然后服务器回复响应报文;
浏览器将收到的响应报文内容显示在网页上;
报文收发结束,关闭 TCP 连接。

HTTP 报文会被传输层封装为 TCP 报文段,然后再被 IP 层封装为 IP 数据报。HTTP 报文的结构:

可见报文分为 3 部分:

(1)开始行:用于区分是请求报文还是响应报文,请求报文中开始行叫做请求行,而响应报文中,开始行叫做状态行。在开始行的三个字段之间都用空格分开,结尾处 CRLF 表示回车和换行。

(2)首部行:用于说明浏览器、服务器或报文主体的一些信息。

(3)实体主体:请求报文中通常不用实体主体。

请求报文的方法字段是对所请求对象进行的操作,而响应报文的状态码是一个 3 位数字,分为 5 类 33 种:

1xx 表示通知信息,如收到或正在处理。

2xx 表示成功接收。

3xx 表示重定向。

4xx 表示客户的差错,如 404 表示网页未找到。

5xx表示服务器的差错,如常见的 502 Bad Gateway。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四.应用层常见的安全问题

常见安全问题:漏洞,缓冲区溢出攻击,WEB应用的攻击,病毒及木马,DNS污染毒化,DNS劫持

1.DNS污染毒化
攻击原理
现行标准中 DNS 查询通常使用 UDP 协议并且没有任何验证机制,并且根据惯例查询者会接受第一个返回的结果而抛弃之后的。因此只需监控 53 端口(DNS 标准端口)的 UDP查询数据报并分析,一旦发现敏感查询,则抢先向查询者返回一个伪造的错误结果,从而实现 DNS 污染。

DNS污染并无法阻止正确的DNS解析结果返回,但由于旁路产生的数据包发回的速度较国外DNS服务器发回的快,操作系统认为第一个收到的数据包就是返回结果,从而忽略其后收到的数据包,从而使得DNS污染得逞。

2.DNS劫持
攻击原理
DNS劫持就是dns系统被入侵或人为的修改某些记录,如A记录,用专业的术语来讲就是通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址。

3.缓冲区溢出攻击
攻击原理
缓冲区溢出的含义是为缓冲区提供了多于其存储容量的数据,就像往杯子里倒入了过量的水一样。通常情况下,缓冲区溢出的数据只会破坏程序数据,造成意外终止。但是如果有人精心构造溢出数据的内容,那么就有可能获得系统的控制权!如果说用户(也可能是黑客)提供了水——缓冲区溢出攻击的数据,那么系统提供了溢出的容器——缓冲区。

缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组、结构体等在运行时可以说都是保存在缓冲区内的,因此所谓缓冲区可以更抽象地理解为一段可读写的内存区域,缓冲区攻击的最终目的就是希望系统能执行这块可读写内存中已经被蓄意设定好的恶意代码。按照冯·诺依曼存储程序原理,程序代码是作为二进制数据存储在内存的,同样程序的数据也在内存中,因此直接从内存的二进制形式上是无法区分哪些是数据哪些是代码的,这也为缓冲区溢出攻击提供了可能。
在这里插入图片描述
4.WEB应用的攻击
攻击原理
对客户端的
含有恶意代码的网页,利用浏览器的漏洞,威胁本地系统
对Web服务器的
利用Apache/IIS…的漏洞
利用CGI实现语言(PHP/ASP/Perl…)和实现流程的漏洞
通过Web服务器,入侵数据库

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值