最近开始回顾一些知识,在看[计算机网络(第5版)谢希仁]这本书,
当然最重要的是OSI模型了,现在实际使用的是TCP/IP协议栈。
书里面有个图很直观,第32页,沙漏形状的TCP/IP协议族表示,谢先生表示最核心的是网络层的IP,
看图就能看出来,所谓的everything over IP and IP over everything
其中最底层的是物理层(其实就是通信原理课程所讲的内容)
断断续续的读到了传输层了,简单回顾下之前章节的知识点
为什么前面作者说核心是网络层,已有体会,并不是说物理层和链路层不重要,而是因为网络层的作用使得计算机真正的
互相连接在了一起,起至关作用的就是路由器了,为了使得从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类的网络号是前四个字节
大的分类有两个
内部网关协议 IGP (Interior Gateway Protocol) 也叫作域间路由选择 (interdomain routing)
外部网关协议 EGP (External Gateway Protocol)
上面的协议名称是统称,具体的实现,
内部网关协议有RIP (Routing Information Protocol), 是一种分布式的基于距离向量的路由选择协议
还有OSPF(Open Shortest Path First ) 最短路径优先
外部网关协议有,最新的叫做边界网关协议BGP
其中的路由算法有距离向量算法,最短路径算法,
还有路由信息的交换策略等这些知识有时间都可以研究下,挺有意思的。
(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拥塞
控制等等。
Read More