数据传输过程详解.docx
《数据传输过程详解.docx》由会员分享,可在线阅读,更多相关《数据传输过程详解.docx(14页珍藏版)》请在冰点文库上搜索。
![数据传输过程详解.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/391dabbe-5c1b-4c18-9108-c68e6def848e/391dabbe-5c1b-4c18-9108-c68e6def848e1.gif)
数据传输过程详解
数据传输过程详解
一、FTP客户端发送数据到FTP服务器端,详述其工作过程。
两台机器的连接情况如下图所示:
详细解答如下
1.1、假设初始设置如下所示:
客户端FTP端口号为:
32768
服务器端FTP端口号为:
21
设备
设置
PC1(客户端):
MAC地址(MAC1):
A01
IP地址(IP1):
192.168.1.1
子网掩码:
255.255.255.0
默认网关:
192.168.1.2
PC2(服务器端):
MAC地址(MAC2):
A02
IP地址(IP2):
192.168.2.1
子网掩码:
255.255.255.0
默认网关:
192.168.2.2
Switch1:
MAC地址列表
端口
MAC地址
1
A01
2
A03
Switch2:
MAC地址列表
端口
MAC地址
1
A02
2
A04
Router:
端口S0设置
MAC地址(MAC3):
A03
IP地址(IP1):
192.168.1.2
端口S1设置
MAC地址(MAC4):
A04
IP地址(IP1):
192.168.2.2
路由表
网络号
端口号
192.168.1.0
S0
192.168.2.0
S1
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地址,然后就发送出去
是所有IP数据报必须具有的。
在报头的固定部分的后面是一些可选字段,其长度是可变的。
下图给出了IPv4数据报的格式义。
IP数据报的格式
2.2、不同数据链路层协议的MTU值
协议
MTU(字节)
Hyperchannel
65535
令牌环(16Mbps)
17914
令牌环(4Mbps)
4464
FDDI
4352
以太网
1500
X.25
576
PPP
296
一个路由器可能连接不同MTU的网络,如下图
2.3、IP数据报分片
数据报分片时,每个分片前都要加上相应的IP报头,形成新的IP数据报,除包含一些分片控制域(如标志、偏移量)外,分片的报头和原IP数据报的报头基本一样。
标识符、标志、偏移量3个字段在IP报头中的作用是:
●标识:
占16bit,标识数据报。
当数据报长度超出网络最大传输单元(MTU)时,必须要进行分割,并且需要为分割段(fragment)提供标识。
所有属于同一数据报的分割段被赋予相同的标识值。
●标志:
占3bit,指出该数据报是否可分段。
目前只有前两个比特有意义。
标志字段中的最低位记为MF(MoreFragment)。
MF=1即表示后面“还有分片”的数据报。
MF=0表这已是若干数据报片中的最后一个。
标志字段中间的一位记为DF(Don’tFragment)。
只有当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)、加速递减(multiplicativedecrease)和拥塞避免(congestionavoidance)。
“拥塞避免”并非指完全能够避免了拥塞。
利用以上的措施要完全避免网络拥塞还是不可能的。
“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。
3.5、端口号的识别
(1)端口的概念:
⏹端口就是运输层服务访问点TSAP。
⏹端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
⏹从这个意义上讲,端口是用来标志应用层的进程。
(2)端口在进程之间的通信中所起的作用
(3)端口号
⏹端口用一个16bit端口号进行标志。
⏹端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。
在因特网中不同计算机的相同端口号是没有联系的。
端口号分为两类:
⏹一类是熟知端口,其数值一般为0~1023。
当一种新的应用程序出现时,必须为它指派一个熟知端口。
⏹另一类则是一般端口,用来随时分配给请求通信的客户进程。
端口的作用可用下图来表示:
(4)插口
TCP使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将TCP连接的端点称为插口(socket),或套接字、套接口。
插口包括IP地址(32bit)和端口号(16bit),共48bit。
插口和端口、IP地址的关系是: