读《图解TCP/IP》(一)

一、网络基础知识

1、分组交换协议

将报文分割为一个个叫做包(packet)的较小单位进行传输的方法。在分割的同时,会在每个包中表明分组序号,这个序号供接收端重新装配数据。

2、协议分层和OSI参考模型

OSI模型由ISO制订,将通信协议中必要的功能分为了7层。

2.1OSI参考模型

从上至下依次为:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。

  • 应用层(规定通信相关细节)
    针对特定应用规定特定的协议。如电子邮件协议、文件传输协议等。
  • 表示层(负责数据格式的转换)
    设备固有数据格式和网络数据格式的转换。将不同的数据转换为相应的适合网络传输的格式;或者将来自下一层的数据转换为上一层能够处理的格式。
  • 会话层(通信连接管理)
    通信管理。负责建立和断开通信连接。管理传输层以下的分层。可以控制何时建立连接、何时断开连接和连接多长时间。
  • 传输层
    管理数据的传输,确保数据被可靠的传送到目标地址。比如:是否有数据丢失。
  • 网络层(将数据传输到目标地址)
    地址管理和路由选择。负责选择由哪些路由传递到目标地址。
  • 数据链路层
    互联设备之间传送和识别数据帧。
  • 物理层
    将设备接收到的01数字流转换为电压或者脉冲光,然后传输给物理传输介质;或者将接收到的电压信号和脉冲转换为01数字流。

3、传输方式分类

可以根据其数据发送方式进行多种分类。

3.1 面向连接型和面向无连接型

  • 面向有连接型
    要求双方建立连接,双方都确认可以连接和接收,然后才开始发送数据。
  • 面向无连接型
    不要求建立连接,不用确认对方的工作状态,以及不用关心对方是否存在,只管发送,不关心对方有没有接收到。

3.2 电路交换和分组交换

  • 电路交换
    历史相对久远,主要用于过去的电话网。
    交换机主要负责数据的中转处理。计算机首先被连接到交换机上,交换机之间则由众多通信线路再继续连接。因此计算机之间在发送数据时,需要通过交换机与目标主机建立通信电路。建立好连接后,用户就可以一直使用这条线路,直到该连接被断开。
    这样的话,有个严重的缺点:一旦两个计算机建立连接,那么这条线路就会被独自占用。如果并发数超过了通信线路数,就意味着多出来的一部分无法进行通信。

  • 分组交换(蓄积交换)
    一种较新的通信方式,TCP/IP就是采用了分组交换技术。由分组交换机(路由器)连接通信线路。

    让连接到通信电路的计算机将所要发送的数据分成多个数据包,并在每个数据包中加入序号、发送端和接收端的地址,然后进行发送。接收端接收到数据包后再进行排序处理即可。这样所有的计算机就可以一齐收发数据,提高了通信线路的利用率。
    image.png

    主要流程为:
    1、发送端将数据分组发送给路由器

    2、路由器接收到数据后,缓存到自己的缓冲区,然后再转发给目标计算机。

3.3 根据接收端数量分类

  • 单播
  • 广播
  • 多播
  • 任播

二、TCP/IP基础知识

ARPANET:全球互联网的鼻祖。
TCP/IP:由ARPANET的一个机构研发出来
SMTP:发送电子邮件时使用的协议

每个包的首部至少包含两个信息:发送端和接收端地址以及上一层的协议类型。
经过每个协议分层时,都必须有识别包发送端和接收端的信息。以太网会用MAC地址、IP会用IP地址,而传输层用端口号识别。

三、数据链路

OSI模型中的数据链路层,有时也指以太网、无限局域网等通信手段。
数据链路层的协议定义了通过通信媒介(如双绞线电缆、光纤、电波等介质)互联的设备之间传输的规范。此外,各个设备之间有时也会通过交换机、网桥、中继器等中转数据。
数据链路层的相关技术:MAC寻址(物理寻址)、介质共享、非公有网络、分组交换、环路检测、VLAN(虚拟局域网)等。

1、相关的技术

1.1、MAC地址

MAC地址用于识别数据链路中互联的节点。
MAC地址长48比特。一般的数字使用规则如下:
1、第1位:单播地址0,多播地址1;
2、第2位:全局地址0,本地地址1;
3、第3~24位:由IEEE管理并保存的各厂家之间的不重复的识别码;
4、第25~48位:由厂商管理并保证不重复的厂商内识别码。
MAC地址由12位16进制数字表示

1.2共享介质型网络(半双工工作方式)

由多个设备共享一个通信介质的一种网络。
共享介质型网络的两种介质访问控制方式:争用方式和令牌传递方式。

  • 争用方式
    是指争夺获取数据传输的权利,也叫CSMA。这种方式通常令网络中的各个站采用先到先得的方式占用信道发送数据,如果多个站同时发送帧,就会冲突,进而导致网络拥堵和性能下降。
    改良后的方式为CSMA/CD,要求每个站提前检查冲突,一旦有冲突,则尽早释放信道。工作原理如下:
    1、如果载波信道上没有数据驱动,则任何站都可以发送数据;
    2、检查是否会发生冲突,一旦发生冲突,放弃发送数据,并立即释放载波信道。
    3、放弃发送后,随机延迟一段时间,再次查询是否可以发送。
  • 令牌传递方式
    一种沿着令牌环发送一种叫做“令牌”的特殊报文,是控制传输的一种方式,只有获得令牌的站才能发送数据。这样做才不会发生冲突,并且保证了公平性。
类似的,有非共享介质型网络,它是全双工工作方式。
半双工:同一时间只能发或者只能收,同一时间只能做一件事;
全双工:发送和接收可以同时进行。

2、以太网

规范简单、易于NIC(网卡)及驱动程序实现。

四、IP协议(网际协议)

负责将数据包发送给最终目标计算机,实现终端节点之间的通信,也叫做点对点通信。位于网络层。
主机:配有IP地址的设备,但是不进行路由控制的设备
路由器:既配有IP地址又具有路由控制能力的设备
节点:路由器和主机的统称。

1、IP基础知识

IP大致分为三大作用模块:IP寻址、路由和IP分包和组包。

1.1、IP地址

IP地址用于在连接到网络中的所有主机中识别出进行通信的目标地址。它不会受连接的数据链路的不同而改变。

在网桥或者交换集线器等物理层或数据链路层数据包转发设备中,不需要设置IP地址,因为这些设备只负责将IP包转化为01比特流或者对数据进行转发。

1.2、路由控制

指将分组数据发送到最终目标地址的功能
image.png

跳:网络中的一个区间。IP包正是在网络中一个个跳间被转发。因此IP路由也叫做多跳路由。
image.png

1.2.1、路由控制表

所有主机都维护着一张路由控制表,该表记录IP数据下一步应该发给哪个路由器,IP包将根据这个路由表在各个数据链路上传输。
image.png

1.2.2、IP属于面向无连接型

在发包前,不需要建立与目标地址之间的连接,如果上层有发送的IP数据,该数据会立即被压缩成IP包发送出去。

采用无连接型的原因:为了简化和提速。面向连接的处理相对复杂,甚至管理每个连接本身就比较复杂;此外,如果每次通信前都要事先连接,就会降低处理速度。建立连接可以交给它的上一层--传输层。

1.3、IP地址基础知识

1.3.1、IP地址定义

IP地址由32位(二进制)正整数表示,每8位一组,分成4组。一台路由器也可以配置两个以上的网卡,所以也可以设置两个以上的IP地址。

1.3.2、IP地址由网络和主机两部分标识组成

IP弟子由“网络标识(网络地址)”和“主机标识(主机地址)”组成。
网络标识在数据链路的每个阶段配置不同的值,但是网络标识必须保证相互连接的每个段的地址不相重复,但是相同段内相连的主机必须有相同的网络地址(网络标识)。

IP地址的主机标识不允许在同一个网段内重复出现。
image.png

1.3.3、IP地址分类(下面说的都是二进制)

  • A类地址:首位以0开头的地址,从第1位到第8位是它的网络标识,即0.0.0.0~127.0.0.0是A类的网络地址。则后24位相当于主机标识。所以该网段内可以容纳2的24次方减2个主机地址。
  • B类地址:前两位是10的地址,从第1位到第16位是网络标识,后16位则为主机地址(主机标识)
  • C类地址:前三位是110的地址,从第1位到第24位是网络标识,后8位是主机地址(主机标识),则可容纳2的8次方减2个主机地址,即254个(⚠️注意不是255个)
  • D类地址:前四位是1110的地址,从第1位到第32位是网络标识,没有主机标识。因此也一般被用于多播
    image.png
注意⚠️:在分配IP地址时主机标识不能全为0或者全为1,因为全部为0标识对应的网络地址不可获知,全部为1的主机地址通常用于广播地址。(这也是上面为什么要减去2的原因)

1.3.4、广播地址

IP地址的主机标识部分全部设置为1,就成了广播地址。
有两种广播:本地广播和直接广播

  • 本地广播
    在本网络内的广播,本网络内是指网络标识部分相同,处于同一网段;
  • 直接广播

    在不同网络之间广播,即不在同一个网段。
    image.png

1.3.5、IP多播

多播用于将包发送给特定组内的所有主机,能够穿透路由器,发送给其他网段(网络标识)内的特定主机。
广播是发送给当前网络标识内的所有主机,由主机去判断是否接收,而且由于是在同一个网段内,所以它无法穿透路由。

  • IP多播和地址
    多播采用D类地址,即从首位开始的四位为1110。

1.3.6、子网掩码

为了减少IP地址分类带来的浪费而提出的。
子网掩码通过子网网络地址细分出比A类、B类、C类更小粒度的网络,将原来A类、B类、C类等分类中的主机地址部分用作子网地址。
引入了子网后,IP地址有两种识别码:IP地址本身和网络部的子网掩码。子网掩码也是32位的,对应子网的网络标识部分为1,对应于子网的主机标识部分为0。也因此,可以看出子网掩码的首位一定是连续的1。
把子网掩码和子网主机标识相对应的位置记为0,是为了与运算的方便,通过与运算,我们可以容易得到子网网络标识和主机标识。


image.png

1.3.7、CIDR和VLSM

放弃IP分类,采用任意长度分割IP地址的网络标识和主机标识,把这种方式叫做CIDR(无类型域间选路)
可以随机修改组织内各个部门的子网掩码长度的机制称为VLSM(可变长子网掩码)

1.4、路由控制

在发送数据过程中指明发往目标地址的路径的信息,保存这种信息的就是路由控制表。
路由控制表的形成有两种方式:静态路由(管理员手动设置)和动态路由(路由器之间相互之间根据路由协议交换信息)。

IP协议始终认为路由表是正确的。IP本身没有定义和制作路由表的机制,路由表由路由协议制作而成。

1.4.1、IP地址与路由控制

IP的网络地址部分用于进行路由控制。
路由控制表中记录着网络地址与下一步应该发送到的路由器的地址。在发送IP包时,首先要确定IP包首部中的目标地址,再从当前路由器中找到与该目标地址相同或者最吻合的网络地址,最后根据找到的网络地址发给相应的路由器。

  • 默认路由
    一般表姐为0.0.0.0/0或default,这里的地址和IP地址0.0.0.0不一样,可以发现其子网掩码的长度为0,则说明没有网络标识部分。
  • 主机路由
    格式为“IP地址/32”,表示整个长度32位都是网络标识(网络地址),那么只有在完全匹配的情况下它才会接收来自其他路由器的数据。也被称为主机路由。
  • 环回地址
    在同一个计算机上的程序之间进行网络通信时所使用的一个默认地址,127.0.0.1就是环回地址,也就是我们常说的localhost。使用这个IP时,数据包不会流向网络。

1.4.2、路由控制表的聚合

利用网络地址的比特分布可以有效的进行分层配置,对内无论有多少个子网掩码,对外呈现出的也是同一个网络地址。这样可以减少路由表的条目,降低管理它所花费的内存和CPU,也提高了查找路由表的速度。
image.png

1.5、IP分割处理与再构成处理

MTU:最大传输单元

1.5.1、数据链路不同,MTU则不同

每种数据链路的最大传输单元都不尽相同,因为他们的使用目的不同。

1.5.2、IP报文的分片和重组

因为每条数据链路的MTU不同,所以当内容太大时,一次性传输不完,这个时候就有必要对IP分片。是否需要分片由路由器决定。

经过分片的IP数据报在被重组的时候,只能由目标主机进行,而路由器只能做分片处理,不能做重组。(主要是由于图中经历的途径不同,路由器也可能不止一个)
image.png

1.5.3、路径MTU发现

分片机制的不足:
1、因为分片是在路由器中进行的,所以加重了路由器的处理负担
2、网络安全的需要。一般是不期望进行IP数据包的切片处理的
3、一旦某个分片丢失,就会造成整个IP数据报作废。
路径MTU,就是为了解决上述问题的。其工作原理如下:
1、在发送端主机发送IP数据报时将其首部的分片禁止标志为设置为1。根据这个标志位,图中路由器即使遇到需要分片才能处理的大包,此时也不会切片,而是选择放弃,并回传一个合适的MTU值给发送主机;

2、发送主机拿到合适的MTU值时,将它设为当前MTU值,对数据报做切片处理,然后再发送。
image.png

1.6、IPv6

1.7、IPv4首部

IP首部中包含着用于IP协议进行发包控制时所有的必要信息。
image.png

五、IP协议相关技术

IP的目的是让目标主机收到数据包,这一过程除此之外,还需要有能够解析主机名称和MAC地址的功能,以及其他必不可少的功能。

1、DNS

我们在访问一些网站的时候,使用的是如“www.baidu.com”之类的IP地址,而不是类似于“192.168.112.3”之类的罗马数字和点号组成的地址。使用罗马数字,明显不方便。而使用前者,网络中是怎么解析的呢?
DNS就是用来将那串字符串转为具体IP地址的。它用来有效管理主机名和IP地址之间的对应的关系,它维护了一个用来表示组织内部主机名和IP地址之间的对应关系的数据库。

1.1、域名的构成

域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。域名由英文字母用点号连接构成。

  • 域名服务器
    管理域名的主机和响应的软件。它可以管理所在分层的域的相关信息。其所管理的分层叫做ZONE。
  • 解析器
    进行DNS查询的主机和软件。用户所使用的工作站或个人电脑都属于解析器。


    image.png

1.2、DNS查询

如图,kusa.co.jp要访问网站www.ietf.org:

image.png

解析器为了调查IP地址,向域名服务器进行查询处理。接收这个查询请求的域名服务器会首先在自己的数据库进行查找;如果有该域名所对应的IP地址就返回,如果没有,再向上一层根域名服务器进行查询处理,一直到根域名服务器,如果有则返回域名服务器想要的数据。
解析器和域名服务器会将了解到的最新信息保存到缓存里。

2、ARP

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

ARP只适用于IPv4,IPv6使用ICMPv6替代。

2.1、工作机制

ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的。
image.png

如图,处于同一链路的两台主机,A要想知道B的MAC地址,那么过程如下:
1、A通过广播的方式发送一个ARP请求,该请求中包含了想要了解的B的IP地址。因为采用的是广播的方式,所以处于同一链路上的所有主机和路由器都会进行解析。
2、如果有主机或者路由器的IP地址和ARP请求中的相同,那么这个节点就将自己的MAC地址塞入ARP响应包,并返回给A。
3、A获取到了MAC地址做后续处理。并为了避免每次都去做ARP解析,A会将该MAC地址缓存一段时间。同样,B也会将该MAC地址储存起来。

MAC地址和IP地址是否只要其中一个就可以了呢?

2.2、RARP

将ARP反过来,从MAC地址定位IP地址的协议。如将打印机服务等小型嵌入式设备接入到网络时就经常会用到。
image.png

2.3、ICMP

确认IP包是否成功送达目标地址;通知再发送过程当中IP包被废弃的具体原因;改善网络设置等。通过这些就可以获得网络是否正常,设置是否有误等异常信息,从而作出网络诊断。

在IP通信中如果某个IP包因为某种原因未能达到目标地址,这个具体原因将由ICMP负责通知。这种通知会使用IP进行发送。
image.png

2.3.1、ICMPv6

如果没有ICMPv6则IPv6就无法进行正常的通信。在IPv6中,IP地址定位MAC地址的协议从ARP转为了ICMP的邻居探索消息,这种邻居探索消息融合了IPv4的ARP、ICMP重定向和ICMP路由器选择消息等功能于一体,甚至还提供了自动设置IP地址的功能。
邻居探索利用的是IPv6的多播地址实现的(ARP使用的是广播方式)。(多播和广播的区别)

2.4、DHCP

为了实现自动设置IP地址、统一管理IP地址分配,就产生了DHCP协议。使用DHCP协议,就可以实现即插即用的功能。比如电脑设备每移动到一个新的地方,都会产生一个新的IP地址,就是DHCP协议所起的作用。

2.4.1、工作机制

1、先架设一台DHCP服务器;
2、将DHCP所要分配的IP地址、相应的子网掩码、路由控制信息以及DNS服务器地址等设置到服务器上

DHCP分配IP地址的两种方法为:在特定的IP地址中自动选出一个进行分配;根据MAC地址分配固定的IP地址。

由DHCP的功能可以发现,它是为了获取IP地址而设定的。一般有两个阶段:
image.png

一般的家庭中,由宽带路由器充当DHCP角色。而类似于公司这种庞大的网络,则需要架设单独的DHCP服务器或者使用DHCP中继代理。

2.4.2、DHCP中继代理

该中继代理保存了DHCP服务器的IP地址。DHCP客户端会向DHCP中继代理发送DHCP请求包,DHCP中继在接收到这个广播包以后,以单播的形式发送给DHCP服务器,DHCP服务器收到该包后向DHCP中继代理做应答,再由中继代理把包含IP地址的包转发给相应的DHCP客户端。

3、IP隧道

IP隧道

如图,因为两个IPv6之间要通信的话,必须经过一个IPv4网络,这样是无法实现通信的。此时就需要采用IP隧道的功能。
IP隧道会将哪些从A发过来的IPv6的包统一和为一个数据,再为之追加一个IPv4首部以后转发给C。

这种在网络层首部继续追加首部的通信就被称为IP隧道。
image.png

你可能感兴趣的:(读《图解TCP/IP》(一))