网络知识基础(二)之各层协议报文简讲

OSI七层网络模型和TCP/IP四层模型:
TCP/IP协议簇全称:传输控制协议/网际协议簇;
在这里插入图片描述
协议在TCP/IP四层模型的位置
在这里插入图片描述
在计算机网络中,通信发生在不同系统的实体之间。实体就是任何一种能够发送或接收信息的东西。但是两个实体不能简单的将比特流发送给对方,并希望对方能够理解它(如两人交流,一人用中文,另一人用英文,两人不一定能互相听懂)。要进行通信,这两个实体必须达成一种协议。协议定义了要通信的是什么,怎样进行通信,以及何时进行通信。协议的三个要素:语法,语义和时序。
标准:标准创建委员会给制造商、供应商、政府机关以及其他的服务提供者提供了指导,以便在今天的市场中和在国际范围的通信中保证必要的联通性。
数据通信的标准分类两类:事实上的标准与法律上的标准。

  • 事实上的标准:这种标准并没有被哪个组织批准,但却被广泛的作为事实上的标准被广泛使用。
  • 法律上的标准:指那些已经被官方认可的组织通过并确定的标准。

应用层常用协议:

主机配置:DHCP
域名系统:DNS
远程登录:TELNET和SSH
文件传送:FTP和TFTP
万维网:HTTP和HTTPS
电子邮件:SMTP,POP,IMAP,MIME
网络管理:SNMP

主机配置DHCP:

如图为DHCP协议的分组格式:
在这里插入图片描述
各部分解释
操作码:这个8位字段定义了DHCP的分组类型:请求为(1),回答为(2)。
硬件类型:这个8位字段定义了物理网络的类型。每一种网络类型都指派一个整数值。
硬件长度:这个8位字段定义了以字节为单位的物理地址的长度。
跳数:这个8位字段定义分组可经历的最大跳数。
事务标识:这个4字节字段携带了一个整数。事务标识由客户设置,用来对回答和请求进行匹配。服务器要在回答中返回同样的值。
秒数:这个16位字段指出从客户端开始引导算起一共经历的秒数。
标志:这个16位字段只使用它的最左边一位,其余位都为0.最左边的一位指明服务器强制使用广播回答(而不是单播)。如果用单播发送回答给客户,则IP分组的目的IP地址就是指派给客户的地址。因为客户不知道自己的IP地址,它可能会丢弃这个分组。但若IP数据报是广播发送的,则每一个主机都要接收并处理这个广播报文。如图为标志格式:
在这里插入图片描述
客户IP地址:这个4字节字段包含客户IP地址。若客户没有这个信息,则这个字段值为0。
你的IP地址:这个4字节字段包含客户IP地址。这是服务器(在回答报文中)在客户的请求下填入的。
服务器IP地址:这个4字节字段包含服务器IP地址。它由服务器在回答报文中填入。
网关IP地址:这个4字节字段包含路由器的IP地址。这是服务器在回答报文中填入的。
客户硬件地址:这是客户的物理地址。虽然服务器可以从客户端发送的帧中读取这个地址,但若由客户在请求报文中显示地提供这个地址,则更加有效。
服务器名:这个64字节段由服务器在回答分组中可选地填入。它包含了以空字符为结尾的字符串,这个字符串由服务器的域名构成。如果服务器不想在这个字段中填入数据,则必须全部为0。
引导文件名:这个128字节的字段由服务器在回答分组中可选地填入。它包含了以空字符为结尾的字符串,这个字符串由引导文件的全路径名构成。客户可以使用这个路径来读取其他引导信息。如果服务器不想在这个字段中填入数据,则必须全部为0。
选项:这个64字节字段有双重作用。它可以携带附加信息(如网络掩码或默认路由器地址),也可以携带某些厂商特定的信息。这个字段只用在回答报文中。服务器使用一个称为魔块(magic cookie)的数字,这个数字的IP地址格式的值为99.130.83.99。当客户读完报文之后,就搜索这个魔块。若出现了,则接下来的60字节就是选项。选项由三个字段组成:一个字节的标记字段、一个字节的长度字段以及可变长度的值字段。长度字段定义的是这个值字段的长度而不是整个选项的长度,如图:
在这里插入图片描述
选项列表如图所示:
在这里插入图片描述
其中,包含IP地址的字段长度是4字节的倍数。填充选项只有1个字节长,做对齐之用。列表结束选项也是只有1个字节长,它指出选项字段的结束。厂商可在回答报文中使用选项标记128~254来提供额外的信息。

域名系统:DNS

域名系统(DNS)是一个用来辅助其他 应用程序的客户/服务器应用程序。其作用就是把应用层的主机名映射为网络层的IP地址。
DNS有两种类型的报文:查询和响应。两种类型的报文格式相同。查询报文包括一个首部和若干个问题记录。响应报文包括一个首部和若干个问题记录、回答记录、授权记录以及附加记录。如图:
在这里插入图片描述
查询报文和响应报文具有相同的首部格式,对于查询报文则把某些字段置位0.首部是12字节,其格式如图:
在这里插入图片描述
首部中各字段的含义:
标识:客户使用这个16位字段使响应与查询匹配。客户在每次发送查询时使用不同的标识号。服务器在相应的响应中重复这个标识号。
标志:这个16位字段包括如图所示的一些子字段。
在这里插入图片描述
关于各标志子字段的说明:
a.QR(查询/响应):这是定义报文类型的1位子字段。若它为0,就是查询报文。若为1,则是响应报文。
b.OpCode:这个4位子字段定义了查询或响应的类型(类型为0则是标准的,为1则是反向的,为2则是服务器状态请求)。
c.AA(授权回答):这个1位子字段,当它置位时(值为1),表示名字服务器是权限服务器。它只用在响应报文中。
d.TC(截断的):这个1位子字段,当它置位时(值为1),表示响应已超过哦512字节并已截断为512字节。当DNS使用UDP服务时会使用这个标志(可见书中19.8节的封装部分)。
e.RD(要求递归):这个1位子字段,当它置位时(值为1),表示客户希望得到递归回答。它在查询报文中置位,在响应报文中重复置位。
f.RA(递归可用):这个1位子字段,当它在响应中置位时,表示可得到递归响应。它只能在响应报文中置位。
g.保留:这个3位子字段目前置位000。
h.rDode:这个3位子字段表示在响应中的差错状态。当然,只有授权服务器才能做出这个判断,下图给出了这个字段的一些可能值。
在这里插入图片描述
问题记录数:这个16位字段包含了报文的问题部分中的查询记录数。
回答记录数:这个16位字段包含了响应报文的回答部分中的回答记录数,在查询报文中它的值是0。
授权记录数:这个16位字段包含了响应报文的授权部分中的授权记录数。在查询报文中它的值是0。
附加记录数:这个16位字段包含了响应报文的附加部分中的附加附加记录数。在查询报文中它的值是0。

远程登录:TELNET和SSH

由来:因特网及其TCP/IP协议簇的主要任务就是向用户提供服务。虽然存在一些特殊的客户/服务器程序,但是不可能对每一个需求都编写具体的客户-服务器程序。一种更好的解决方法是使用通用的客户-服务器程序,让用户能够接入到远程计算机上的任何应用程序。换言之就是允许用户登录到远程计算机上。登录后,用户可以使用远程计算机所提供的服务,并把结果返回到本地计算机上。
两个通用的客户-服务器应用程序:TELNET和SSH
TELNE是终端网络(TErminaL NETwork)的缩写。根据ISO的建议,它被作为虚拟终端服务的标准TCP/IP协议。TELNET能够建立一条道远程系统的连接,使得本地终端就好像连接在远程系统上一样。
TELNET存在安全问题。虽然TELNET要求使用登录名和口令(当交换文本时),但一般来说这是不够的。连接在广播局域网上的微机可以使用嗅探器(snooper)软件很容易地截获登录名和相应的口令(哪怕它是加密的)。
而另外一种比较流行的登录应用程序是安全外壳(Secure Shell,SSH),与TELNET一样,SSH利用TCP作为底层传输协议,不过SSH更加安全,并且提供了比TELNET更多的服务。
关于SSH介绍:
SSH有两个版本:SSH-1和SSH-2,这两者完全不兼容。第一个版本SSH-1因存在安全漏洞,目前已经不用了。
SSH协议使用的分组格式:
在这里插入图片描述
长度:定义了分组的长度,包括类型字段、数据字段和CRC字段,但是不包括填充和长度字段本身;
填充:为了增加安全性,使攻击更加困难。
类型:定义了SSH协议所使用的这个分组的类型。
数据:这个字段长度可变。数据的长度可以用长度字段的值减去5个字节来推算得到。
CRC:这个循环冗余检验字段用于差错检测。

文件传送:FTP和TFTP

由来:从一台计算机向另一台计算机传送文件是在连网或互联网环境中最常见的任务。事实上,今天在因特网上最大量的数据交换就来源于文件传送。其中文件传送协议(FTP)和简单文件传送协议(TFT P)。
文件传送协议(FTP):是TCP/IP提供的标准机制,用来从一个主机把文件复制到另一个主机。

  • FTP:使用TCP服务,21端口做控制连接,20端口用于数据连接。

简单文件传送协议(TFTP):有时我们只需要复制一个文件而不需要FTP协议的全部功能。例如常说的误判工作站或路由器在被引导时,我们需要下载引导和配置文件,而不需要FTP全部的复杂功能,只需要一个能够迅速复制这些文件的协议,,而TFTP就是为此存在的。

  • TFTP:使用UDP服务,69端口

万维网和HTTP:

万维网(World Wide Web,WWW)是遍及全世界且相互链接起来的信息储藏所。而HTTP是主要用来在万维网上存取数据的协议。
今天的WWW是分布式的客户-服务器服务,其中的客户用浏览器就能够得到服务器提供的服务。但是这种服务的提供者分布在许多称为网站(sit)的地方。每一个网站保存有一个或多个文档,称为web页面。每一个web页面可以包含到同一个或其他网站的其他web页面的链接。换言之,每一个Web页面可以是简单页面或是复合页面。简单Web页面不包含到其他Web页面的链接。复合Web页面包含一个或多个到其他Web页面的链接。每一个Web页面即是一个包含名称及地址的文件。
Web客户(浏览器),Web服务器,统一资源定位符(URL):
web客户:许多厂商提供商用浏览器,可以解释和显示Web页面,如常用的火狐,360,等浏览器。
Web服务器:Weby页面存储在服务器上,每当有客户请求到达时,对应的文档就发送给客户。
统一资源定位符:客户要访问Web页面就需要文件名和地址。而为了方便地访问在世界范围内的文档,HTTP使用定位符。URL定义了4样东西:协议、主机、端口和路径。如图:
在这里插入图片描述
而通过DNS域名解析服务,可以将主机IP地址与域名一一对应。便于人们记忆。
即主机是信息所存放的地点和域名。Web页面通常存放在计算机上,而这个计算机通常使用以字符“WWW”开始的域名别名。但这不是强制性的,因为主机可以使用任何域名。URL可以有选择地包含服务器的端口号。如果包含了端口号,那么端口号就插入在主机和路径之间,和主机用冒号分隔开。路径是信息存放的路径名。注意,路径本身可以包含斜线,在UNIX操作系统中斜线把目录和文件分隔开,也就是说路径定义了文档在目录系统中存放的完整文件名。
超文本传送协议(HTTP):是主要用在万维网上存取数据的协议。HTTP的功能像是FTP和SMTP的组合。它与FTP相似是因为它能够传送文件并使用TCP连接。但是,它比FTP简单的多,因为它只有一条TCP连接。没有独立的控制连接;在客户和服务器之间只有数据传送。而与SMTP相似是因为在客户和服务器之间传送的数据看起来很像SMTP报文。与SMTP不同的是HTTP报文并非为了给人看的;这些报文用户HTTP服务器和HTTP客户(浏览器)读取和解释。SMTP报文采用存储转发方式,而HTTP报文时立即交付。从客户到服务器的命令嵌入在请求报文中。所请求的文件内容或其它信息则嵌入在响应报文中。

  • HTTP在熟知端口80上采用TCP服务。

电子邮件:SMTP,POP,IMAP,MIME

简单邮件传送协议(SMTP):报文传送代理(MTA)服务器的正式协议。
POP和IMAP:报文读取代理使到的协议,邮局协议版本3(POP3)和互联网邮件读取协议版本4(IMAP4)。
多用途因特网邮件扩充(MIME):辅助协议。

网络管理:SNMP

简单网络管理协议(Simple Network Manegement Protocol,SNMP):是用TCP/IP协议簇对互联网上的设备进行管理的框架。它提供了一组基本 的操作,用来监控和维护互联网。

  • 使用UDP协议,161端口由服务器(代理使用),162由客户(管理器)使用。

传输层协议:

用户数据报协议(UDP):
传输控制协议(TCP)
流控制传输协议(SCTP)
UDP:是面向报文的协议。进程把报文交付给UDP,再有UDP封装成用户数据报并发送到网络上。UDP保留了报文的边界,且每一个报文和其他的报文之间没有关系。当我们在处理如IP电话或实时传输这样的应用时,这种特性正是我们所希望有的。但是UDP是不可靠的,发送方无法掌握那些发送出去的报文的命运。这些报文可能丢失、重复或不按顺序收到。UDP还缺少其他的一些功能,如拥塞控制和流量控制,而这些功能是一个友善的运输层协议应当具有的。
TCP:面向字节的协议。TCP接收来自进程的一个或多个报文,并把它们以字节流的形式存储起来,再以报文段为单位发生出去。这里不再保留报文的边界。但是TCP是可靠的协议。重复的报文段能够被检测出来,丢失的报文段会重传,所有的字节要按序交付给目的进程。TCP还有拥塞控制和流量控制。
SCTP:面向报文的协议,该协议结合了TCP和UDP的优点。它保留了报文的边界,与此同时也检测丢失的数据、重复的数据以及失序的数据。SCTP还拥有拥塞控制和流量控制机制。同时还有一些TCP与UDP都没有提供的新特点。

用户数据报协议(UDP):

UDP分组叫做用户数据报(user datagrams),其首部是固定的8个字节。其格式如图:
在这里插入图片描述
源端口号:源主机上运行的进程所使用的端口号。它由16位长,这就表示可以端口号范围为0~65535。若源主机是客户(当客户进程发送请求时),则在大多数情况下这个端口号是该进程请求的,并由运行在源主机上的UDP软件选择出来的一个临时端口号。若源主机是服务器(当服务器进程发送响应时),则在大多数情况下这个端口号是一个熟知端口号。
目的端口号:运行在目的主机上的进程所使用的端口号。16位长。若目的主机是服务器(当客户进程发送请求时),则在大多数情况下这个端口号是熟知端口号。若目的主机是客户端(当服务器进程发送响应时),则在大多数情况下这个端口号是一个临时端口号。此时,服务器会把它收到的请求分组中的临时端口号复制过来。
总长度:定义了用户数据报的总长度,即首部加上数据。16位可定义的总长度是从0~65535字节。但是,实际的总长度必须必这个数值小,因为UDP用户数据报要放在总长度为65535字节的IP数据报中。UDP用户数据报中的长度字段实际上不是必要的。用户数据报被封装在一个IP数据报中。在IP数据报中有一个字段定义了总长度,另外还有一个字段定义了首部长度。因此,如果我们把第一字段的值减去第二字段的值,就可以推导出封装在IP数据报中的UDP数据报的长度。
但是,UDP协议的设计者认为,让终点的UDP直接从UDP用户数据报中提供的信息来计算数据长度,要比请求IP软件来提供这一效率更高。我们应当记得,当IP软件把UDP用户数据报交付给UDP层时,已经被剥去了IP首部。

  • UDP长度=IP总长度-IP首部长度

检验和:用来检测整个用户数据报(首部+数据部分)出现的差错。

传输控制协议(TCP):

TCP协议特性:
工作在传输层;是面向连接协议;是全双工协议;半关闭;有着错误检查功能;将数据打包成段,排序;确认机制;数据恢复,重传;流量控制,滑动窗口;拥塞控制,慢启动和拥塞避免算法;TCP分组称为报文段,其TCP报文段的首部格式为下图:
在这里插入图片描述
TCP包头:16位,则是16个二进制数字(即16个0或1),转换到十进制数字范围为:0~65535。
源端口号:表示了上层的协议类型,不同的协议有着独自的端口号。与上述UDP首部中的源端口作用一样。
目的端口号:目标应用程序上的端口号,与上述UDP首部中的目的端口作用一样。
序号(seq):对应源主机,表示本报文段所发送数据的第一个字节的编号。TCP是流运输协议,为了保证连接性。在TCP连接中所传送的字节流的每一个字节都会按顺序编号,由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0开始。范围:[0-(2的32次方-1)]。
确认号(ack ):对应目标主机,表示接收方期(源主机)望收到发送发下一个报文段的第一个字节数据的编号。也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号。范围:【0~(2^32-1)】,如报文段的接收方成功地接收了对方发来的编号为x的字节,那么它就返回x+1作为确认号。如图:
在这里插入图片描述
数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节。
保留:未使用;
标志位/控制位:定义了6种不同的控制位或标志,URG,ACK,PSH,RST,SYN,FIN。在同一时间可设置一位或多位标志。这些位用于TCP的流量控制、连接建立和终止、连接异常终止以及数据传送方式等方面。其中,ACK,SYN,FIN三个参数是面向连接的,即建立连接和断开连接。如图所示:
在这里插入图片描述

  • URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效。

  • ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段。

  • PSP:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中。

    	解释:当一个数据包到达网卡后,网卡查看目标MAC地址是自己的,则接收。接收后传向内核,内核收到数据后先要放到缓冲区(即buffer),当将数据上交到应用程序时,拆除后查看传输层的首部时,若PSP为1,则立即将数据传输给应用程序,不再在buffer停留;若为0,则排排队,不急,等buffer缓冲满了以后再传向应用程序。
    
  • RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机奔溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段。

  • SYN:在建立连接时使用,用来同步序号。

    • 当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;
    • 当SYN=1,ACK=1时,表示对方同意建立连接。
    • SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置位1,带SYN标志的TCP报文段称为同步报文段。
  • FIN:表示通知对方本端要关闭连接了,标记数据是否发生完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段。

窗口:实际传输数据的大小,即发送TCP的窗口大小,以字节为单位。字段为16位,窗口最大长度是65535字节,这个值通常被称为接收窗口(rwnd),并由接收方来决定,在这种情况下,发送方必须服从接收方的指示。
校验和:检查数据包的完整性。TCP检验和的计算过程和UDP检验和的计算过程是一样的。但是UDP是否使用检验和是可选的,而TCP使用检验和则是强制性的。
紧急指针:只有当紧急标志置位(URG)时,这个16位的字段才有效。
选项

  • 最大报文段长度:指明自己期望对方发送TCP报文段时那个数据字段的长度。默认是536字节。数据字段的长度+TCP首部的长度=整个TCP报文段的长度
  • 窗口扩大:为了扩大窗口,由于TCP首部的窗口大小字段长度是16位,所以其表示的最大数是65535。但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口来满足性能和吞吐率,所以产生了这个窗口扩大选项。
  • 时间戳:可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间戳字段,接收方收到后发送确认报文时,把这个时间戳字段的值复制到确认报文中,当发送方收到确认报文后即可计算出RTT。也可以用来防止回绕序号PAWS,也可以说可以用来区分相同序号的不同报文。因为序列号用32位表示,每2^32个序列就会产生回绕,那么使用时间戳字段就很容易区分相同系列号的不同报文。(例:接收到2个序列号为10000的TCP报文,这时候就会用到选项的时间戳功能)

流控制传输协议(SCTP)

SCTP使用了TCP空间所有的熟知端口,下图是SCTP列出的一些额外的端口号:
在这里插入图片描述
其报文段如图所示:
在这里插入图片描述

网络层协议:

网际协议版本4(IPv4)
地址解析协议(ARP)
网际控制报文协议(ICMP)
网际组管理协议(IGMP)
单播路由选择协议(RIP、OSPF和BGP)
多播和多播路由选择协议

网际协议版本4(IPv4)

网际协议(Internet Protocol,IP)是TCP/IP协议簇在网络层使用的传输机制,也就是俗称的IP协议。
网络(互联网)层的分组称为数据报(datagram),下图是IP数据报的格式。
在这里插入图片描述
版本(VER):定义了IP协议的版本,目前版本是4。将来可能版本6可能会取代版本4.这个字段向处理机上运行的IP软件指出该IP数据报使用的是版本4的格式。所有字段都要按照版本4协议所规定的来解释。如果机器使用其他版本的IP,那么这个数据报就会被丢弃,而不是错误地进行解释。
首部长度(HLEN):定义了数据报首部的总长度,以4字节的字为单位计算。因为首部长度是可变的(在20~60字节之间)。首部长度是20字节,那么这个字段的值就是5(54=20)。当选项字段最大值时,这个字段的值是15(154=60)。
服务类型:指明了应当如何处理数据报。这个字段中有一部分用于定义数据报的优先级,剩下的一部分定义了服务类型(低延时,高吞吐量等等)。
总长度:定义了以字节为单位的数据报总长度(首部+数据),因为总长度是16位,因此IP数据报长度限制在65535(即2^16-1)字节,其中首部占20~60字节,剩下的就是从上层传送来的数据。
标识:用于分片。
标志:用于分片。
分片偏移:用于分片。
生存时间:数据报在互联网中的旅程是有生存时间限制的。这个字段最初设计是存放一个时间戳,并由经过的每一个路由器进行递减。当时间戳的值变为0时就丢弃这个数据报。
协议:定义了使用此IP层服务的上层协议。如(TCP,UDP,ICMP和IGMP等)的数据都能够被封装到IP数据报中。这个字段指明了IP数据报必须交付给哪个最终目的协议。也就是说,因为IP协议要对来自不同高层协议的数据进行复用和分用,所以当数据报到达最后的终点时,要用到这个字段的值来完成分用过程。如下图:
在这里插入图片描述
检验和:检查数据包的完整性。
源地址:定义了源点的IP地址。
目的地址:定义了终点的IP地址。
选项:它们对于每个数据报来说并不是必需的。这些选项可用于网络的测试和排错。虽然选项并非IP首部中的必要项目,但对选项的处理确实IP软件的必要部分,这就意味着只要选项出现在首部中,任何实现都必须能够处理它们。

地址解析协议(ARP)

地址映射:

  • 互联网时由许多物理网络和一些像路由器这样的连网设备组成的。从源主机出发的分组在最终到达目的主机之前,可能要经过不同的物理网络。
  • 在网络这一级,主机和路由器是通过它们的逻辑地址来识别的,在TCP/IP协议簇中,逻辑地址也就是俗称的IP地址,长度是32位。逻辑地址就是互联网地址,它的管辖范围是全局的。逻辑地址在全局上是唯一的。之所以称为逻辑地址是因为它通常在软件中实现。每一个与互联网打交道的协议都需要用到逻辑地址。在TCP/IP协议簇中。
  • 但是,分组必须通过物理网络才能到达主机和路由器。在物理这一级,主机和路由器是用它们的物理地址来识别的。物理地址是一个本地地址。它的管辖范围是本地网络的。物理地址在本地范围内必须唯一,但在全局上没有此要求。之所以称为物理地址是因为物理地址通常(并非总是)在硬件上实现。物理地址的一个例子是以太网协议中48位的MAC地址,它被写入安装在主机或路由器中的网络接口卡(NIC)中。
  • 物理和逻辑地址是两种不同的标识符,而这两个地址我们都需要,这就意味着把一个分组交付到主机或路由器需要用到物理和逻辑地址。因此就需要实现物理地址和逻辑地址的相互映射,而映射方法有静态映射和动态映射。
    动态映射和静态映射:
  • 静态映射:创建一张表,把逻辑地址和物理地址关联起来。这个表存储在网络中的每一台机器上。但静态映射表不具有时效性,必须定期更新(全局更新),而更新会影响网络性能。
  • 动态映射:每次只要机器知道另外一台机器的逻辑地址,就可以使用协议找出相应的物理地址,最后把该对应关系存储到静态映射表中。而实现动态映射的协议有两个:地址解析协议(ARP)和逆地址解析协议(RARP)。ARP把逻辑地址映射为物理地址,RARP协议把物理地址映射为逻辑地址(但该协议已被另一个协议所取代)。
    ARP协议:
    在任何时候,只要一台主机或路由器有IP数据报要发送给另一台主机或路由器,它就要知道接收方的逻辑(IP)地址。但是IP数据报必须封装成帧才能通过物理网络。这就意味着发送方还需要有接收方的物理地址,因而需要从逻辑地址到物理地址的映射。而如下图所示:ARP接受来自IP协议的逻辑地址,将其映射为相应的物理地址,然后再把这个物理地址递交给数据链路层。
    在这里插入图片描述
    ARP原理:
    任何时候,当主机或路由器需要找出这个网络上的另一主机或路由器的物理地址时,它就可以发送一个ARP查询分组。这个分组包括了发送方的物理地址和IP地址以及接收方的IP地址。因为发送方不知道接收方的物理地址,因此这个查询分组会在网络上进行广播。
    网络上的每一台主机或路由器都会接收并处理这个ARP查询分组,但只有期待的接收方才能认出是自己的IP地址,并返回一个ARP响应分组。这个响应分组包含有接收方的IP地址和物理地址。这个分组利用收到的查询分组中的物理地址以单播的方式直接发送给查询者。
    ARP分组格式:
    在这里插入图片描述
    解释:
    硬件类型:16位的字段。定义运行ARP的网络类型每一个局域网基于其类型被指派给一个整数。例如,以太网是类型1。ARP可用在任何物理网络上。
    协议类型:定义上层使用的协议。例如IPv4协议。ARP协议可用于任何高层协议。
    硬件长度:定义物理地址的长度,以字节为单位。如对于以太网这个值是6。
    协议长度:定义逻辑地址的长度,以字节为单位。如对于IPv4协议这个值是4。
    操作:定义分组的类型,ARP请求(1),ARP响应(2)。
    发送方硬件地址:定义发送方的物理地址,如对于以太网这个值是6。
    发送方协议地址:定义发送方的逻辑地址,如IP地址,对于IP协议,这个字段长度是6字节。
    目标硬件地址:定义目标的物理地址。对于以太网这个字段长度是6字节,对于ARP请求报文,这个字段使全0,因为发送方并不知道目标的物理地址。
    目标协议地址:定义目标的逻辑地址(例如:IP地址)。对于IP协议,这个字段长度是6字节。

网际控制报文协议(ICMP)

IPV4提供了不可靠的和无连接的数据报交付。当初这样设计是为了有效地利用网络资源。IP协议是尽最大努力的服务,它把数据报从最初的源点交付到最后的终点。但是,有两个缺点:缺少差错控制和缺少辅助机制。

  • ICMP协议没有差错报告或差错纠正机制。如果出现了一些差错将会发生什么问题呢?如果路由器因找不到可到达最后终点的路由器,或者因生存时间字段的值为零而必须丢弃数据报时,该怎么办呢?如果最终目的主机在预先设定的时间内没有收到一个数据报的所有的分片,因而必须把已接收到的分片全部丢弃时,又该怎么办呢?这些都是因为出现了差错而IP协议却没有内建的机制可以通知发出该数据报的主机的例子。
  • IP协议还缺少主机和管理查询所需要的机制。主机有时需要判断某个路由器或者是对方主机是否活跃。有时网络管理员也需要来自其他主机或路由器的信息。
    网际控制报文协议ICMP是涉及来弥补上述两个缺憾的。它是IP协议的伴侣。如图:
    在这里插入图片描述
    其中网际组管理协议(IGMP)是负责收集和解释一个网络中的组成员信息。
    ICMP本身是一个网络层协议。但是,它的报文并不是如预期的那样直接传递给数据链路层。实际上,ICMP报文首先要封装成IP数据报,然后才被传递到下一层。
    如图:
    在这里插入图片描述
    ICMP报文:
    ICMP报文是由一个8字节的首部和可变长度的数据部分组成。
    ICMP报文可划分为2大类:差错报告报文和查询报文。
  • 差错报告报文:报告了路由器或主机(终点)在处理IP数据报时可能遇到的问题。
  • 查询报文:总是成双成对地出现,它帮助主机或网络管理员从某个路由器或对方主机那里获取特定的信息。
  • ICMP差错报告报文
    在这里插入图片描述
    而ICMP报文格式如下如图所示:
    在这里插入图片描述
    类型:是ICMP的类型,定义了报文类型,对于每一种报文类型,首部的格式一般都是不同的。
    代码:指明了发送这个特定报文类型的原因。
    校验和字段:
    首部的其余部分:首部的其余部分对于每一种报文类型都是特有的。
    数据部分
  • 在差错报文中,数据部分携带的是用于找出引起差错的原始分组信息。
  • 在查询报文中,数据部分携带的是基于查询类型的额外信息。
    ICMP报文类型如下图所示
    在这里插入图片描述

底层技术:

TCP/IP协议簇通常都被表示为一个五层的协议栈,但实际上它只定义了上三层,因为TCP/IP只关心网络层、运输层和应用层。这就表示了TCP/IP假定这些广域网、局域网已经存在,并且连接这些网络的连接设备也已具备。
局域网(LAN)
因特网是由交换广域网(主干网)、局域网、点到点广域网,以及连接设备或交换设备共同组成的集合。

有线局域网:

局域网(LAN)就是设计在有限地理范围内使用的计算机网络。局域网可以是某组织内部仅仅为了达到共享资源而将计算机连接起来的一个孤立的网络,不过今天的局域网绝大多数都会链接到一个广域网或者因特网上。
在局域网的市场上出现过许多技术,如以太网,令牌环,令牌总线,FDDI和ATM局域网等等,其中以太网是占有绝对优势的技术。
为了建立一些标准使得来自不同生产厂商制造的设备之间能够互相通信,IEEE计算机协会启动了一个项目,为802项目。其中802项目并不是为了取代OSI模型或因特网模型中的任何一部分,相反,它是用来指明主要局域网协议中物理层和数据链路层的功能的一种途径。
IEEE将数据链路层进一步划分为两个子层:逻辑链路控制(LLC)和媒体接入控制(MAC),同时还为不同的局域网协议建立了多个物理层标准。如下图:
在这里插入图片描述
以太LAN网中发送的分组称为帧,帧格式如下:
在这里插入图片描述
以太网不提供任何机制来确认收到的帧,因此以太网是一种被称为不可靠的媒体。
前同步码:802.3帧的第一个字段包含7个字节(56比特)交替出现的0和1,作用就是提醒接收系统有帧到来,并且使它与输入定时同步。注意–>前同步码实际上是物理层添加上去的,它并不是(正式的)帧的一部分。
帧定界符(SFD):第二个字段(1字节:10101011)作为帧开始的信号。SFD提醒接收站这是最后一次进行同步的机会。最后两个比特是11,就是提醒接收方接下来的字段就是目的地址。SFD也是物理层添加上去的。
目的地址(DA):包含的是目的站或者将要接收该分组的站的物理地址。涉及到编址问题。
源地址(SA):包含的是这个分组的发送设备的物理地址。
长度/类型:被定义为类型字段或者长度字段。类型字段用来说明该MAC帧的上层协议;长度字段用来指明在数据字段中所包含的字节数目。这两个使用方式很常见。
数据:数据字段携带的是被上层协议封装的数据,最小是46字节,最大时1500字节。
CRC:包含的是差错检测信息。
编址:
以太网中的每一个站(如PC、工作站或打印机)都有自己的网络接口卡(NIC),NIC通常安装在站的内部,并为该站提供一个6字节的物理地址,以太网的地址为6字节(48比特长:即48位二进制),通常写为16进制,用冒号将字节和字节分隔开。该地址也就是俗称的数据链路地址、物理地址或MAC地址,如下图:
在这里插入图片描述

无线局域网:

无线通信是发展速度最快的技术之一。不使用网线而将设备连接起来这样的需求越来越普遍。在大学校园、办公大楼里及其他许多公共场所都可以找到无线局域网(Wireless LAN)。有两种常用的局域网无线技术:IEEE 802.11无线局域网技术和蓝牙技术。其中IEEE 802.11也被称为无线以太网,蓝牙则是一种小型无线局域网技术。

点到点广域网:

在因特网中我们遇到的第二张类型的网络时点到点广域网。点到点广域网从公共网(如电话网)中获取一条线路来连接两个远程设备。
物理线路:如传统的调制解调器技术、DSL技术、电缆调制解调器、T线(电话线)和SONET(同步光纤网)。
用来控制和管理数据的传送协议:点到点协议(PPP)
PPP只有物理层和数据链路层。

  • PPP没有为物理层定义特定的协议,而是让施行者自行选择可用的协议,PPP支持ANSI认可的所有协议。
  • 在数据链路层,PPP定义了帧的格式,以及用来控制链路和传送用户数据的协议。如图:

在这里插入图片描述

交换广域网:

因特网网的主干网可以是交换广域网。交换广域网是覆盖大面积(一个州或国家)的广域网,并能向用户提供多个接入点。在网络内部使用网状的点到点网络来连接各交换机。这些交换机都有多端口连接器,可以连接多个输入和输出。
交换广域网技术与局域网技术相比有许多不同之处。首先它不使用星型拓扑结构,而是使用交换机产生的多条路径。其次局域网技术被认为是一种无连接技术,也就是说发送方向接收方发送的各个分组之间没有直接关系。但交换广域网则不然,它使用面向连接的技术。在发送方发送分组之前,发送方和接收方之间必须先建立一条连接。当连接建立后就被指派了一个标识符(有时称为标记),在传输期间都要使用这个标识符。当传输结束后,连接白必须正式的终止。这种连接标识符代替了局域网技术中的源地址和目的地址。
局域网和广域网通常都不是孤立工作的,他们或者彼此连接,或者连接到因特网。其中用到的连接设备和工作的模型层次如下图:
在这里插入图片描述

回顾关于数据的封装和解封装过程:

如图所示:
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值