web01.计算机网络基础

web01.计算机网络基础

Internet如何工作

Internet如何工作

  • Internet是由一种通讯介质,如光纤、微波、电缆、电话线等将各种计算机连接起来,统一采用TCP/IP协议标准的互相连通的计算机体系

网络如何运输

  • internet使用一种专门的计算机语言(TCP传输控制协议,IP网络连接协议)用来保证数据能够安全可靠的到达指定的目的地

路由器分发

  • 当Internet用户给其他机器发送一个文本时,TCP将该文本分解成若干个小数据包,并加上一些特定的信息,以便接收方的机器可以判断传输是否正确无误的,由IP在数据包上标上有关地址信息。连续不断的TCP/IP数据包可以经由不同的路由到达同一个地点

发送失败如何处理

  • 当TCP/IP数据包到达目的地之后,计算机将去掉IP的地址标志,利用TCP的“装箱单”检查数据在传输过程中是否有损失,在这个基础上将各种数据包重新组合成原文本文件如果接收方发现有损坏的数据包,则要求发送端重新发送被损坏的数据包。

使用HTTP协议访问web

  1. HTTP/0.9 现在的 HTTP 其实含有 HTTP1.0 之前版本的意思,因此被称为 HTTP/0.9。
  2. HTTP/1.0 虽说是初期标准,但该协议标准至今 仍被广泛使用在服务器端。
  3. HTTP/1.1 是目前主流的 HTTP 协议版本。
  4. HTTP/2.0 正在制订中

TCP/IP协议

网络基础TCP/IP

  • TCP/IP 是互联网相关的各类协议族的总称协议中存在各式各样的内容。从电缆的规格到 IP 地址的选定方法、 寻找异地用户的方法、双方建立通信的顺序,以及 Web 页面显示需 要处理的步骤,等等。 像这样把与互联网相关联的协议集合起来总称为 TCP/IP。

TCP/IP 的分层管理

  • 应用层决定了向用户提供应用服务时通信的活动
  • 传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输
  • 网络层:用来处理在网络上流动的数据包
  • 数据链路层:用来处理连接网络的硬件部分

TCP/IP 通信传输流

  • 发送端从应用层往下走,接收端则往应用层往上走。
  • 首先,作为发送端的客户端在应用层 (HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求
  • 接着,在传输层(TCP 协议)把从应用层处收到的数 据(HTTP 请求报文)进行分割并在各个报文上打上标记序号及端 口号后转发给网络层。
  • 在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链 路层。
  • 接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用 层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP 请求。

IP 协议 ,TCP 协议 和DNS 协议

负责传输的 IP 协议

  • 位于网络层

  • 作用:把各种数据包传送给对方

  • 确实传送到对方满足条件

    • IP 地址:指明了节点被分配到的地址
    • MAC 地址:指网卡所属的固定 地址
  • 使用 ARP 协议凭借 MAC 地址进行通信

确保可靠性的 TCP 协议

  • 位于传输层

  • 作用:为了更容易传送大数据才把数据分割,而且 TCP 协议能够 确认数据最终是否送达到对方。

  • 确保数据能到达目标:

    • 采用了三次握手 (three-way handshaking)策略
    • 除了上述三次握手,TCP 协议还有其他各种手段来保证通信的可靠性。

负责域名解析的 DNS 服务

  • 位于应用层

  • 作用:它提供域名到 IP 地址之间的解析服务。

  • DNS 服务

    • 提供通过域名 查找 IP 地址
    • 逆向从 IP 地址反查域名的服务

各种协议与 HTTP 协议的关系

  • 客户端发给DNS服务器进行域名解析,并返回IP地址给客户端客户端得到IP地址之后生成针对目标web服务器的HTTP请求报文;报文由TCP协议负责运输,为了方便运输,HTTP请求报文被分为报文段,然后每个报文段可靠的传输给对方;然后报文段由IP层负责一边中转一边传送,服务器接收到对方的报文段后重组报文段,然后由应用层的HTTP协议处理请求的内容,请求的结果也同样利用TCP/IP通信协议向用户进行回传。

HTTP协议

介绍:

  • HTTP 状态码:表示客户端 HTTP 请求的返回结果、标记服务器端 的处理是否正常、通知出现的错误等工作

  • 状态码:告知从服务器端返回的请求结果

    • 职责:当客户端向服务器端发送请求时,描述返回的请求结果
    • 借助状态码:用户可以知道服务器端是正常处理了请求,还是出现了错误。
    • 例子:状态码如 200 OK
    • 组成:以 3 位数字和原因短语组成

5种响应类别

  • 1XX

    • 类别:Informational(信息性状态码)
    • 原因短语:接收的请求正在处理
  • 2XX

    • 类别:Success(成功状态码)

    • 原因短语:请求正常处理完毕

    • 例子:使用 GET 方法时,对应请求资源的实体会作为响应返回;而使用 HEAD 方法时,对应请求资源的实体首部不随报文主体 作为响应返回

    • such

      • **204 No Content:**表示请求处理成功,但没有资源(响应报文中实体的主体部分)可返回成功
      • **206 Partial Conten:**表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求
  • 3XX

    • 类别:Redirection(重定向状态码)

    • 原因短语:需要进行附加操作以完成请求

    • such:

      • 301 Moved Permane:永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。
      • 302 Found:临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望 用户(本次)能使用新的 URI 访问。
      • 303 See Other:该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。
      • **304 Not Modified:**该状态码表示客户端发送附带条件的请求 2 时,服务器端允许请求访 问资源,但未满足条件的情况。
      • 307 Temporary Redirect 临时重定向:该状态码与 302 Found 有着相同的含
  • 4XX

    • 类别:Client Error(客户端错误状态码)

    • 原因短语:服务器无法处理请求

    • such:

      • 401 Unauthorized :该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、 DIGEST 认证)的认证信息。
      • 403 Forbidden:该状态码表明对请求资源的访问被服务器拒绝了。
      • 404 Not Found:该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服 务器端拒绝请求且不想说明理由时使用。
  • 5XX

    • 类别:Sebrver Error(服务器错误状态码)

    • 原因短语:服务器处理请求出错

    • such

      • 500 Internal Server Error:该状态码表明服务器端在执行请求时发生了错误。也有可能是 Web 应用存在的 bug 或某些临时的故障。
      • 503 Service Unavailable:该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

HTTP 的缺点

HTTP 的缺点

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

通信使用明文可能会被窃听

  • TCP/IP时可能被窃听的网络

  • 加密处理防止被窃听

    • 通信的加密:可以通过和 SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容
    • 内容的加密:把HTTP 报文里所含的内容进行加密处理。

不验证通信方的身份就可能遭遇伪装

  • 任何人都可发起请求

    • 服务器只要接收到请求,不管对方是 谁都会返回一个响应
  • 会存在以下各种隐患

    • 无法确定请求发送至目标的 Web 服务器是否是按真实意图返回响应的那台服务器。

      • 有可能是已伪装的 Web 服务器。
    • 无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端

      • 有可能是已伪装的客户端。
    • 无法确定正在通信的对方是否具备访问权限

      • 因为某些 Web 服务器上保存着重要的信息只想发给特定用户通 信的权限。
    • 无法判定请求是来自何方、出自谁手

      • 即使是无意义的请求也会照单全收。无法阻止海量请求下的 DoS 攻击(Denial of Service,拒绝服务攻击。
      • 只要能够确认通信方(服务器或客户端)持有的证书, 即可判断通信方的真实意图。
      • 通过使用证书,以证明通信方就是意料中的服务器。
      • 客户端持有证书即可完成个人身份的确认,也可用于对 Web 网站的认证环节。

查明对手的证书

  • 使用 HTTP 协议无法确定通信方,但如果使用 SSL则可以。 SSL不仅提供加密处理,而且还使用了一种被称为证书的手段可用于确定方。 证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。

无法证明报文完整性,可能已遭篡改

  • 完整性是指信息的准确度。若无法证明其完整性,通常也就意味 着无法判断信息是否准确。
  • 在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,没有任何办法确认,发出的请求 / 响应和接收到的请 求 / 响应是前后相同的。

如何防止篡改

  • 虽然有使用 HTTP 协议确定报文完整性的方法,但事实上并不便捷、可靠。其中常用的是 MD5 和 SHA-1 等散列值校验的方法, 以及用来确认文件的数字签名方法。

保证WEB安全的HTTPS

HTTP+ 加密 + 认证 + 完整性保护 =HTTPS

  • 为了统一解决这些问题(通信线路遭到窃听报文在通信途中遭到篡改),需要在 HTTP 上再加入加密处理认证 等机制。我们把添加了加密及认证机制的 HTTP 称为 HTTPS(HTTP Secure)。

HTTPS 是身披 SSL 外壳的 HTTP

  • HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代 替而已
  • 先和 SSL通 信,再由 SSL和 TCP 通信
  • 采用 SSL后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护 这些功能

HTTPS和HTTP的使用地点

  • 与纯文本通信相比,加密通信会消耗更多的 CPU 及内存资源。仅在那些需要信息隐藏时才会加密,以节约资 源。 如果是非敏感信息则使用 HTTP 通信,只有在包含个人信息 等敏感数据时,才利用 HTTPS 加密通信。
  • 要进行 HTTPS 通信,证书是必不可少的。而使用的证书必须向认 证机构(CA)购买。那些购买证书并不合算的服务以及一些个人网站,可能只会选择采用 HTTP 的通信方式。

Wireshark使用

执行抓包的操作

  • 1.选择菜单栏上捕获 -> 选项,勾选WLAN网卡。点击Start。启动抓包。
  • 2.执行需要抓包的操作,如ping www.baidu.com。
  • 3.操作完成后相关数据包就抓取到了。为避免其他无用的数据包影响分析,可以通过在过滤栏设置过滤条件进行数据包列表过滤,获取结果如下。说明:ip.addr == 180.101.49.12 and icmp 表示只显示ICPM协议且源主机IP或者目的主机IP为180.101.49.12的数据包。

三次握手原理

  • 第一次握手:建立连接时,客户端发送SYN到服务器,并进入SYN_SENT状态。
  • 第二次握手:服务器收到请求后,回送SYN+ACK信令到客户端,此时服务器进入SYN_RECV状态。
  • 第三次握手:客户端收到SYN+ACK包,向服务器发送确认ACK包,客户端进入ESTABLISHED状态,服务器收到请求后也进入ESTABLISHED状态,完成三次握手,此时TCP连接成功,客户端与服务器开始传送数据。

为什么是三次握手

  • 本质是, 信道不可靠,三次通信是理论上的最小值.三次握手不是TCP本身的要求, 而是为了满足”在不可靠信道上可靠地传输信息”这一需求所导致的
    • 第一次握手成功:说明客户端的数据可以被服务端收到,说明客户端的发功能可用,说明服务端的收功能可用。但客户端自己不知道数据是否被接收。
    • 第二次握手成功:说明服务端的数据可以被客户端收到,说明服务端的发功能可用,说明客户端的收功能可用。同时客户端知道自己的数据已经正确到达服务端,自己的发功能正常。但是服务端自己不知道数据是否被接收。
    • 第三次握手成功:说明服务端知道自己的数据已经正确到达客户端,自己的发功能正常。至此服务成功建立

四次挥手过程

  • 四次挥手原理

    • 第一次挥手客户端 发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1状态(不能再发送数据到服务端,但能够发送控制信息ACK到服务端)。
    • 第二次挥手服务端收到FIN后,知道不会再有数据从客户端传来,发送ACK进行确认,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态。
    • 第三次挥手服务端发送FIN给对方,表示自己没有数据要发送了,服务端进入LAST_ACK状态,然后直接断开TCP会话的连接,释放相应的资源。
    • 第四次挥手客户端收到了服务端对FIN的ACK后,进入FIN_WAIT2状态(等待服务端完成资源释放的一系列工作:然后释放你为创建这个连接所分配的资源,并通知我你关闭了); 客户端收到了服务端的FIN信令后,进入TIMED_WAIT状态,并发送ACK确认消息。客户端在TIMED_WAIT状态下,等待2MSL一段时间,没有数据到来的,就认为对面已经收到了自己发送的ACK并正确关闭了进入CLOSE状态,自己也断开了到服务端的TCP连接,释放所有资源。当服务端收到客户端的ACK回应后,会进入CLOSE状态,并关闭本端的会话接口,释放相应资源。TIME_WAIT状态持续2MSL(MSL是数据分节在网络中存活的最长时间)。
    • 网络上比较主流的文章都说关闭TCP会话是四次挥手,但是实际上为了提高效率通常合并第二、三次的挥手,即三次挥手。
  • 关闭连接需要四次握手

    • 客户端服务端发送FIN为1的报文,服务端返回确认,关闭客户端服务端通信的部分。
    • 服务端客户端发送FIN为1的报文,客户端返回确认,关闭服务端与客户端通信的部分。

Web 的攻击技术

  1. 在客户端篡改请求
  2. 因输出值转义不完全引发的安全漏洞
  3. 跨站脚本攻击
  4. SQL 注入攻击
  5. OS 命令注入攻击
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值