❶ 1结合计算机网络各层次的工作原理简述一数据从计算机A传到B的过程。2试比较拥塞和流量控制的区别和联系
OSI模型的7个层次分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层!为了和方便讲解数据传输的过程,我就从最上层应用层开始(第一层是物理层,千万别搞反了,这是初学者很容易犯的错误)。
应用层:为用户访问网络提供一个应用程序接口(API)。数据就是从这里开始产生的。
表示层:既规定数据的表示方式(如ASCII码、JPEG编码、一些加密算法等)。当数据产生后,会从应用层传给表示层,然后表示层规定数据的表示方式,在传递给下一层,也就是会话层。
会话层:他的主要作用就是建立、管理、区分会话!主要体现在区分会话,确保数据传输的方向,而不会让原本发给B的数据,却发到C那里的情况。
传输层:他的作用就是规定传输的方式,如可靠的、面向连接的TCP。不可靠、无连接的UDP。数据到了这里开始会对数据进行封装,在头部加上该层协议的控制信息!这里我们通过具体分析TCP和UDP数据格式来说明。
TCP报文格式:首先是TCP报文格式:第一段包括源端口号和目的端口号。源端口号主要是用来说明数据是用哪个端口发送过来的,一般是随机生成的1024以上的端口号!而目的端口主要是用来指明对方需要通过什么协议来处理该数据(协议对应都有端口号,如FTP-21、Telnet-23、DNS-53等)。第二、三段是序列号和确认序列号,他们是一起起作用的!这里就涉及到了一个计算机之间建立连接时的“三次握手过程”。首先当计算机A要与计算机B通信时,首先会与对方建立一个会话。而建立会话的过程被称为“三次握手”的过程。接下来详细说明“三次握手”的过程。计算机A会发送一个请求建立会话的数据,数据格式为发送序号(随机产生的,假如这里是序号=200),数据类型为SYN(即请求类型)。当计算机B收到这个数据后,他会读取数据里面的信息,来确认这是一个请求的数据。然后他会回复一个确认序列号为201的ACK(即确认类型),同时在这个数据里还会发送一个发送序号SYN=500(随机产生的),数据类型为SYN(即请求类型)的数据,来请求与计算机建立连接!当计算机A收到计算机B回复过来的信息后,就会回复一个ACK=501的数据,然后双方就建立起连接,开始互相通信!这就是一个完整的“三次握手”的过程。
传输层:之所以说TCP是面向连接的、可靠的协议,就是因为每次与对方通信之前都必须先建立起连接!
接下来分析第4段,该段包括头部长度、保留位、代码位、窗口位。头部长度是指明该数据头部的长度,这样上层就可以根据这个判断出有效的数据(即DATA)是从哪开始的。(数据总长度-头部长度=DATA的起始位置)。而保留位、代码位我们不需要了解,这里就跳过了!而窗口位是个重点!他的主要作用是进行提高数据传输效率,并且能够控制数据流量。窗口位利用的技术是滑动窗口技术,计算机一次性发送多个数据(规定数量)。理想情况是当最后一个数据刚好发送完毕,就收到了对方的确认第一个数据的信息,这样就会继续发送数据,大大提高了效率。
网络层:主要功能就是逻辑寻址(寻IP地址)和路由了!当传输层对数据进行封装以后,传给网络层,这时网络层也会做相同的事情,对数据进行封装,只不过加入的控制信息不同罢了!
我们还是根据IP数据包格式来分析。如图:可以看到数据第1段包含了版本、报头长度、服务类型、总长度。这里的版本是指IP协议的版本,即IPv4和IPv6。IPv6由于互联网的高速发展,IP地址已经出现紧缺,为了解决这个问题,开发出了IPv6协议,不过IPv6现在只是在一部分进行实验和应用,要IPv6完全取代IPv4还是会有一段很长的时间的!报头长度、总长度主要是用来确认数据的位置。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。
第二段包含标识、标记以及段偏移字段。他们的主要作用是用来进行数据重组的。比如你在传送一部几百M的电影的时候,不可能是电影整个的一下全部传过去,而是先将电影分成许多细小的数据段,并对数据段进行标记,然后在传输,当对方接受完这些数据段后,就需要通过这些数据标记来进行数据重组,组成原来的数据!就好象拼图一样。
数据链路层:他的作用主要是物理寻址(即MAC地址)。当网络层对数据封装完毕以后,传给数据链路层。而数据链路层同样会数据桢进行封装!同样我们也通过数据报文格式来分析。
这个报文格式比较清晰,我们可以清楚的看到包含目的MAC地址、源MAC地址、总长度、数据、FCS。目的MAC地址、源MAC地址明显是指明数据桢的来源及目的,总长度是为了确认数据的位置,而FCS是散列值,也是用来保证数据的完整性。
物理层:是所有层次的最底层,也是第一层。他的主要功能就是透明的传送比特流!当数据链路层封装完毕后,传给物理层,而物理层则将数据转化为比特流传输(也就是01010111....00)。当比特流传到对方的机器的物理层,对方的物理层将比特流接受下来,然后传给上层(数据链路层),数据链路层将数据组合成桢,并对数据进行解封装,然后继续传递给上层,这是一个逆向的过程,直到传到应用层,显示出信息。
以上就是一个数据一个传输的完整过程!
❷ tcp报文和udp报文都是封装在IP包中的么
是的,TCP和UDP是在第三层传输层。而IP在第二层网际层。数据从上层封装到下层。所以TCP和UDP被封装在IP包里。
相关介绍:
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
UDP它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是TCP,该协议几乎做了所有的事情。
(2)应用层数据流向哪里扩展阅读
UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但即使在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。