端到端协议

从前几章研究的主机到主机的分组传递服务到转向进程到进程之间的通信信道,这正是网络体系结构中传输层(transport)的任务,由于它支持端点应用程序之间的通信,因此传输层协议有时也被称为端到端(end to end)协议。

因特网提供尽力而为(best-effort)的服务,为满足应用程序所需的高级服务,不同传输层协议用于不同的算法组合。代表性的4种有:一个简单的异步多路分解服务,一个可靠的字节流服务,一个请求/应答服务和一个用于实时应用的服务。

继续阅读全文 »

网络互联

我们已经见到如何用点到点链路共享介质交换机 建立单一的网络。 网络互联需要强调两个重要的问题:异构性(heterogeneity)和可扩展性(scale)。

异构性问题指的是一种类型网络上的用户希望能够同其他类型网络上的用户通信。

可扩展性问题因特网规模快速扩张,使得面临许多挑战,其中之一是路由(routing):你如何在有几百万个到几十亿个节点的网络中去找到一条高效的路径。与此密切相关的是编址(addressing),即给所有节点疼合适标识符的任务。

继续阅读全文 »

分组交换

第二章讲述的直接相连的网络有两个局限性:第一,该网络限制可以连接到网络上的主机数。第二,这种网络限制一个单独的网络能跨越的地区范围。

计算机网络使用分组交换机(packet switch),使分组能从一台主机传输到另外一台主机上,即使这些主机没有直接相连。

争用(contention):如果指定的分组到达交换机的某个输出端口,并且分组到达的速率超出该输出端口的能力,就会产生争用问题。

分组转发技术分为无连接的和面向连接的两大类。
有两个特殊的技术需要详细说明,第一种是局域网交换技术(LAN switching)技术,它由以太网的网桥(bridging)发展而来,并成为当前局域网环境中居于支配地位的技术之一。第二章值得注意的交换技术是异步传输模式(Asynchronous Transfer Mode,ATM),它广泛的应用于电信服务提供商的广域网中。

继续阅读全文 »

直接连接的网络

在节点能够成功的交换分组之前,必须先解决的五个问题。

  1. 对传送到铜线等介质上的比特编码(encoding)
  2. 把在链路上传输的比特序列描述为完整的消息,以便传送到端节点,这称为组帧(framing)
  3. 传输过程中帧有时候会出现错误,所以有必要检测这类差错并且采取适当的行动,这称为差错检错(error detection)
  4. 在帧尽管一次又一次出错的情况下,建立一条看起来可靠的链路
  5. 在多台主机共享一条链路(而不是用一条简单的点到点链路)的情况下,必须调解对这个链路的访问,这是介质访问控制(media access control)

    继续阅读全文 »

树和二叉树

  • 树的结点包含一个数据元素以及若干个指向其子树的分支。
  • 结点拥有的子树数称为结点的度(degree).
  • 度为0的结点称为叶子(leaf)或终端结点。度不为0的结点称为非终端结点或分支结点。
  • 除根节点以外,分支结点也称为内部结点。
  • 树的度是树内各结点的度的最大值。
  • 结点的子树的根称为该结点的孩纸,相应的,该结点称为孩子的双亲(parent).
  • 树中结点的最大层次称为树的深度(depth)或者高度。
  • 如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。
  • 森林(forest)是多颗互不相交的树的集合。

    继续阅读全文 »

webpack替代fekit的折腾小记

前言

早就想尝试webpack的,却一直没有时间,恰逢周末,又时值最近在公司实习的时候尝到用fekit做模块化的构建工具的爽。所以就开始以公司的项目结构去使用webpack的,当然最后还是有点问题的,只能折中解决了。公司的方案是前后端完全分离,html代码放在后端服务器上,css,js,images等资源文件放在前端服务器,两者是不同的域名。问过之后,才知道原来是因为,js每次请求会带上cookie,增加了不必要的带宽,所以将其放在前端服务器上,因为script的标签可以跨域引用(这也是jsonp的原理)。 所以主要的目录结构大概是,当然我说的折中是把html直接放进了prd文件夹下,这个之后要说明原因。

继续阅读全文 »

正则表达小结与小知识点集锦

背景介绍

这几天,刚来公司,导师安排点任务增加些功能,以便熟悉了开发环境。接到的任务中,有一个环节需要处理一个业务的json数据,具有多级嵌套,我要做的是让使用者可以修改其中的”userName”。

有两个思路

  • 利用正则表达式进行匹配替代
  • 利用遍历修改键值

当然,看到两个思路的高下,在大部分情况下都是可以直接得出结论的,正则肯定是优于遍历的。

继续阅读全文 »

calc 与 box-sizing 的替代

背景

之前发现calc这个布局新属性之后就非常喜欢,爱不释手。在公司的实习的时候,开发微信端的页面,使用了几次calc,后来发现在Android的上的不支持~蛋疼。于是到处找替代方案,终于在stackoverflow上找到一个满意的答复,好~接下来进入正文~

calc 与 box-sizing 简单介绍

calc 属性

calc()能让你给元素的做计算,你可以给一个div元素,使用百分比、em、px和rem单位值计算出其宽度或者高度,比如说“width:calc(50% + 2em)”,这样一来你就不用考虑元素DIV的宽度值到底是多少,而把这个烦人的任务交由浏览器去计算。

继续阅读全文 »