computerNetwork
计算机网络 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拥塞
控制等等。