您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

数据传输过程详解

时间:2019-10-09 13:34:56  来源:  作者:

一、FTP客户端发送数据到FTP服务器端,详述其工作过程。两台机器的连接情况如下图所示:

数据传输过程详解

 

详细解答如下

1.1、假设初始设置如下所示:

客户端FTP端口号为:32768

服务器端FTP端口号为:21

数据传输过程详解

 

1.2、不同网络段上的两台计算机通过TCP/IP协议通讯的过程如下所示:

协议是水平的,服务是垂直的。

数据传输过程详解

 

物理层,指的是电信号的传递方式,透明的传输比特流。

链路层,在两个相邻结点间的线路上无差错地传送以帧为单位的数据。

网络层,负责为分组交换网上的不同主机提供通信,数据传送的单位是分组或包。

传输层,负责主机中两个进程之间的通信,数据传输的单位是报文段。

网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(end-to-end)的传输(这里的“端”指源主机和目的主机)。

 

1.3、数据包的封装过程

数据传输过程详解

 

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。

1.4、工作过程

(1)在PC1客户端,将原始数据封装成帧,然后通过物理链路发送给Switch1的端口1。形成的帧为:

数据传输过程详解

 

注:发送方怎样知道目的站是否和自己在同一个网络段?每个IP地址都有网络前缀,发送方只要将目的IP地址中的网络前缀提取出来,与自己的网络前缀比较,若匹配,则意味着数据报可以直接发送。也就是说比较二者的网络号是否相同。本题中,PC1和PC2在两个网络段。

(2)Switch1收到数据并对数据帧进行校验后,查看目的mac地址,得知数据是要发送给PC2,所以Switch1就对数据帧进行存储转发,查看自己的MAC地址列表后,从端口2将数据转发给路由器的S0端口。

(3)Router收到数据后,先对数据进行校验,然后对IP数据报进行分析,重新对数据进行封装,查看路由表后,从S1端口将数据发送出去,此时得到新的数据帧如下:

数据传输过程详解

 

注:目的IP和源IP地址不会被改的,改变的是MAC,路由器会把远端的源MAC地址改成下一跳的MAC地址,然后就发送出去

(4)Switch2接收到Router给它发送的数据后,进行校验后直接存储转发,查看自己的MAC地址列表后,将数据帧从端口1发送给PC2服务器端。

(5)PC2服务器端收到数据后,先进行校验,然后进行拆分,得到TCP报文段,由此可以知道目的端口号是21,然后把数据交付给相应的FTP应用进程进行处理。

二、在数据的传输中会出现以下一些问题,该如何解决?

1、针对数据链路层,传输的数据会出现差错或者丢失的问题,也有两端传输速度不同的问题,如何解决这些问题?

答:首先我们假设主机A向主机B发送数据

(1)差错控制

差错控制方法分两类,一类是自动请求重发ARQ,另一类是前向纠错FEC,也叫前向纠错码(Forward Error Correction简称FEC)。

在ARQ方式中,当接收端发现差错时,就设法通知发送端重发,直到收到正确的码字为止,ARQ方式只使用检错码。

在FEC方式中,接收端不但能发现差错,而且能确定二进制码元发生错误的位置,从而加以纠正,FEC方式必须使用纠错码。常用的纠错码有奇偶校验码、循环冗余码和海明码等

例如:在数据帧中加上CRC,这样主机B就可以检验所接收的数据是否有差错,如果有差错,那么主机B可以向主机A发送一个否认帧NAK,以表示主机A应当重传出现差错的那个数据帧。

(2)丢失的解决办法

超时重传。如果主机A在发送完数据给主机B之后,若到了超时计时器所设置的重传时间而还没有收到主机B的任何确认帧ACK,则主机A就重传前面所发送的这一数据帧。

(3)流量控制

①假设主机A向主机B传输的数据是无差错的,那么,最简单的流量控制方法就是:发送方每发送一帧数据就暂时停下来,接收方收到数据帧之后就交付给主机,然后发一信息给发送方,表示接收的任务已经完成,这时,发送方再接着发送下一个数据帧。在这种情况下,接收方的接收缓存的大小只要能够装得下一个数据帧即可。

②滑动窗口:分别在发送端和接收端设置发送窗口和接收窗口

发送窗口用来对发送端进行流量控制,为发送窗口的大小WT就是代表在还没有收到对方确认信息的情况下发送端最多可以发送多少个数据帧。每收到对一个帧的确认,发送窗口就向前滑动一个位置。由此也可以知道,第一种流量控制发法中,WT=1。

在接收端设置接收窗口时为了控制可以接收哪些数据而不可以接收哪些数据,在接收端只有当收到的数据帧的发送序号落入接收窗口内才允许将该数据帧收下。每收到一个序号正确的帧,接收窗口就向前滑动一个位置。

2、IP数据报有它的长度,而数据传输过程中,一些中间设备也有一个相关的设置MTU(最大传输单元),如果现在假设IP数据报的长度是5000字节,而MTU设置是1500字节,那么该怎么办?

答:解决的办法是对IP数据报进行分片与重组。详细过程如下:

2.1、 IP v4数据报格式

一个IP v4数据报由报头和数据两部分组成,其中数据包括高层需要传输的数据,而报头是为了正确传输高层数据而增加的控制信息。报头的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在报头的固定部分的后面是一些可选字段,其长度是可变的。下图给出了IPv4数据报的格式义。

数据传输过程详解

 

IP数据报的格式

2.2、不同数据链路层协议的MTU值

数据传输过程详解

 

一个路由器可能连接不同MTU的网络,如下图

数据传输过程详解

 

2.3、IP数据报分片

数据报分片时,每个分片前都要加上相应的IP报头,形成新的IP数据报,除包含一些分片控制域(如标志、偏移量)外,分片的报头和原IP数据报的报头基本一样。

标识符、标志、偏移量3个字段在IP报头中的作用是:

标识:占16bit,标识数据报。当数据报长度超出网络最大传输单元(MTU)时,必须要进行分割,并且需要为分割段(fragment)提供标识。所有属于同一数据报的分割段被赋予相同的标识值。

标志:占3bit,指出该数据报是否可分段。目前只有前两个比特有意义。

标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表这已是若干数据报片中的最后一个。

标志字段中间的一位记为DF(Don’t Fragment)。只有当DF=0时才允许分片。

片偏移:占13bit,若有分段时,用以指出该分段在数据报中的相对位置,也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8字节为偏移单位,即每个分片的长度一定是8字节(64Bit)的整数倍。

2.4、IP数据报重组

在最终的目的主机上将接收到的所有分片进行重新组装的过程就是IP数据报重组。这时要根据数据报的标识、标志、偏移量等字段将分段的各个IP数据报重新组装成完整的原始数据报。

2.5本题的详解过程

数据报的数据部分为5000字节长(使用固定首部),需要分片长度不超过1500字节的数据报片。因固定首部长度为20字节,因此每个数据报片的长度不能超过1480字节。于是分为4个数据报片,其数据报片的数据部分长度分别为1480字节、1480字节、1480字节和560字节。原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。分片结果如下图所示:

数据传输过程详解

 

3、两个主机的应用进程,也会出现差错和丢失,两端的缓存也不同,如何控制流量?应用进程如何与端口号进行匹配?

答:因为运输层提供的功能是应用进程之间的逻辑通信,所以面向连接的传输控制协

议TCP就保证了全双工的可靠交付的服务。具体的有关差错控制和流量控制如下面的详细解释:

3.1、运输层为相互通信的应用进程提供了逻辑通信,如下图所示:

数据传输过程详解

 

3.2、TCP发送报文段的示意图如下:

数据传输过程详解

 

3.3、TCP 的数据编号与确认

TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。

在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。

TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。

3.4、TCP 的流量控制与拥塞控制

(1)滑动窗口(进行流量控制)

TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。

在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。

发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。

数据传输过程详解

 


数据传输过程详解

 


数据传输过程详解

 

 

上图(a)表示发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定为 500 字节。发送端只要收到了对方的确认,发送窗口就可前移。发送 TCP 要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。

上图(b)表示发送端已发送了 400 字节的数据,但只收到对前 200 字节数

据的确认,同时窗口大小不变。现在发送端还可发送 300 字节。

上图(c)表示发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。现在发送端最多还可发送 400 字节的数据。

利用可变窗口大小进行流量控制双方确定的窗口值是 400,如下图所示:

数据传输过程详解

 

(2)拥塞控制

为了更好地进行拥塞控制,因特网标准推荐使用一下三种技术,慢启动(slow_start)、加速递减(multiplicative decrease)和拥塞避免(congestion avoidance)。

“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

3.5、端口号的识别

(1)端口的概念:

端口就是运输层服务访问点 TSAP。

端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。

从这个意义上讲,端口是用来标志应用层的进程。

(2)端口在进程之间的通信中所起的作用

数据传输过程详解

 

(3)端口号

端口用一个 16 bit 端口号进行标志。

端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。

端口号分为两类:

一类是熟知端口,其数值一般为 0~1023。当一种新的应用程序出现时,必须为它指派一个熟知端口。

另一类则是一般端口,用来随时分配给请求通信的客户进程。

端口的作用可用下图来表示:

数据传输过程详解

 

(4)插口

TCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为插口(socket),或套接字、套接口。插口包括IP地址(32bit)和端口号(16bit),共48bit。插口和端口、IP 地址的关系是:

数据传输过程详解

 

---END---

 

本文来源:EDN电子技术设计



Tags:数据传输   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
简介简单就是美。在网络协议的世界中,TCP和UDP是建立在IP协议基础上的两个非常通用的协议。我们现在经常使用的HTTP协议就是建立在TCP协议的基础上的。相当于TCP的稳定性来说...【详细内容】
2021-12-06  Tags: 数据传输  点击:(22)  评论:(0)  加入收藏
[PConline 杂谈]用了那么多年的数码产品,让你觉得体验最不好是哪一块?相信很多朋友都会回答“数据接口”。仔细回想,那么多年使用数码产品的经历,你一共体验过多少接口?这种情况...【详细内容】
2020-07-14  Tags: 数据传输  点击:(89)  评论:(0)  加入收藏
企业VPN应用场景 场景介绍:如图为一企业vpn应用场景,总部出口为一台AD交付设备,分支结构出口为一台AC(上网行为管理设备),现用一数据包分析分支PC2访问HTTP服务器,数据包的走向及...【详细内容】
2020-04-16  Tags: 数据传输  点击:(653)  评论:(0)  加入收藏
一、基本结构先看架构图 框架.png二、设备端接入物联网终端是用的ESP32,是一款自带蓝牙和Wifi的单片机。利用它可以直接接入互联网,无需其他模块。当然你可以将现在流行的NB-I...【详细内容】
2020-03-23  Tags: 数据传输  点击:(92)  评论:(0)  加入收藏
引言 在日常开发中我们对HTTP数据传输并不陌生,前端需要与后端进行数据交互往往需要调用后端某个API,然而在前端与后端的请求过程中数据真的安全吗?下面了解一件关于0.01购买...【详细内容】
2020-03-08  Tags: 数据传输  点击:(42)  评论:(0)  加入收藏
以太网交换机拥有一条很高带宽的背部总线和内部交换矩阵,交换机的所有端口都挂接在这条背部总线上。在交换机的存储器中,存放着一个端口号和以太网地址对照表,当交换机控制电路...【详细内容】
2020-02-21  Tags: 数据传输  点击:(115)  评论:(0)  加入收藏
完全理解 HTTPS 如何做到传输安全原 作 者:fi3ework原文链接:https://github.com/fi3ework/blog/issues/17概念HTTPS:是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版,即 HTT...【详细内容】
2020-01-22  Tags: 数据传输  点击:(82)  评论:(0)  加入收藏
一、FTP客户端发送数据到FTP服务器端,详述其工作过程。两台机器的连接情况如下图所示: 详细解答如下1.1、假设初始设置如下所示:客户端FTP端口号为:32768服务器端FTP端口号为:21...【详细内容】
2019-10-09  Tags: 数据传输  点击:(127)  评论:(0)  加入收藏
数据传递转码数据在传输的过程中,浏览器会对数据进行编码,假如我现在有一条数据 {"name": "测试"},如果我们通过 get 方法传递数据,这条数据会被拼接到 url 请求的后面,如:localho...【详细内容】
2019-09-09  Tags: 数据传输  点击:(187)  评论:(0)  加入收藏
首先我们来回顾一下路由的基本概念,什么是路由?所谓路由就是当一台路由器(或其他三层设备)收到一个IP数据包时,路由器查看IP数据包的IP头部,将IP头部中的目的IP地址拿到路由表中进...【详细内容】
2019-06-20  Tags: 数据传输  点击:(520)  评论:(0)  加入收藏
▌简易百科推荐
以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。 文档地址: https://www.yuque.com/bjjnts/jxd/bo1oszusing System;using System.C...【详细内容】
2021-12-28  Wednes    Tags:HttpClient   点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  ikuai    Tags:组网   点击:(1)  评论:(0)  加入收藏
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(5)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(3)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(35)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(10)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(22)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(31)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条