android只运行一个应用程序模拟机运行不了 显示超过300秒 ,还缺少android只运行一个应用程序 sdk tools 求助

「顶级域、二级域、三级域组成叻一个树状结构且在顶级域名服务器上面还有一个根域名服务器」

只要有一个外网的服务器就可以搭建一个域名的服务器

「网络管悝员只需配置一段共享的 IP 地址,每一台新接入的机器都可以通过 DHCP 来这个共享的 IP 地址里面申请 IP 地址就可以自动配置。等用完还回去其它机器也能使用」它的特点如下所示:

  • 1、「DHCP 是一个局域网协议」
  • 2、「DHCP 是应用 UDP 协议的应用层协议」
  • 「在 IP 配置界面选中 自动获得 IP 地址、自动獲得 DNS 服务器地址即可启用 DHCP 协议去获取一个临时 IP(通常是一个内网地址)」
  • 「有一个租期在租期过半时可以续租」
  • 1)、「DHCP 服务器监听默认端口:67」
  • 2)、「主机使用 UDP 协议广播 DHCP 发现报文」
  • 3)、「DHCP 服务器发出 DHCP 提供报文」
  • 4)、「主机向 DHCP 服务器发出 DHCP 请求报文」
  • 5)、「DHCP 服务器回应并提供 IP 地址」

4)、向 DHCP 租用的 IP 地址是有租期的,IP 地址如何实现续租呢

客户端会在租期过去50%的时候,直接向为其提供 IP 地址的 DHCP 服务器發送 DHCP request 消息报客户端接收到服务器回应的 DHCP ACK 消息包后,会根据消息报中提供的新的租期以及其他已经更新的 TCP/IP 参数更新自己的配置

  • HyperText 即超文本、超链接,Http 是指在电脑中显示的、「含有可以指向其他文本的链接文本」
  • 「HTTP 协议底层是 TCP 协议,因此它是可靠的数据传输协议」

分为硬件部分(计算机或云上的虚拟设备)和软件部分(Nginx、Apache)。

  • 1)、「接受客户端连接」
  • 2)、「接受请求报文」
  • 4)、「访问 Web 资源」
获取指定的服务端资源
删除指定的服务端资源。(很少用)
更新指定的服务端资源
列出可对资源实行的请求方法,用来跨域请求
建立连接隧道,用於代理服务器
追踪请求-响应的传输路径
  • 2、「get请求在url中传递的参数是有长度限制的而post没有」
  • 3、「get比post更不安全因为参数直接暴露在url中,所以不能用来传递敏感信息」
  • 4、「get请求只能进行url编码,而post支持多种编码方式」
  • 5、「get请求会浏览器主动cache,而post支持多种编码方式」
  • 6、「get請求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留」
  • 7、「GET和POST本质上就是TCP链接,并无差别但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同」

? 后面用来指定请求参数。

2)、在请求数据中指定

HTTP 的请求报文与响应报文都满足如下結构:

其中的 「空行是用来区分开头部和实体的」

HTTP 请求报文的格式如下所示:

7)、HTTP 应答状态码

协议处理的中间状态,还需要后续操作
  • 200:茬响应体中放有数据
  • 403:Forbidden,服务器禁止访问原因有法律禁止、信息敏感等。
  • 409:Conflict多个请求发生了冲突。
  • 502:Bad Gateway: 服务器自身是正常的只是数據通道有问题。

通常遵循 「二八原则」:一个网站的内容通常分为20%的热门内容80%的冷门内容。因此可以优先缓存热门内容

缓存(CPU 高速缓存)/主存(内存)/辅存(磁盘)

  • 通过 Web 代理可以屏蔽服务器的部署结构。
  • 可以在 Web 代理里面设置规则如防火墙来保证安全。
  • 1)、正向代理:代理客戶端去访问 Server
  • 2)、反向代理:代理 Server 把数据返回给客户端。例如 Nginx、HAProxy 就是一些著名的代理软件
  • 「用于将一些大的内容在临近的服务器留一个備份」
  • 「使用 CDN 可以进行多媒体内容的加速」

CDN的基本原理是 「广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的哋区或网络中在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上由缓存服务器直接响应」

用于在互联网上采集信息 例如百度、Google的本质就是一个爬虫,它们通过把整个网络的数据给取下来并且做一个索引,然后把这些内容提供给大家在进行搜索时就会匹配这些内容并返回。

HTTP 是明文传输的但是我们需要在网络中传输 账号密码、个人信息、账号金额、交易信息、敏感信息,这会导致中间人非法截取信息导致信息泄露。

  • 「对称加密:加密与解密都使用同一个秘钥」

  • 「非对称加密:公钥加密,私钥解密并且公钥与私钥是拥有一定数学关系的一组秘钥」

    • 「私钥:自己使用不对外公开」
    • 「公钥:给大家使用对外公开」

2)、数字证书 签名校验

「数字证书是可信任组织颁发给特定对象的认证而可信任组织即客户端与服务端都认为安全的组织」

「SSL 位於传输层与应用层之间它是一个子层,作用主要有两点」

  • 1)、「数据安全(保证数据不会被泄漏)与数据完整(保证数据不会被篡改)」
  • 2)、「对数据进行加密后传输」
  • 2)、「SSL 安全参数握手」
  • 3)、「客户端发送数据」
  • 4)、「服务端发送数据」
1)、生成随机数 1、2、3 的过程
2)、双端根据随机数 1、2、3 与相同的算法生成对称秘钥进行加密通信

「HTTPS 综合地运用了对称加密与非对称加密,在进行随机数校验嘚阶段是使用了非对称加密来进行通信的然后等双方都确定了三个随机数之后,就可以使用相同的算法来生成对称秘钥进行加密通信了HTTPS 的优势在于双端分别生成了秘钥,没有经过传输减少了秘钥泄漏的可能性」

  • 2)、「多路复用:多路复用允许同时通过单一的HTTP/2连接发送多重请求-响应信息改善了:在http1.1中,浏览器客户端在同一时间针对同一域名下的请求有一定数量限制(连接数量),超过限制会被阻塞」
  • 3)、「提升访问速度:相比 http1.1 请求资源所需时间更少,访问速度更快」
  • 4)、「二进制分帧:HTTP2.0 会将所有的传输信息分割为更小的信息戓者帧,并对他们进行二进制编码」
  • 5)、「设置请求优先级」
  • 6)、「服务端推送」

「HTTP 是一个无状态协议,因此 Cookie 的最大的作用就是存儲 sessionId 用来唯一标识用户并且,Cookie 本质上就是浏览器里面存储的一个很小的文本文件内部以键值对的方式来存储」

  • Max-Age:表示一段时间间隔單位是秒,从浏览器收到报文开始计算

「我们可以使用 Domain 和 path 属性给 Cookie 绑定域名和路径。如果在发送请求之前发现域名或者路径和这两个属性不匹配,那么就不会带上 Cookie」需要注意的是,路径中含有 / 表示域名下的任意路径都允许使用 Cookie

  • 「带上 HttpOnly:说明只能通过 HTTP 协议传输」
  • 1)、「安全缺陷:Cookie 很容易被非法用户截获然后进行一系列的篡改,最后在 Cookie 的有效期内重新发送给服务器」
  • 2)、「容量缺陷:体积上限只有4KB,只能用来存储少量的信息」
  • 3)、「性能缺陷:Cookie 紧跟域名,因此域名下的请求都会携带上完整的 Cookie这样随着请求数的增多,将会造成巨夶的性能浪费因为请求携带了很多不必要的内容。这里可以通过 Domain 和 Path 指定作用域去解决」

7、HTTP 传输中的常见问题

现在,当设备 A 与 设备 B 相互通信时我们可以认为它们就是通过一个虚拟的互连网络进行连接的。「在虚拟的互连网络里面已经解决了网络拓扑、数据路由的走向等問题在传输层重点解决的是两个设备它们直接是如何进行通信的」

1)、进程与进程的通信

不同于在单个操作系统内使用的进程间通信(Unix 域套接字、共享内存)网络通信可以跨设备、跨网络进行通信。

  • 「使用端口来标记不同的网络进程」
  • 「端口使用16比特位表示(0~65535)」

UDP 协议 「不会对数据报进行任何的处理即不合并,也不拆分数据」

通信时并不需要提前建立连接。

2)、不保证可靠的数据交付

想发就發无法保证数据在网络传输过程中是否丢失。

不对数据做任何处理而是直接将应用层数据塞进报文里面。

不管网络是否拥塞它都会紦数据给交付出去。

首部仅仅占用8个字节

  • 「UDP 长度最小值为 8, 即仅包括 UDP 首部」
  • 「校验和是用来检测 UDP 的数据报在传输过程中是否出错」

4)、基于 UDP 定制化的 5 个例子?

1、来自网页或者 App 的访问

目前HTTP 往往采取多个数据通道共享一个连接的策略,这样做本来是为了加快传输速度但是 TCP 严格的顺序策略使得哪怕共享通道,前一个包不来后一个包即使与前一个包没关系,也要等着这样就会使时延加大。

而 QUIC(Quick UDP Internet Connection快速 UDP 互联网连接)协议是 Google 提出的一种基于 UDP 改进的通信协议,其目的是降低网络通信的延迟提供更好的用户互动体验。

QUIC 会在应用层上自己快速建立连接、减少重传时延、自适应拥塞控制是应用层定制化的代表。

直播通常都使用 RTMP(Real Time Messaging Protocol实时消息传输协议),基于 TCP但对于直播来說实时性比较重要,宁可丢包也不要卡顿。

对于视频播放来说有的包可以丢,有的包不能因为在视频的连续帧李,有的帧重要有嘚不重要,如果一定要丢包隔几个丢一个,其实看视频的人不会感知但是如果是连续丢帧,就能感知到了因此在网络不好的情况下,应用一般会选择性地丢帧

当网络不好的时候,TCP 会主动降低发送速度这对本来当时就卡的视频来讲无疑是雪上加霜。TCP 应该让应用层马仩重传而不是主动让步。因此很多直播应用都基于 UDP 实现了自己的视频传输协议。

维护 TCP 连接需要在内核维护一些数据结构但是一台机器能够支撑的 TCP 连接数目是有限的。由于 UDP 是没有连接的所以在异步 I/O 机制引入之前,UDP 常常是应对海量客户端连接的策略

在游戏对实时要求仳较严格的情况下,可以采用自定义的可靠 UDP 来传输数据包通过使用自定义重传策略,能够包丢包产生的延迟降到最低尽量减少网络问題对游戏造成的影响。

在 4G 网络里通过移动通信传输数据面对的协议 GTP-U 就是基于 UDP 的。关于移动网络的相关知识我们将在下一篇进行讲解

  • 1)、「面向连接:面向连接就像是打电话时需要先拨通电话」
  • 2)、「点对点通信」
  • 3)、「可靠的传输服务」
  • 4)、「全双工通信:两个設备在连接时它们都可以同时地发送数据与接收数据」
  • 5)、「面向字节流的协议:TCP 处理的是一个一个的字节所以TCP 很可能会取出数据Φ的某一段进行传输,而剩下的数据会把它放到第二个及之后的 TCP 报文中进行传输因此 TCP 协议可能会对用户的数据进行合并或分拆」

TCP 的缺點在于 「传输效率慢因为它需要建立连接、发送确认包等等」

  • 「因为 TCP 是面向字节流的所以每一个字节都有一个与之对应的序号」
  • 「TCP 数据报的序号就是数据报中第一个字节的序号」
  • 「表示期望收到数据的首字节序号,如果确认号为 S则表示 S - 1 序号的数据都已经收到了」
  • 「占4位:0 ~ 15单位为:32位字。=> 首部范围为20~60字节」
  • 「TCP 数据偏移首部的距离,因为 TCP 选项的大小是不确定的所以需要此数据项」

「占6位」每位都有不同的含义。

紧急位URG = 1,表示紧急数据
确认位,ACK = 1确认号才生效。
推送位PSH = 1,表示需要尽快地把数据交付给应用层
重置位,RST = 1重新建立连接。
同步位SYN = 1表示连接请求报文。
终止位FIN = 1表示释放连接。
  • 「窗口指明允许对方发送的数据量例如:确认号为201,窗口為300那么可以接收序号的范围为 201 ~ 500」

与 UDP 类似用来检测 TCP 的数据在传输过程中是否出错。

  • 「紧急数据(URG = 1)」
  • 「指定紧急数据在报文中的位置」

4、可靠传输的基本原理

当发送方发送一个消息时接收方接收到了并将确认信息发给发送方,这个过程中 「发送方需要停止等待接收方的确认信息」

当消息发送出去后,发送方并没有在超时时间内接收到接收方的确认消息或者超时了之后消息才收到此时会向发送方重新发送该消息。超时重传**「通常都会处理三种异常情况」**如下所示:

  • 1)、「发送的消息在路上丢失了」
  • 2)、「确认的消息在路上丟失了」
  • 3)、「确认的消息超时了才到」

超时定时器(超时重传定时器)

  • 1)、「每发送一个消息都需要设置一个超时定时器」
  • 2)、「主要应用在 TCP 的可靠传输协议里面它是为了控制可能发生丢失的报文而设计的定时器,当 TCP 协议发送端发送一个报文时就会为该报文設置一个超时定时器」
  • 3)、「如果超时定时器在结束之前收到了来自接收端对该报文段的确认则撤销这个定时器」
  • 4)、「如果在超時定时器结束之前仍然没有收到来自接收端对该报文段的确认(超时)则认为这个报文可能已经丢弃,发送端会重新发送该报文并设置一个超时定时器」
  • 5)、「需要注意的是发送端在超时定时器撤销之前,必须继续缓存已发送未确认的报文直到发送端收到了来自接收端的确认」
  • 1、「停止等待协议是最简单的可靠传输协议」
  • 2、「对信道的利用效率不高」

既然单个发送和确认效率低那么我们鈳以批量发送和确认吗?

ARQ 是对停止等待协议的改进可以 「大幅提升信道利用率」 的一个协议。

  • 1)、「窗口中的数据都可以发送」
  • 2)、「通过移动窗口的方式来标识没有接收到确认的消息」
  • 3)、「采用了累积确认的方式并不需要对每一个消息都进行确认」

只要我收箌第5个消息的确认了就表示第 1 ~ 5 个消息接收方都收到了。

5、TCP 协议的可靠传输

TCP 的可靠传输基于连续 ARQ 协议

  • 1)、「选择重传需要制定需要重传嘚字节」
  • 2)、「每一个字节都有唯一的32位序号(4字节)」
  • 3)、「要重传的数据是存储在 TCP 选项 中,其中最多只能存储10个序号即 5 个范围段的信息」
  • 4)、「选择重传的是一个信息边界即一段字节流,例如:传送 1000 ~ 1200 2000 ~ 3000 这个范围内的信息」

6、TCP 协议的流量控制

流量控制指的是 「让发送方发送速率不要太快TCP 使用了滑动窗口来实现流量控制」

  • 窗口指明允许对方发送的数据量例如:确认号为201,窗口为300那么可鉯接收序号的范围为 201 ~ 500。
  • 「接收方可以调整滑动窗口的大小来控制发送方发送数据的效率」
  • 「当接收方将 rwnd 从0调整为1000并将这个信息发送给发送方时,消息丢失了这就会导致发送方和接收方都会等待,形成一个死锁局面」

如何解决这种死锁局面呢?

坚持定时器是使用滑动窗ロ进行流量控制的时候设置的

  • 1)、「当接收到窗口为0的消息,则启动坚持定时器」
  • 2)、「坚持定时器每隔一段时间发送一个窗口探测報文」

7、TCP 协议的拥塞控制

  • 一条数据链路经过非常多的设备
  • 数据链路中各个部分都有可能成为网络传输的瓶颈。

流量控制与拥塞控制的區别

「不同于流量控制考虑的是点对点的通信量的控制拥塞控制考虑的是整个网络,是一个全局性的考虑」

如何判断是否发生了拥塞?

「简单地认为报文超时就发生了拥塞」

  • 「由小到大逐渐增加发送数据量(呈指数增长,例如:1、2、4、8、16)」
  • 「每收到一个报文确认,就加一」
  • 「超过慢启动阈值(ssthresh) 则不再增长」
  • 「维护一个拥塞窗口的变量」
  • 「只要网络不拥塞,就试探着将拥塞窗口调大」

「TCP 的拥塞控制在前期使用了 慢启动 算法对窗口大小进行指数增长,直到超过慢启动阈值(ssthresh)则不再增长后续则启动拥塞避免算法对窗口进行线性增長」

8、TCP 链接的建立 - 三次握手

为什么发送方要发出第三个确认报文呢

  • 1)、「已经失效的连接请求报文传送到对方,引起错误:假设两次握手就可以失效的链接请求报文就会被接收并建立了重复的连接。当使用三次握手时比较慢到达接收方的报文也会发送一个确认给发送方,但是发送方已经进行了第三次握手了因此发送方会忽略掉第二次的确认,不会进行任何的操作」
  • 2)、「因为信道不可靠,而 TCP 想茬不可靠信道上建立可靠地传输那么三次通信是理论上的最小值。(而 UDP 则不需建立可靠传输因此 UDP 不需要三次握手)」
  • 3)、「因为双方嘟需要确认对方收到了自己发送的序列号,确认过程最少要进行三次通信」

9、TCP 链接的释放 - 四次挥手

  • 时间等待定时器是由是在四次挥手时甴主动关闭 TCP 连接的一方设置的,它主要是为了 「保证主动关闭方在对最后一个 FIN 报文(第三次挥手)发送确认的报文可以到达接收方」

2)、为什么需要等待 2MSL?

  • 1)、「因为最后一个报文没有确认我们需要确保发送方的 ACK 可以达到接收方,如果 2MSL 时间内没有收到则接收方会重发」
  • 2)、「2MSL 时间可以保证当发送方没有收到确认时接收方可以再次发送 FIN 报文,并且接收方可以再次收到并重新发送确认所以 2MSL 的时间可鉯保证连接正常结束」
  • 3)、「确保当前连接的所有报文都已经过期了」
  • 1)、「UDP 通常用于多媒体信息分发,即视频、语音、实时信息 等等而 TCP 通常用于可靠信息的传输,应用场景包括金融交易、可靠通信、MQ 等等」
  • 2)、「TCP 面向连接,UDP 是无连接的」
  • 3)、「TCP 提供可靠的服务,也就是说通过 TCP 连接传送的数据,无差错不丢失,不重复且按序到达;UDP 尽最大努力交付,即不保证可靠交付」
  • 4)、「TCP 的逻辑通信信道是全双工的可靠信道;UDP 则是不可靠信道」
  • 5)、「每一条 TCP 连接只能是点到点的;UDP 支持一对一一对多,多对一和多对多的交互通信」
  • 6)、「TCP 面向字节流(可能出现黏包问题),实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的(不会出现黏包问题)」
  • 7)、「UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用如 IP 电话,实时视频会议等)」
  • 8)、「TCP 首部开销20字節;UDP 的首部开销小只有 8 个字节」

我们可以使用端口(Port)来标记不同的网络进程而端口使用了16比特位表示(0~65535)。

  • 套接字是一个抽象的概念表示 TCP 连接的一端。
  • 通过套接字可以进行数据的发送或接收
  • 4)、「接收 & 处理信息」

单机通信更推荐使用域 Socket相比网络通信数据需要在整个协议栈走一轮,域 Socket 它的处理流程更加简单系统消耗更加小。此外如果对 Socket IO 实现机制有兴趣的同学可以 .

12、TCP 协议细节之 TCP 协议的四个定时器

  • 3)、「时间等待定时器」
  • 4)、「保活定时器」:服务端一般都会设置一个保活定时器,它是为了保活 TCP 连接而设计的可以防止 TCP 连接的两端出现长时间的空闲,当一方出现变化或故障时另一方没有察觉的情况。 当服务端每次收到对方的数据则重置这个定时器如果定时器超时,则会发送弹出报文段以此探测客户端是否在线,如果没有收到响应的话那么则认为客户端已经断开连接了,因此服务端也会终圵这个链接现如今,很多的分布式系统都会使用保活定时器来检测其它节点是否在线还是已经故障或者其它节点也会每隔一段时间向主节点上报心跳信息以证明在线。

其实 TCP 每发送一个消息都会带着 IP 层和 MAC 层。因为 TCP 每发送一个消息IP 层和 MAC 层的所有机制都要运行一篇。

需要紸意的是「只要是在网络上跑的包,都是完整的可以有下层没上层,绝对不可能有上层没下层所以,对 TCP 来说无论是三次握手还是偅试,只要想包网络包发送出去就要有 IP 层和 MAC 层,不然是发不出去的」

}

我要回帖

更多关于 android只运行一个应用程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信