计算机网络 Wiki

  • 读书开始

最近开始回顾一些知识,在看[计算机网络(第5版)谢希仁]这本书,

  • OSI模型,TCP/IP协议

当然最重要的是OSI模型了,现在实际使用的是TCP/IP协议栈。

书里面有个图很直观,第32页,沙漏形状的TCP/IP协议族表示,谢先生表示最核心的是网络层的IP,

看图就能看出来,所谓的everything over IP and IP over everything

其中最底层的是物理层(其实就是通信原理课程所讲的内容)

  • 20170509更新

断断续续的读到了传输层了,简单回顾下之前章节的知识点

  • 网络层

为什么前面作者说核心是网络层,已有体会,并不是说物理层和链路层不重要,而是因为网络层的作用使得计算机真正的

互相连接在了一起,起至关作用的就是路由器了,为了使得从A到B能够联通,网络的构建者先后定义了一系列的协议

以及这些遇到问题之后的应对策略,

比如以下一些概念

  • IP地址 IP地址的设计是层级设计的,比如物流配送,先是XX市,然后XX区,XX街道,XX小区

只不过IP是两个层级的。前面是网络号,后面是主机号,

整个IP地址共4个字节,在此基础上又分成了4大类,

4大类的划分是按照ip地址二进制最高位几位划分的

00000000 XXXXXXXX XXXXXXXX XXXXXXXX 10000000 XXXXXXXX XXXXXXXX XXXXXXXX 11000000 XXXXXXXX XXXXXXXX XXXXXXXX 11100000 XXXXXXXX XXXXXXXX XXXXXXXX

A类的网络号是第一个字节

B类的网络号是前二个字节

C类的网络号是前三个字节

D类的网络号是前四个字节

  • 子网掩码 二级划分不够灵活,使用子网掩码成功可以划分成三级

  • ARP协议 功能,根据IP地址查找MAC地址,为啥要解析为MAC地址,因为链路层的frame(帧结构)使用的MAC硬件地址

  • 路由选择协议

大的分类有两个

内部网关协议 IGP (Interior Gateway Protocol) 也叫作域间路由选择 (interdomain routing)

外部网关协议 EGP (External Gateway Protocol)

上面的协议名称是统称,具体的实现,

内部网关协议有RIP (Routing Information Protocol), 是一种分布式的基于距离向量的路由选择协议

还有OSPF(Open Shortest Path First ) 最短路径优先

外部网关协议有,最新的叫做边界网关协议BGP

其中的路由算法有距离向量算法,最短路径算法,

还有路由信息的交换策略等这些知识有时间都可以研究下,挺有意思的。

  • IP多播

  • VPN 和NAT 其中有个规定,RFC 1918 规定了一些专用地址

(1) 10.0.0.0 到 10.255.255.255

(2) 172.16.0.0. 到 172.31.255.255

(3) 192.168.0.0 到 192.168.255.255

并且规定,在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。

(看到这里就有疑问了,我们基本上都是在局域网中,那么我们是怎么和其他公网服务器通信呢,

计算机通过路由交互,上面说的全都是根据公网IP地址做为源地址和目的地址交换信息的,我们局域网是怎么通信的?

就有了下面的NAT了)

NAT使用是最广泛了,他对匮乏的IPV4地址资源绝对起了很大的缓解作用。

想到了我家里接入运营商的网络,感觉应该不是公网地址,应该是在ISP里大的局域网中了,

而且对于个人用户来说不需要用公网地址,因为公网地址就是来提供服务的,只有公司或者组织才有需求使用这些公网地址。

  • 传输层

传输层离不开两个重要的协议TCP和UDP

其中,UDP是面向报文的,TCP是面向字节流的,

what?怎么理解面向报文和面向字节流,后面还有HTTP是面向字符的。

其实这得从各自协议的内部原理说起,

UDP是比较简单的,不需要连接,直接发送UDP报文,相比TCP真是简单快捷。

TCP是需要先进行连接的。其实连接不是物理通道上的连接,只是逻辑上的连接,著名的三次握手,四次挥手,

TCP的核心是如何实现可靠传输,注意是可靠,听起来很简单的词,实现起来可不简单,除了可靠还要效率,

可以看书中的‘停止等待协议’和‘连续ARQ协议’

还有书中在这一章提到了socket,指出是TCP连接的端点。IP+端口。socket本身的含义比较模糊,而且中文翻译也没有很好表达本身的意思。

我认为应该就是传输层的一个接口吧。

可以重点看下6.8应用进程跨网络的通信这一节,

因为TCP和IP协议目前都已经在操作系统内核中实现了,我们应用层使用比如http调用的是操作系统暴露出来的传输层(比如TCP和UDP)的接口,就是面向

socket编程了,不同的系统有自己的实现

unix:socket interface

windows:winSocket

  • 总结一下

关于本书,虽然书的出版时间比较老一些,但是不影响理解网络,毕竟一些基础的东西都是不变的,

而且凭借作者深厚的功底,对计算机网络的一步步发展,和期间遇到的每个问题,以及由此网络专家提出的解决方案等

介绍的很准确,理解起来很容易,没有废话,都是干货很好。

关于自己,越读书越发现自己知识不够,其中关于每个协议,以及如何实现协议,都可以作为一个专题研究下,比如TCP如何实现可靠传输,怎么做到的TCP拥塞

控制等等。