《数据传输过程详解.docx》由会员分享,可在线阅读,更多相关《数据传输过程详解.docx(14页珍藏版)》请在三一办公上搜索。
1、数据传输过程详解一、FTP客户端发送数据到FTP服务器端,详述其工作过程。两台机器的连接情况如下图所示:PC1FTP密户端PC2FTP服务器Ron Lei-switch!详细解答如下1。1、假设初始设置如下所示:客户端FTP端口号为:32768服务器端FTP端口号为:21设备设置PC1 (客户端):MAC 地址(MAC1): A01IP 地址(IP1): 192.168。1。1子网掩码:255.255.255.0默认网关:192.168.1。2PC2 (服务器端):MAC 地址(MAC2): A02IP 地址(IP2): 192。168.2.1子网掩码:255.255。255。0默认网关:19
2、2。168。2。2Switch1 : MAC地址列表端口MAC地址1A012A03Switch2: MAC地址列表端口MAC地址1A022A04Router:端口 S0设置MAC 地址(MAC3): A03IP 地址(IP1) : 192.168.1.2端口 S1设置MAC 地址(MAC4): A04IP 地址(IP1) : 192.168。2.2路由表网络号端口号192。168.1。0S0192。168.2.0S11.2、不同网络段上的两台计算机通过TCP/IP协议通讯的过程如下所示:协议是水平的,服务是垂直的。F1 口FTF|Jj设FTP客尸 _ 以务器应用忌TCP1湿网际层PIP |I.
3、Z I|IPIFW _ 4 LIPTCP一路由基以太御牛L3、.削协议;.却1以太网担 酬序令牌坏驱 耽楫序;创以环|.小以 =1令阿驱 或程序LV 一 .d J以太网L令理邸)阿第童口层物理层,指的是电信号的传递方式,透明的传输比特流。链路层,在两个相邻结点间的线路上无差错地传送以帧为单位的数据。网络层,负责为分组交换网上的不同主机提供通信,数据传送的单位是分组或包。传输层,负责主机中两个进程之间的通信,数据传输的单位是报文段。网络层负责点到点(pointtopoint)的传输(这里的点指主机或路由器),而传输 层负责端到端(endtoend)的传输(这里的“端”指源主机和目的主机)。1。3
4、、数据包的封装过程用户数据原数据目的端口号源端口号,用户教据 TCP1报文段:TCP 头 i:I,IIIIIII目的IP|源IF :旨葩端口司嘲口与 用户数据1已教蠢报IP头:TCP 头 :!目 ffiMACSMAC目的IP源IP目的端口号源端口号用户数据CRC1B头IP头TCP头帧尾数据封秘程不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每 层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理.两台计算机在不同的网段中, 那么数据从一台计算机到另一台计
5、算机传输过程中要经过一个或多个路由器。1.4、工作过程(1)在PC1客户端,将原始数据封装成帧,然后通过物理链路发送给Switch1的端口 1.形成的 帧为:A03A01192.168.2.1192.168.1.12132768DATA帧尾CRC所以旧头TCP 1项刷注:发送方怎样知道目的站是否和自己在同一个网络段?每个IP地址都有网络前缀,发送方只 要将目的IP地址中的网络前缀提取出来,与自己的网络前缀比较,若匹配,则意味着数据报可以 直接发送。也就是说比较二者的网络号是否相同。本题中,PC1和PC2在两个网络段.(2)Switch1收到数据并对数据帧进行校验后,查看目的MAC地址,得知数据
6、是要发送给PC2,所以Switch1就对数据帧进行存储转发,查看自己的MAC地址列表后,从端口 2将数据转发给数据传输过程详解 路由器的S0端口。(3) Router收到数据后,先对数据进行校验,然后对IP数据报进行分析,重新对数据进行封装,查看路由表后,从S1端口将数据发送出去,此时得到新的数据帧如下:A02A04192.168.2.1192.168.1.12132768DATA帧尾CRC况 1;IP1TCP头帜尾注:目的IP和源IP地址不会被改的,改变的是MAC,路由器会把远端的源MAC地址改成下一跳 的MAC地址,然后就发送出去(4) Switch2接收到Router给它发送的数据后,进
7、行校验后直接存储转发,查看自己的MAC地址列表后,将数据帧从端口 1发送给PC2服务器端。(5) PC2服务器端收到数据后,先进行校验,然后进行拆分,得到TCP报文段,由此可以知道目 的端口号是21,然后把数据交付给相应的FTP应用进程进行处理.二、在数据的传输中会出现以下一些问题,该如何解决?1、针对数据链路层,传输的数据会出现差错或者丢失的问题,也有两端传输速度不同的问题,如何解决这些问题?答:首先我们假设主机A向主机B发送数据(1)差错控制差错控制方法分两类,一类是自动请求重发ARQ,另一类是前向纠错FEC,也叫前向纠错码(Forward Error Correction 简称 FEC)
8、。在ARQ方式中,当接收端发现差错时,就设法通知发送端重发,直到收到正确的码字为止, ARQ方式只使用检错码.在FEC方式中,接收端不但能发现差错,而且能确定二进制码元发生错误的位置,从而加以纠正,FEC方式必须使用纠错码。常用的纠错码有奇偶校验码、循环冗余码和海明码等例如:在数据帧中加上CRC,这样主机B就可以检验所接收的数据是否有差错,如果有差错,数据传输过程详解 那么主机B可以向主机A发送一个否认帧NAK,以表示主机A应当重传出现差错的那个数据帧。(2)丢失的解决办法超时重传。如果主机A在发送完数据给主机B之后,若到了超时计时器所设置的重传时间而 还没有收到主机B的任何确认帧ACK,则主
9、机A就重传前面所发送的这一数据帧.(3)流量控制 假设主机A向主机B传输的数据是无差错的,那么,最简单的流量控制方法就是:发送方 每发送一帧数据就暂时停下来,接收方收到数据帧之后就交付给主机,然后发一信息给发送方, 表示接收的任务已经完成,这时,发送方再接着发送下一个数据帧.在这种情况下,接收方的接收 缓存的大小只要能够装得下一个数据帧即可。 滑动窗口:分别在发送端和接收端设置发送窗口和接收窗口发送窗口用来对发送端进行流量控制,为发送窗口的大小wt就是代表在还没有收到对方确 认信息的情况下发送端最多可以发送多少个数据帧。每收到对一个帧的确认,发送窗口就向前 滑动一个位置。由此也可以知道,第一种
10、流量控制发法中,wt=i。在接收端设置接收窗口时为了控制可以接收哪些数据而不可以接收哪些数据,在接收端只 有当收到的数据帧的发送序号落入接收窗口内才允许将该数据帧收下。每收到一个序号正确的 帧,接收窗口就向前滑动一个位置.2、IP数据报有它的长度,而数据传输过程中,一些中间设备也有一个相关的设置MTU (最大传 输单元),如果现在假设IP数据报的长度是5000字节,而MTU设置是1500字节,那么该怎么 办?答:解决的办法是对IP数据报进行分片与重组。详细过程如下:2。1、 IP v4数据报格式一个IP v4数据报由报头和数据两部分组成,其中数据包括高层需要传输的数据,而报头是为了正确传输高层
11、数据而增加的控制信息。报头的前一部分是固定长度,共20字节,是所有IP数据传输过程详解 数据报必须具有的。在报头的固定部分的后面是一些可选字段,其长度是可变的。下图给出了IPv4数据报的格式义。bt;0 0 12 3 4567DTRC |未用比特Q首固定部分s 部海节质斐部分旨部数抿部公*P数据报IP数据报的格式2。2、不同数据链路层协议的MTU值协议MTU (字节)Hyperchannel65535令牌环(16Mbps)17914令牌环(4Mbps)4464FDDI4352以太网1500X。25576PPP296一个路由器可能连接不同MTU的网络,如下图主机占2.3、IP数据报分片数据报分片
12、时,每个分片前都要加上相应的IP报头,形成新的IP数据报,除包含一些分片控制域(如标志、偏移量)外,分片的报头和原IP数据报的报头基本一样。标识符、标志、偏移量3个字段在IP报头中的作用是:标识:占16bit,标识数据报.当数据报长度超出网络最大传输单元(MTU)时,必须要进 行分割,并且需要为分割段(fragment )提供标识。所有属于同一数据报的分割段被赋予相同的标 识值。标志:占3bit,指出该数据报是否可分段。目前只有前两个比特有意义。标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据 报.MF=0表这已是若干数据报片中的最后一个.标志字段
13、中间的一位记为DF(Dont Fragment).只有当DF=0时才允许分片。片偏移:占13bit,若有分段时,用以指出该分段在数据报中的相对位置,也就是说,相对 于用户数据字段的起点,该片从何处开始。片偏移以8字节为偏移单位,即每个分片的长度一 定是8字节(64Bit)的整数倍.2.4、IP数据报重组在最终的目的主机上将接收到的所有分片进行重新组装的过程就是IP数据报重组。这时要 根据数据报的标识、标志、偏移量等字段将分段的各个IP数据报重新组装成完整的原始数据报。2.5本题的详解过程数据报的数据部分为5000字节长(使用固定首部),需要分片长度不超过1500字节的数据 报片。因固定首部长度
14、为20字节,因此每个数据报片的长度不能超过1480字节。于是分为4 个数据报片,其数据报片的数据部分长度分别为1480字节、1480字节、1480字节和560字节。 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。分片结果如下图所示:数据部分共5000字节数据报片1首部1偏移 =0/S=C字节01479数据报片2卜_首部2 rri r偏移重=14的8=18514802959数据报片3首前31偏移 =290/8=3702?604435数据报片4 H 首部4偏穆重=4440/8=555444050003、两个主机的应用进程,也会出现差错和丢失,两端的缓存也不同,如何控制流量?应用进
15、程 如何与端口号进行匹配?答:因为运输层提供的功能是应用进程之间的逻辑通信,所以面向连接的传输控制协议TCP 就保证了全双工的可靠交付的服务.具体的有关差错控制和流量控制如下面的详细解释:3.1、运输层为相互通信的应用进程提供了逻辑通信,如下图所示:3.2、TCP发送报文段的示意图如下:透应川进程.向发送缓宥发送缓存接收端上山报文段 卜 I损文段 卜I损文段 卜发送TCP报文段3。3、TCP的数据编号与确认 TCP协议是面向字节的。TCP将所要传送的报文看成是字节组成的数据流,并使每一个字 节对应于一个序号。在连接建立时,双方要商定初始序号.TCP每次发送的报文段的首部中的序号字段数值表 示该
16、报文段中的数据部分的第一个字节的序号。 TCP的确认是对接收到的数据的最高序号表示确认.接收端返回的确认号是已收到的数 据的最高序号加1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序 号。3。4、TCP的流量控制与拥塞控制 (1)滑动窗口(进行流量控制) TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节.在TCP报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况, 随时动态地调整对方的发送窗口上限值(可增大或减小)。发送窗口 收到僚认即可前移1100101 200201
17、 300301 400101 河501 600601 700701 sociSOI 901L*不可发送可发送指针E)发足窗口大小为字节发送窗口前移|1100101200201300301 400pi河 600601 河701 800SO J900已发送_已发送但L HT岩接_不HT宕逢r并被确认未被痢认k 口 J 4L1A 一指针(b)发炭了 4仙字饥收到的确认序写为如1.窗【I大小不变,还可以发承3CIU字行发送窗口缩小可发送已发送并被简认指针收到的确/序炒为40L窗口大小变为4DQ字节,还司以发送40。字节上图(a)表示发送端要发送900字节长的数据,划分为9个100字节长的报文段,而发送
18、窗口确定为500字节。发送端只要收到了对方的确认,发送窗口就可前移。发送TCP要维 护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离.上图(b)表示发送端已发送了 400字节的数据,但只收到对前200字节数据的确认,同时窗口大小不变。现在发送端还可发送300字节。上图(c)表示发送端收到了对方对前400字节数据的确认,但对方通知发送端必须把窗 口减小到400字节。现在发送端最多还可发送400字节的数据。利用可变窗口大小进行流量控制双方确定的窗口值是400,如下图所示:主机A _主机B:SEQ=1 : A还能发送300字节:SEQ 顷 i A还能发送?no字书! SEQ = 201=
19、 允许a再发送300字节(序号25至500)i洗。二3E I A还能发送200字节(序号301至500):SEQ* A还能发送1C0字节序号401至500;iiiSEQEA超时重发,但不能发送序号500以后的数据WIN二允许A再发送2Q0字号:序号501至700)II:SEQ 二 ! A 还能发送 100 Tti :序号 501 至和CD,i不允许A再发送(到序号600的数据都已收到)(2)拥塞控制为了更好地进行拥塞控制,因特网标准推荐使用一下三种技术,慢启动(slow_start)、加 速递减(multiplicative decrease)和拥塞避免(congestion avoidanc
20、e).“拥塞避免并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可 能的。“拥塞避免是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易 出现拥塞。3。5、端口号的识别 (1)端口的概念:端口就是运输层服务访问点TSAP。端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及 让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。(2) 端口在进程之间的通信中所起的作用发送方摆收方应司进程7-C -CP豆用f UCP 复;:|=1 =1=IS1 1 1 1 不.渚UUP : 用户数
21、据报 IIP数据报IF鼓gTCP振丈闩.UCP 用感汛报 R(3) 端口号 端口用一个16 bit端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中 不同计算机的相同端口号是没有联系的.端口号分为两类: 一类是熟知端口,其数值一般为01023。当一种新的应用程序出现时,必须为它指派一 个熟知端口。另一类则是一般端口,用来随时分配给请求通信的客户进程.端口的作用可用下图来表示:连接1IP=131.42.85.15端口25A连接3IP=128.36.1.22端口B |1500y(4)插口TCP使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将TCP连接的端点称 为插口(socket),或套接字、套接口。插口包括IP地址(32bit)和端口号(16bit),共48bit。 插口和端口、IP地址的关系是:F地址端口号131.6.23.131500插 (socket)131.6.23.13,1500