图解TCP/IP拾遗

书中一些重点知识的摘抄与一些个人理解。

第一章

内容不多,1.7以前的都可以略读吧。

1.7传输方式分类

面向有连接与无连接,课上会讲。

电路交换与分组交换

课上也讲

  • 电路交换建立连接 -> 通话 -> 释放连接;在通话的全部时间内,通话的双方始终占用端到端的通信资源;
  • 报文交换:整个报文先传送到相邻节点,全部存储下来后查找转发表,转发到下一个节点;
  • 分组交换:把一个报文划分为几个数据段后,在其前面加上一些由必要控制信息组成的“首部(存有目的地址、源地址以及控制信息)”后,就形成了“分组”发送给路由器,路由器将这些分组数据缓存到自己的缓冲区,再转发给目标计算机。

分组交换的优点

分组交换的问题

  • 分组在各路由器存储转发时需要排队,会引起一定的“时延”;
  • 无法保证通信时端到端所需的带宽;
  • 分组必须携带的控制信息可能成为一定的开销。

 

1.8地址

地址的唯一性,很好理解,我们必须通过一个地址唯一确定一个通信主体。

层次性主要解决的是性能问题,毕竟MAC地址有48位,一点一点查,就算有缓存也会导致性能不高,MAC地址与IP地址都有唯一性,但IP地址有层次性。打个比方,这种查找的效率区别就相当于遍历数组查找元素与从树根出发查找某棵树的某个叶子结点的区别。

所以虽然MAC地址是真正最终负责通信的地址,但实际寻址过程中,IP地址是必不可少的。

 

1.9网络的构成要素

认识了一些从前听说过但不了解的东西

中继器

一个将输入信号增强放大的模拟设备,而不考虑输入信号种类(是类比的还是数位的)。中继器是用来加强缆在线的信号,把信号送得更远,以延展网络长度。当电子信号在电缆上发送时,信号强度会随着传递长度的增加而递减。因此需要中继器将信号重新加强以增加资料的发送距离。

他不会管数据是不是有错误

网桥

网桥是数据链路层连接两个网络的设备,能够识别数据链路的数据帧,并将其临时存储于内存,再重新生成信号作为另一个全新的帧发送给相连的另一个网段。

以太网设计目标:电脑使用一个网络接口,可以同时与多台电脑通信,将电脑连接起来的黑盒子最先面世,称之为集线器,但我们更喜欢叫它Hub

这种集线器,通常有多个端口,可以接入多台电脑,这种黑盒子使电脑连接在一起成为一种可能,其内部工作原理,就是信号放大器

随着以太网的流行,越来越多的办公室使用它,网络变得越来越大,信号随着网线距离的变长,信号衰减的使得通信变得越发不可靠,同样需要可以将信号中继、放大的集线器。

但这个集线器只需两个端口,一端连着一根网线,由于其本来的目的就是延伸网线,美其名曰:网桥,这个更像描述其功能性的一面,“牵线搭桥”之意。

在集线器的基础上,添加了MAC地址学习功能,成为了交换机,这样可以避免集线器对所有帧都广播的弊病。

但这些设备依然都是桥接设备,因为帧经过它们时,帧原封不动。

但是随着无线局域网的诞生,关于桥接的定义被刷新,有线的Ethernet II 帧访问无线802.11时,帧格式发生了变化,但依然称AP(Access Point)为桥接设备,为何?因为一个广播帧可以无障碍通过AP,AP并没有分割广播域,所以依然是桥接设备。

作者:车小胖
链接:https://www.zhihu.com/question/67473683/answer/277092129

用集线器扩展局域网

优点:

使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信。

扩大了局域网覆盖的地理范围。

缺点:

碰撞域增大了,但总的吞吐量并未提高。

如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。

在数据链路层扩展局域网

在数据链路层扩展局域网是使用网桥。网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。

网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口

使用网桥带来的好处

1.过滤通信量。

2.扩大了物理范围。

3.提高了可靠性。

4.可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网。

使用网桥带来的缺点

1.存储转发增加了时延。

2.在MAC 子层并没有流量控制功能。

3.具有不同 MAC 子层的网段桥接在一起时时延更大。

4.网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。

网桥和集线器(或转发器)不同

集线器在转发帧时,不对传输媒体进行检测。

网桥在转发帧之前必须执行 CSMA/CD 算法。若在发送过程中出现碰撞,就必须停止发送和进行退避。

路由器

路由器是在网络层上连接两个网络并对分组报文进行转发的设备。

网桥是根据物理地址(MAC地址)进行处理,而路由器则是根据IP地址进行处理。

网关

网关是负责将传输层到应用层数据进行转换和转发的设备,注意它是可以进行不同协议之间的数据转换的,

代理服务器也是一种网关,称为应用网关。

网关是一种充当转换重任的计算机系统或设备,在使用不同的通信协议,数据格式或语言,甚至体系结构完全不同的两种系统时,网关是一个翻译器。与网桥只是简单地传送信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。

这就是为什么我们在有路由器上网的时候,必须要把计算机中的默认网关地址设置成路由器LAN接口的地址的原因,因为路由器的LAN接口就是你所在网络的网关,你的电脑要上网,数据包必须要经过网关转发出去。目前家用路由器一般使用192.168.1.1和192.168.0.1作为LAN接口的地址,这两个地址也是最常见的网关地址。

简单来说,网关是设备与路由器之间的桥梁,正确的网关配置才能保证用户可以正常上网。

一个局域网比作一个房间,一个房间里有若干电脑,当屋内的电脑进行通讯的时候当然没有阻碍,因为他们都是在一起的。但当这个房间内的任何一台电脑要与外界相连,就要通过网关了。这个网关可以比作房间大门的门牌,而服务器网关就是一种对外的识别系统,使不同网络之间可以自由通讯的系统。

剩下的无所谓了

 

第二章

2.1-2.3随便看看,2.4课上也有提到,2.5的例子不错,可以仔细看看

 

第三章

3.1总括,可以瞅一眼

3.2数据链路相关技术

Mac地址不一定唯一,但是在同一个数据链路是唯一就可以。

共享介质型网络

顾名思义,指多个设备共享一个通信介质的一种网络,基本上使用半双工通信,并有必要对介质进行访问控制。、

两种介质进行访问控制方式:争用方式、令牌传递方式。

争用方式:争夺数据传输权力,也叫CSMA(载波监听多路访问),但是会产生很多冲突导致网络拥堵与性能下降。

改良版:CSMA/CD,要求每个站提前检查冲突,如果载波信道上没有数据流,则任何站都可以发送数据。一旦发生冲突,放弃发送数据并立即释放载波信道,并随机延时一段时间,重新争用介质。

令牌传递方式:沿令牌环发送“令牌”报文,获得令牌的站才能发送数据。不会产生冲突,获得令牌的机会均等所以公平。当然,数据链路利用率不高(并不是都有发送数据的需求)

非共享介质网络

网络中每个站直连交换机,由交换机负责转发数据帧。一般是全双工通信。

不过一旦交换机出现故障,与之相联的所有主机都无法联网。

根据Mac地址转发

使用同轴电缆的以太网等共享介质中联网主机增加时通信性能有明显下降,将集线器或者集中器等设备以星型连接,就成为交换集线器,或称以太网交换机。其就是持有多个端口的网桥,它们根据数据链路层帧目标的MAc地址决定向哪个网络接口发送数据,这时所参考的、用以记录发送接口的表叫做转发表。计算机设备的外部接口都称作端口,与TCP等传输协议的端口不是一个端口含义。

转发表是生成的,数据链路层每个通过点在接到包时会将源Mac地址以及曾经接收该地址发送的数据包的接口作为对应关系记录到转发表中。这就是交换机的自学过程,如图。

交换机转发有两种方式,存储转发或者直通转发。

环路检测

一种是生成树,也就是由无向图生成树,另一种是IBM提出的源路由法。

VLAN:虚拟局域网

使用VLAN对网段进行区分,从而区分广播数据的传播范围,减少网络负载并提高安全性,也提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。异构的两个网段之间需要利用有路由功能的交换机或者各段之间通过路由器连接才能通信。

早期以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术。当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过二层设备实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量。

在这种情况下出现了VLAN技术。这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,广播报文就被限制在一个VLAN内。如下图所示。

剩下的内容感觉都是比较老套的东西

 

第四章

主要讲IP协议的主要功能和规范。

4.1IP即网络协议

数据链路层的主要作用是在同一数据链路的节点中进行数据传输,如果跨越多种数据链路,就需要借助网络层进行数据传输。

一些定义:主机是配置有IP地址但是不进行路由控制的设备,而路由器是配置有IP地址且进行路由控制的设备。

4.2IP的基础知识

IP是实现多个数据链路之间通信的协议,但是不同种类的数据链路有不同的特点,IP的重要作用之一就是对这些数据链路的相异特性进行抽象化。

不同数据链路的最大区别就是最大传输单位(MTU:Maximum Transmission Unit)不同,就好比不同邮寄公司对能邮寄的包裹的最大重量有不同限制一样。

为了解决这个问题,IP进行分片处理,即:将较大的IP包分为较小的IP包。到对面的网络层再组装起来。

又:IP面向无连接,简化,提速。TCP面向有连接。

4.3IP地址的基础知识

IP地址由网络标识(网络地址)和主机标识(主机地址)两部分组成。网络标识必须保证相互连接的每个段的地址不相重复,相同段内主机必须有相同的网络地址。这样一看网络标识就能知道是不是这个网段的主机。

哪几位是网络标识,哪几位是主机标识,最初对两者进行直接分类,现在主要用子网掩码进行区分。

分类的 IP

IP 地址的编码方法共经过三个历史阶段:

1
2
3
1. 分类的 IP
2. 子网的划分
3. 超网

第一种分类的 IP,即将 IP 地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成。

其中第一个字段是网络号(net-id),它标志主机或路由器所连接的网络。一个网络号在整个因特网内必须是唯一的。

第二个字段是主机号(host-id),它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。

根据 IP 地址的范围,由此便划分出 A、B、C、D 这四类地址。如下图:

注意,这里要指出,由于近年来已经广泛使用无分类 IP 地址进行路由选择,A类、B类和C类地址的区分已成为历史[RFC 1812]。

最初的两级 IP 地址划分存在许多问题。最典型问题是,两级 IP 地址不够灵活。设想,一个单位需要在新的地点马上开通一个新的网络。但是在申请到一个新的 IP 地址之前,新增加的网络是不可能连接到因特网上工作的。我们希望有一种方法,使一个单位能随时灵活地增加本单位的网络,而不必事先到因特网管理机构去申请新的网络号。原来的两级 IP 地址是无法做到这一点的。

为解决上述问题,从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级 IP 地址变成为三级 IP 地址,它能够较好地解决上述问题,并且使用起来也很灵活。这种做法就叫作划分子网。

划分原理

万变不离其宗:划分子网只是把 IP 地址的主机号这部分进行再划分,而不改变 IP 地址原来的网络号。

三个特点:

  1. 对外仍然表现为一个网络。一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网(subnet)。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成。
  2. 两级 IP 地址在本单位内部就变为三级 IP 地址:网络号、子网号和主机号。 划分子网的方法是从网络的主机号借用若干位作为子网号 subnet-id,当然主机号也就相应减少了同样的位数。
  3. 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到 IP 数据报后,再按目的网络号和子网号找到目的子网,把 IP 数据报交付目的主机。

随着技术的发展,组网的方式也越来越丰富,因此传统 A、B、C 类的 IP 分类方法已经过时了。为了满足人们的需求,引入了 CIDR 记法。

什么是 CIDR 记法呢?CIDR 将 32 位的 IP 地址一分为二,前面是网络号,后面是主机号。

我们以 192.168.1.53/27 为例,斜杠后面有个数字 27。这种地址表示形式,就是 CIDR。后面 27 的意思是,32 位中,前 27 位是网络号,后 5 位是主机号。

子网掩码

子网掩码:将网络号全部置 1.

我们知道 192.168.x.x,按照传统的 IP 分类的话属于 C 类网络。C 类网络默认掩码只有 24 位。但是 /27 显然多出了 3 位,多出的 3 位从哪里来?就需要从主机位借位。

转换为二进制,如下图所示:

网络地址

网络地址:IP 地址 & 子网掩码

广播地址

广播地址:将网络地址右边的表示主机位的部分全部置 1

其他

可以了解一下什么是公网ip,内网ip,NAT

https://zhuanlan.zhihu.com/p/36206211

https://www.zhihu.com/question/31332694

4.4路由控制

感觉讲得太笼统

4.5IP报文分割与处理

IP数据包在传输是可能因为跨越不同类型数据链路而受到不同MTU限制,所以就要对报文分片。

分片由路由器进行,而且可能会进行多次分片,最后在目标主机组装成原报文,如:

但这种方式大大加重了路由器负担,而且一旦某个分片丢失,就会造成整个IP数据包作废。因此产生了路径MTU发现这种技术。路径MTU指的是从发送端主机到接收端主机之间不需要分片时的MTU的最大MTU。也就是数据链路中所有MTU的最小MTU。

UDP情况下 TCP情况下

路径MTU发现的工作原理如下:

首先在发送端主机发送IP数据报时将其首部的分片禁止标志位设置为1。 根据这个标志位,途中的路由器即使遇到需要分片才能处理的大包,也不会去分片,而是将包丢弃。随后,通过一个ICMP的不可达消息将数据链路上MTU的值给发送主机。

下一次,从发送给同一个目标主机的IP数据报获得ICMP所通知的MTU值以 后,将它设置为当前MTU。发送主机根据这个MTU对数据报进行分片处理。如此反复,直到数据报被发送到目标主机为止没有再收到任何ICMP,就认为最后一 次ICMP所通知的MTU即是一个合适的MTU值。那么,当MTU的值比较多时,最少可以缓存约10分钟。在这10分钟内使用刚刚求得的MTU,但过了这10分钟以后则重新根据链路上的MTU做一次路径MTU发现 。

前面是UDP的例子。那么在TCP的情况下,根据路径MTU的大小计算出最大段长度(MSS),然后再根据这些信息进行数据报的发送。 因此,在TCP中如 果采用路径MTU发现,IP层则不会再进行分片处理。

4.6IPv6

介绍性的一些知识

 

第五章

5.2DNS

直接输IP地址太麻烦,参考最开始的主机识别码则产生了主机识别码到IP地址的唯一映射关系,但是这种关系更新非常频繁,可用性不高,于是出现了DNS系统,维护一个用来表示组织内部主机名与IP地址之间关系的数据库。

域名的构成

介绍了什么是域名,简单。

DNS分层结构:经典的树形结构。

DNS查询

TCP情况下

解析器为了调查IP地址,向域名服务器进行查询处理。接收这个查询请求 的域名服务器首先会在自己的数据库进行查找。如果有该域名所对应的IP地址就返回。如果没有,则域名服务器再向上一层根域名服务器进行查询处理。 因此,如图所示,从根开始对这棵树按照顺序进行遍历,直到找到指定的域名服务器,并由这个域名服务器返回想要的数据。

解析器和域名服务器将最新了解到的信息暂时保存在缓存里。这样,可以减少每次查询时的性能消耗。

5.3 ARP:Adress Resolution Protocol

主要解决地址问题,主要以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备的MAC地址。

不过只适用于IPv4。

上课会讲,课程笔记里有

5.4 ICMP

上课会提到,主要考虑其作用,很少考察有哪些具体类型。

5.5 DHCP、5.6 NAT、5.7 IP隧道

上课会讲,课程笔记里有

 

第六章

直接看课程笔记就好,更详细,TCP、UDP是非常重要的一部分内容。

 

第七章

7.1 路由控制的定义

静态路由是指事先设置好路由器和主机中并将路由信息固定的一种方法。而动态路由是指让路由协议在运行过程中自动地设置路由控制信息的一种方法。

TCP情况下

7.2 了解即可

7.3 路由算法

路由控制有各种各样的算法,其中最具代表性的有两种,是距离向量(Distance-Vector) 算法和链路状态 (Link-State) 算法。

距离向量算法 (DV) 是指根据距离(代价) 和方向决定目标网络或目标主机位置的一种方法

距离向量算法。路由器之间可以互换目标网络的方向及其距离的相关信息,并以这些信息为基础制作路由控制表。这种方法在处理上比较简单,不过由于只有距离和方向的信息,所以当网络构造变得分外复杂时,在获得稳定的路由信息之前需要消耗一定时间也极易发生路由循环等问题。

链路状态算法是路由器在了解网络整体连接状态的基础上生成路由控制表的一种方法。该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择。

距离向量算法中每个路由器掌握的信息都不相同。通往每个网络所耗的距离 (代价) 也根据路由器的不同而不同。因此,该算法的一个缺点就是不太容易判断每个路由器上的信息是否正确。

而链路状态算法中所有路由器持有相同的信息。对于任何一台路由器,网络拓扑都完全一样。因此,只要某一台路由器与其他路由器保持同样的路由控制信息,就意味着该路由器上的路由信息是正确的。只要每个路由器尽快地与其他路由器同步路由信息,就可以使路由信息达到一个稳定的状态。因此,即使网络结构变得复杂,每个路由器也能够保持正确的路由信息、 进行稳定的路由选择。

为了实现上述机制,链路状态算法付出的代价就是如何从网络代理获取路由信息表。这一过程相当复杂,特别是在一个规模巨大而又复杂的网络结构中,管理和处理代理信息需要高速CPU处理能力和大量的内存。

课上会讲BGP、OSPF(也就意味着我的笔记里会有),但没有讲RIP,但实际上是以RIP为例讲述了距离矢量路由算法。

7.4 RIP

距离向量型的一种路由协议,广泛用于 LAN

直接参考笔记的距离矢量路由算法部分即可,注意的一点是7.4.3以及无线技术的问题。