说回这本书,肯定很多人对这本书评价很差。我的观点是,对于“入门”这个层级来说,这本书还算不错的,作为一本类似科普性质的书,你不能要求它足够细节、足够深度、足够严谨。对于想入门计算机网络的道友们来说,这本确实是不错的入门书籍,会让你对网络世界有一个比较全面的认识,之后对某个小领域深入学习就好,毕竟计算机网络的体系实在是太庞大了。
-
TCP/IP协议的目标是让整个网络用起了同一套语言,它也做到了。
-
分组交换协议,将大数据分割成很多包,然后进行传输的协议。
-
分层的优势在于灵活和方便变更,而劣势就是过分模块化,效率低。
-
网络协议从高往低走不断增加首部信息,从低到高则反之,首部内容是该层协议间交流的关键信息,告诉你从哪里来要到哪里去。
-
发送数据有面向有连接的(比如tcp)和面向无连接(比如udp)的。
-
根据接受目标的数量分:单播,广播,组播(特定组),任播(特定组的任意一台计算机,一般是选中后变成单播)
-
通信的地址要有唯一性(确定性),层次性(方便查找),比较好的例子是IP协议。
-
数据链路层有很多种方式,常见的以太网,无线通信(比如WIFI)等等。
-
目标地址和源地址,以太网用 mac,ip用ip地址,tcp/udp用端口号(还能识别后面的协议类型)。
-
mac地址用于识别数据链路层中的节点。
-
共享介质(比如同时连在同一根网线上)的方式包括争用方式和令牌方式。非共享介质则更流行,一般是通过交换机转发数据,这种方式的好处是能实现全双工,效率更高,还能配置一些高级功能,比如 vlan,流量控制等等。缺点是一旦交换机故障,所有与之相连的都会出现故障。
-
MAC层的转发表,记录mac和port口的对应关系。
-
交换机的转发方式有存储转发(存储后检查以太网帧是否错误)和直通转发(更快)
-
为了避免环路,有生成树与源路由两种方式。
-
vlan 有基于端口的 vlan(比较简单),还有TAG VLAN(ieee802.1Q):在以太网首部加入 vlan id进行识别,交换机根据这个 VID 标签决定将帧发到哪个网段。
-
以太网首部为 14 个字节: 6 个字节 mac 目标地址,6 个字节的源 mac 地址,2 个字节的上层协议类型。增加 vlan 标识的帧也会改变以太网的头部。
-
ip 三大作用模块:ip 寻址,路由(节点转发),ip 分包与组包。
-
mac 地址只能标识同一链路。而 ip 地址用于识别网络中主机的位置。
-
ip 的数据包在传输过程中会不断更换数据链路层的 mac 地址(因为经过很多路由设备)
-
路由表记录着ip地址在下一步发给哪个路由器,记录映射关系。
-
ip 的分包处理在于底层的数据链路层的帧有最大传输单位(MTU)。比如以太网是1500byte。当 ip 的上层需要传播的数据更大时,需要进行分包处理,之后再组包。
-
为了简化和提高速度,ip 属于面向无连接型,属于不可靠传输。(上层的 tcp 协议解决了不可靠传输的问题)
-
ip 地址分为网络标识和主机标识,通过子网掩码区分,主机要通信必须在一个网段内。
-
主机地址全为1则为广播地址,mac地址全为 1 也是广播地址。
-
arp(地址转换协议),以目标 ip 地址为线索,用来定位下一个应该接收数据分包的网络设备对应的 mac地址。只适用于ipv4。实现过程就是 ARP 请求包和 ARP 响应包。
-
为了提高效率,电脑主机和路由都会记录一张mac和ip的映射表,叫做arp。 arp -a这个命令可以读出来。
-
traceroute可以查看主机到达目标地址经过了多少路由,及其 ip 地址。
-
DHCP,动态分配 ip 地址可以让网络设备随插随用。
-
NAT协议实现了私有ip地址到公有ip地址的转换,也解决了ipv4地址不足的问题。
-
使用套接字(socket)调用tcp/udp,设置对应的ip地址和端口号即可。
-
udp和tcp的端口号有一些是标准既定的,已经被规定使用了。不同的传输协议可以使用相同的端口号,两者的端口号其实就是是不同的。
-
路由的作用是,正确地转发数据。通过路由控制表转发数据。
-
路由有两种,分别为,静态路由和动态路由。
-
静态路由是指事先设计的固定信息。而动态路由路由协议在运行过程中自动设置路由表。
静态路由的缺点就是麻烦,需要手工操作,灵活性也不够。