xuchengpeng

Valar Morghulis. Valar Dohaeris.


  • 首页

  • 归档

  • 分类

  • 标签

  • 留言

  • 关于

  • 搜索

Emacs load packages

发表于 2018-05-11 | 分类于 Software , emacs | 评论数: | 阅读次数:
本文字数: 2.9k | 阅读时长 ≈ 5 分钟

load

load → is the general function for loading a file.

1
(load FILE &optional NOERROR NOMESSAGE NOSUFFIX MUST-SUFFIX)

举个例子,如果你的代码是 (load "x"),emacs 将从 load-path 中尝试加载 x.elc、x.el、x 文件。

load-file

load-file → load one specific file. The file name argument should contain file name extension, such as .el .elc

(load-file file_name) just calls (load (expand-file-name file_name) nil nil t)

Use load-file when you have a specific full path of a file in mind.

举个例子:

1
load-file "~/.emacs.d/lisp/init-example.el"

这是最为原始的方式,填写的路径必须是绝对路径,这个路径也不会加入到emacs中load-path里。它也不会优先寻找编译过.elc文件(显然编译过文件的会更快些)。这种方式已经被抛弃,仅作为历史提一下。

阅读全文 »

TCP/IP 详解(卷一) IGMP:Internet组管理协议

发表于 2018-05-10 | 分类于 Study , TCP/IP | 评论数: | 阅读次数:
本文字数: 2.6k | 阅读时长 ≈ 5 分钟

用于支持主机和路由器进行多播的Internet组管理协议(IGMP)。它让一个物理网络上的所有系统知道主机当前所在的多播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。

正如ICMP一样,IGMP也被当作IP层的一部分。IGMP报文通过IP数据报进行传输。不像我们已经见到的其他协议,IGMP有固定的报文长度,没有可选数据。IP首部(20字节) + IGMP报文(8字节)。

IGMP报文通过IP首部中协议字段值为2来指明。

IGMP报文

这是版本为1的IGMP。IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。检验和的计算和ICMP协议相同。

组地址为D类IP地址。在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。

阅读全文 »

TCP/IP 详解(卷一) 广播和多播

发表于 2018-05-10 | 分类于 Study , TCP/IP | 评论数: | 阅读次数:
本文字数: 4.3k | 阅读时长 ≈ 8 分钟

广播和多播仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要。TCP是一个面向连接的协议,它意味着分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。

考虑包含多个主机的共享信道网络如以太网。每个以太网帧包含源主机和目的主机的以太网地址(48bit)。通常每个以太网帧仅发往单个目的主机,目的地址指明单个接收接口,因而称为单播(unicast)。在这种方式下,任意两个主机的通信不会干扰网内其他主机(可能引起争夺共享信道的情况除外)。

然而,有时一个主机要向网上的所有其他主机发送帧,这就是广播(broadcast)。通过ARP和RARP可以看到这一过程。多播(multicast)处于单播和广播之间:帧仅传送给属于多播组的多个主机。

阅读全文 »

Add shell-pop with eshell

发表于 2018-05-09 | 分类于 Software , emacs | 评论数: | 阅读次数:
本文字数: 358 | 阅读时长 ≈ 1 分钟
1
2
3
4
5
6
7
8
9
10
11
(use-package shell-pop
:ensure t
:defer t
:bind ("C-c t" . shell-pop)
:config
(custom-set-variables
'(shell-pop-shell-type (quote ("eshell" "*eshell*" (lambda nil (eshell)))))
'(shell-pop-window-size 30)
'(shell-pop-full-span t)
'(shell-pop-window-position "bottom"))
)
阅读全文 »

TCP/IP 详解(卷一) UDP:用户数据报协议

发表于 2018-05-09 | 分类于 Study , TCP/IP | 评论数: | 阅读次数:
本文字数: 9.8k | 阅读时长 ≈ 18 分钟

UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。

UDP数据报封装成一份IP数据报的格式:IP首部(20字节) - UDP首部(8字节) - UDP数据。

UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。由于缺乏可靠性,我们似乎觉得要避免使用UDP而使用一种可靠协议如TCP。

应用程序必须关心IP数据报的长度。如果它超过网络的MTU,那么就要对IP数据报进行分片。如果需要,源端到目的端之间的每个网络都要进行分片,并不只是发送端主机连接第一个网络才这样做。

阅读全文 »

TCP/IP 详解(卷一) 动态选路协议

发表于 2018-05-08 | 分类于 Study , TCP/IP | 评论数: | 阅读次数:
本文字数: 7.4k | 阅读时长 ≈ 13 分钟

静态选路:在配置接口时,以默认方式生成路由表项(对于直接连接的接口),并通过route命令增加表项(通常从系统自引导程序文件),或是通过ICMP重定向生成表项(通常是在默认方式出错的情况下)。

在网络很小,且与其他网络只有单个连接点且没有多余路由时(若主路由失败,可以使用备用路由),采用这种方法是可行的。如果上述三种情况不能全部满足,通常使用动态选路。

动态选路

当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路。路由器之间必须采用选路协议进行通信,这样的选路协议有很多种。路由器上有一个进程称为路由守护程序(routing daemon),它运行选路协议,并与其相邻的一些路由器进行通信。路由守护程序根据它从相邻路由器接收到的信息,更新内核中的路由表。

动态选路并不改变内核在IP层的选路方式。这种选路方式称为选路机制(routing mechanism)。内核搜索路由表,查找主机路由、网络路由以及默认路由的方式并没有改变。仅仅是放置到路由表中的信息改变了—当路由随时间变化时,路由是由路由守护程序动态地增加或删除,而不是来自于自引导程序文件中的route命令。

路由守护程序将选路策略(routing policy)加入到系统中,选择路由并加入到内核的路由表中。如果守护程序发现前往同一信宿存在多条路由,那么它(以某种方法)将选择最佳路由并加入内核路由表中。如果路由守护程序发现一条链路已经断开(可能是路由器崩溃或电话线路不好),它可以删除受影响的路由或增加另一条路由以绕过该问题。

阅读全文 »

TCP/IP 详解(卷一) IP选路

发表于 2018-05-07 | 分类于 Study , TCP/IP | 评论数: | 阅读次数:
本文字数: 9.9k | 阅读时长 ≈ 18 分钟

选路是IP最重要的功能之一。需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生。在后一种情况下,主机必须配置成一个路由器,否则通过网络接口接收到的数据报,如果目的地址不是本机就要被丢弃(例如,悄无声息地被丢弃)。


阅读全文 »

TCP/IP 详解(卷一) Traceroute程序

发表于 2018-05-04 | 分类于 Study , TCP/IP | 评论数: | 阅读次数:
本文字数: 5.9k | 阅读时长 ≈ 11 分钟

由Van Jacobson编写的Traceroute程序是一个能更深入探索TCP/IP协议的方便可用的工具。尽管不能保证从源端发往目的端的两份连续的IP数据报具有相同的路由,但是大多数情况下是这样的。Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。Traceroute程序还可以让我们使用IP源路由选项。

Traceroute程序的操作

为什么不使用IP记录路由选项(RR)这个选项而另外开发一个新的应用程序?有三个方面的原因。
首先,原先并不是所有的路由器都支持记录路由选项,因此该选项在某些路径上不能使用(Traceroute程序不需要中间路由器具备任何特殊的或可选的功能)。
其次,记录路由一般是单向的选项。发送端设置了该选项,那么接收端不得不从收到的IP首部中提取出所有的信息,然后全部返回给发送端。在7.3节中,我们看到大多数Ping服务器的实现(内核中的ICMP回显应答功能)把接收到的RR清单返回,但是这样使得记录下来的IP地址翻了一番(一来一回)。这样做会受到一些限制,这一点我们在下一段讨论(Traceroute程序只需要目的端运行一个UDP模块—其他不需要任何特殊的服务器应用程序)。
最后一个原因也是最主要的原因是,IP首部中留给选项的空间有限,不能存放当前大多数的路径。在IP首部选项字段中最多只能存放9个IP地址。在原先的ARPANET中这是足够的,但是对现在来说是远远不够的。

Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期)。TTL字段是由发送端初始设置一个8bit字段。推荐的初始值由分配数字RFC指定,当前值为64。较老版本的系统经常初始化为15或32。我们从第7章中的一些ping程序例子中可以看出,发送ICMP回显应答时经常把TTL设为最大值255。

每个处理数据报的路由器都需要把TTL的值减1或减去数据报在路由器中停留的秒数。由于大多数的路由器转发数据报的时延都小于1秒钟,因此TTL最终成为一个跳站的计数器,所经过的每个路由器都将其值减1。

阅读全文 »

TCP/IP 详解(卷一) Ping程序

发表于 2018-05-04 | 分类于 Study , TCP/IP | 评论数: | 阅读次数:
本文字数: 3.6k | 阅读时长 ≈ 7 分钟

“ping”这个名字源于声纳定位操作。Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。

Ping程序

我们称发送回显请求的ping程序为客户,而称被ping的主机为服务器。大多数的TCP/IP实现都在内核中直接支持Ping服务器—这种服务器不是一个用户进程(两种ICMP查询服务,地址掩码和时间戳请求,也都是直接在内核中进行处理的)。
ICMP回显请求和回显应答报文如下:

对于其他类型的ICMP查询报文,服务器必须响应标识符和序列号字段。另外,客户发送的选项数据必须回显,假设客户对这些信息都会感兴趣。

Unix系统在实现ping程序时是把ICMP报文中的标识符字段置成发送进程的ID号。这样即使在同一台主机上同时运行了多个ping程序实例,ping程序也可以识别出返回的信息。

序列号从0开始,每发送一次新的回显请求就加1。ping程序打印出返回的每个分组的序列号,允许我们查看是否有分组丢失、失序或重复。IP是一种最好的数据报传递服务,因此这三个条件都有可能发生。

旧版本的ping程序曾经以这种模式运行,即每秒发送一个回显请求,并打印出返回的每个回显应答。但是,新版本的实现需要加上-s选项才能以这种模式运行。默认情况下,新版本的ping程序只发送一个回显请求。如果收到回显应答,则输出“host is alive”;否则,在20秒内没有收到应答就输出“no answer(没有回答)”。

阅读全文 »

TCP/IP 详解(卷一) ICMP:Internet控制报文协议

发表于 2018-05-03 | 分类于 Study , TCP/IP | 评论数: | 阅读次数:
本文字数: 3.4k | 阅读时长 ≈ 6 分钟

ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。

ICMP报文是在IP数据报内部被传输的,格式为:20个字节的IP首部加上后面的ICMP报文。

ICMP 报文格式中,类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。
检验和字段覆盖整个ICMP报文。使用的算法与IP首部检验和算法相同。ICMP的检验和是必需的。


阅读全文 »

1234…12
xuchengpeng

xuchengpeng

Valar Morghulis. Valar Dohaeris.

111 日志
19 分类
86 标签
RSS
Wuhan, China E-Mail GitHub Bitbucket
Creative Commons
友情链接
  • Chuck's Emacs Configuration
  • HarmonyHu
  • linode
  • shadowsocks
  • LeanCloud
  • Travis CI
  • NexT
© 2019 xuchengpeng | 站点总字数: 338k | 站点阅读时长 ≈ 10:14
0%