说回这本书,肯定很多人对这本书评价很差。我的观点是,对于“入门”这个层级来说,这本书还算不错的,作为一本类似科普性质的书,你不能要求它足够细节、足够深度、足够严谨。对于想入门计算机网络的道友们来说,这本确实是不错的入门书籍,会让你对网络世界有一个比较全面的认识,之后对某个小领域深入学习就好,毕竟计算机网络的体系实在是太庞大了。
-
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
的端口号有一些是标准既定的,已经被规定使用了。不同的传输协议可以使用相同的端口号,两者的端口号其实就是是不同的。
-
路由的作用是,正确地转发数据。通过路由控制表转发数据。
-
路由有两种,分别为,静态路由和动态路由。
-
静态路由是指事先设计的固定信息。而动态路由路由协议在运行过程中自动设置路由表。
静态路由的缺点就是麻烦,需要手工操作,灵活性也不够。