新闻动态大文件传输

C/S架构与B/S架构的详细介绍
C/S架构 C/S架构是典型的两层架构,全称Client/Sever,即客户端服务器端架构。 第一层用户表示层(客户端) 第二层数据库层(服务器端) 在C/S架构中,客户端与服务器端直接连接,由两部分组成架构,并分别承担重要角色: 第一层客户机除了输入输出、运算能力以外,还可以处理一些计算、数据存储等方面的业务逻辑事务。 第二层服务器主要承担事务逻辑的处理,由于客户机能够分担部分逻辑事务,因此减轻服务器的负担。 B/S架构 B/S架构是三层架构,全称Browser/Sever,即浏览器/服务器架构。随着IT网络的发展,C/S架构无法满足当前需求,进而衍生的B/S架构,它主要是利用WWW浏览器技术实现,将系统功能实现的核心部分集合到服务器上,客户机仅需安装浏览器即可。 第一层浏览器(客户端) 第二层WEB服务器 第三层数据库服务器 第一层是浏览器,即客户端,只有简单的输入输出功能,处理极少部分的事务逻辑。 第二层是WEB服务器,职能为信息传递,即用户访问数据库前,使用SQL语句向WEB服务器发送请求。 第三层是数据库服务器,存放大量数据。在收到WEB服务器请求后,对SQL语句进行处理,并将结果发送给WEB服务器,WEB服务器将收到的数据结果转换为HTML文本形式发送给浏览器。 C/S架构与B/S架构的比较
2019-07-19
TCP传输协议如何进行拥塞控制?
拥塞控制 拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。这种现象跟公路网中经常所见的交通拥挤一样,当节假日公路网中车辆大量增加时,各种走向的车流相互干扰,使每辆车到达目的地的时间都相对增加(即延迟增加),甚至有时在某段公路上车辆因堵塞而无法开动。 造成拥塞的原因 1、主要原因是通信量导致的,多个输入对应多个输出,多条流入线路有分组到达,并需要同一输出线路,此时,如果路由器没有足够的内存来存放所有这些分组,那么有的分组就会丢失。 2、路由器的慢带处理器的缘故,以至于难以完成必要的处理工作,如缓冲区排队、更新路由表等。 防止拥塞的方法 1、在传输层可采用:重传策略、乱序缓存策略、确认策略、流控制策略和确定超时策略。 2、在网络层可采用:子网内部的虚电路与数据报策略、分组排队和服务策略、分组丢弃策略、路由算法和分组生存管理。 3、在数据链路层可采用:重传策略、乱序缓存策略、确认策略和流控制策略。 控制方法 1、缓冲区分配法:此方法使用于虚电路的分组交换网络中,在网络中建立虚拟的节点为虚拟电路预先分配一个或多个数据缓冲区。若某个节点缓冲器已被占满,则呼叫请求分组另择路由,或者返回一个"忙"信号给呼叫者。 2、分组丢弃法:该法不必预先保留缓冲区,当缓冲区占满时,将到来的分组丢弃。若通信子网提供的是数据报服务,则用分组丢弃法来防止拥塞发生不会引起大的影响。但若通信子网提供的是虚电路服务,则必须在某处保存被丢弃分组的备份,以便拥塞解决后能重新传送。有两种解决被丢弃分组重发的方法,一种是让发送被丢弃分组的节点超时,并重新发送分组直至分组被收到;另一种是让发送被丢弃分组的节点在尝试一定次数后放弃发送,并迫使数据源节点超时而重新开始发送。 3、定额控制法:这种方法在通信子网中设置适当数量的称做"许可证"的特殊信息,一部分许可证在通信子网开始工作前预先以某种策略分配给各个源节点,另一部分则在子网开始工作后在网中四处环游。当源节点要发送来自源端系统的分组时,它必须首先拥有许可证,并且每发送一个分组注销一张许可证。目的节点方则每收到一个分组并将其递交给目的端系统后,便生成一张许可证。
2019-07-17
TCP传输协议中如何解决丢包问题
TCP在不可靠的网络上实现可靠的传输,必然会有丢包。TCP是一个“流”协议,一个详细的包将会被TCP拆分为好几个包上传,也是将会把小的封裝成大的上传,这就是说TCP粘包和拆包难题。 但是许多人有不同的理解。TCP协议本身确保传输的数据不会丢失完整性。如果在传输过程中发现数据丢失或数据包丢失,最大的可能性是在发送或接收程序的过程中出现问题。 例如,服务器向客户端发送大量数据,并且发送频率非常高,因此发送链接中很可能会出现错误(1、程序处理逻辑错误;2、多线程同步问题;3、缓冲区溢出等)如果发送失败得不到处理,那么客户端收到得数据将少于理论数据,这将导致数据丢失与数据包丢失。这种现象,其实本质上来说不是丢包,也不是丢数据,只是因为程序处理有错误,导致有些数据没有成功地被socket发送出去。 关于send函数的问题: 首先必须明确send函数做了什么。 他是将数据传递给本地TCP层,还是将数据传递给应用层,确认接收方TCP层后再返回。在后者的情况下,你说的没错,其实不然。 那是由于nagle算法不能使用了,即该算法将send函数接收的小数据汇总成大数据包发送。 即使send函数能进行数据发送,对方也不一定被接受。 TCP协议只是在传输层履行义务,send函数只是应用层起到向TCP层传递数据的作用,除此之外与TCP层没有任何关系。 常见的解决方案包括拆包、添加包头和发送组合包。如果服务器或客户端断开连接,一般会使用心跳测试。 心跳测试:每隔一段时间向服务器发送数据包。为了节省资源,通常会发送空数据包。如果发送失败表明套接字已断开,此时需要根据特定条件释放资源并重新连接。 TCP传输可以保证数据交换的可靠性,这意味着一台主机将数据正确地传输到目标计算机,目标计算机的协议栈有一定的限制,如果不及时处理在目标计算机上接收到的数据,堆栈就会溢出。 这种溢出不是由TCP协议本身引起的,而是由系统的IP协议栈的缓冲区溢出引起的!
2019-07-16tcp传输
TCP协议如何保证数据的顺序传输
TCP是一种面向连接的、可靠的基于字节流服务。“面向连接”意味着使用TCP协议的应用在建立联系之前,彼此需要先建立TCP联系;而TCP协议确保传输过程中数据的顺序性则体现其“可靠”的特性,具体如下: TCP协议将数据切分为多个小片段(数据被划分为合理长度),小片段由头部(header)和数据(payload)组成,为了确保抵达数据的顺序,TCP协议给每个片段的头部(header)都分配了序列号,方便后期按照序列号排序。 1、当某个片段按照顺序发送后,发送方会将已发送的数据片段暂时保存在缓冲区内,并为每个已发送的数据设置一个时间区间。 2、当接收方收到正确的符合顺序的数据片段后,会优先对数据片段做完整检验,如确认无误,再把数据片段交给上层协议,并给发送方一个TCP片段反馈信息用来告知(ACK acknowledge)发送方:我已经接收到这个片段了。这个TCP片段被称为ACK回复。举个例子:发送的第一个片段序列号为T,其对应的ACK回复则为T+1,也就是接收方要接收的下一个发送片段的序列号。 假设在规定的时间区间之内发送方收到接收方的TCP片段反馈信息,则发送方可以释放缓冲区的数据,如若超时未收到应答,发送方则重新发送数据,直到收到应答,或者重发数据次数达到上限为止。 TCP协议的种种机制保证了数据传输的顺序,然而TCP报文段作为IP数据来传输,在IP数据报的到达可能会失序,因此TCP报文段的到达也存在失序的可能。特殊情况下,TCP将对收到的数据进行重新排列,确保顺序正确后再交给应用层。
2019-07-15
TCP协议的确认重传机制
TCP协议是面向连接的传输层协议,TCP的传输特点具有可靠性,它具有面向连接服务来确保可靠稳定传输,而确认重传机制是TCP协议保证可靠稳定传输最重要的机制,他包括累计确认、超时时间计算、快速重传等几个方面。 确认重传机制 在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到发送数据的ACK确认报文,则对该报文进行重传,在达到一定次数还没有成功时放弃并发送一个复位信号。 1、累计确认 累计确认就是TCP协议的确认方法,TCP使用可变长度报文段来发送数据,重传时,报文段数据可能会比原报文段数据包含更多的数据,因此对数据报和报文段无法进行简单的确认。TCP使用流序号对流中的一个位置进行确认,即序号和确认号一一对应,接收方使用序号将报文段重新排序,且以正确接收到的流的最长连续前缀进行确认。 2、超时时间计算 超时时间计算是开启定时器的设定时间,从而保证网络资源利用率,避免因定时器的时间(RTO)不确定而影响网络传输效率。 即发送方连续发送三个数据包,第二个数据包丢失,接收方未接收到,无法返回ACK。每当发送一个数据包时,就启动一个定时器, 而定时器溢出了,发送方还没接收到接收方返回的ACK时,确定重传。 3、快速重传 快速重传机制是发送方在接收端的反馈信息后引发重传,而不是定时器超时重传。快速重传机制要求当接收到失序报文段时,TCP需要立即生成确认信息(重复ACK),并且失序情况表明在后续数据到达前出现了丢包,发送端的工作即为尽快填补丢包带来的数据段空缺。
2019-07-12
传输层协议的TCP与UDP对比(二)
TCP协议 TCP,是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。 一、TCP协议报头 TCP指传输控制协议,其报头格式如下: 应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元( 1 MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体 1 的TCP层。 TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。 TCP协议中的六个标志分别是,URG、ACK、PSH、RST、SYN、FIN。 URG:(Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断。 ACK:(Acknowledgment fieldsignificant)置1时表示确认号(AcknowledgmentNumber)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。 PSH:(Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。 RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。 SYN:(Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。 FIN:(No more data from sender)用来释放连接,表明发送方已经没有数据发送了。 滑动窗口:控制报文流量,用来告诉对方目前接收端缓冲器大小。当为0时标识缓冲器已满,需要停止发包,单位为byte。 二、TCP协议连接方式 TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。握手完成后,两台主机开始传输数据了。 简单的说就是: 第一次握手是客户端向服务端发送一个建立连接的请求; 第二次握手是服务端向客服端回复建立连接的请求的确认; 第三次握手是客服端对服务端确认连接的确认。 为什么建立连接需要经过三次“握手”? 如果只有一次握手,客户端不能确定与服务器的单向连接,更加不能确定服务器与客户端的单向连接; 如果只有两次握手,客户端确定与服务器的单向连接,但是服务器不能确定与客户端的单向连接; 只有三次握手,客户端与服务器才能相互确认双向连接,实现双工数据传输。 断开TCP连接需要经历“四次挥手”: 第一次挥手:客户端发送一个FIN,用来关闭客户端到Server的数据传送,客户端进入FIN_WAIT_1状态。 第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入CLOSE_WAIT状态。 第三次挥手:服务器发送一个FIN,用来关闭Server到客户端的数据传送,服务器进入LAST_ACK状态 第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手。 简单的说就是: 第一次握手:主机A告诉主机B,我没有数据要发送了,请求关闭。 第二次握手:主机B回复主机A,你的请求我收到了,但是我还没准备好,你等我消息。 第三次握手:主机B向主机A请求关闭连接(注意,第二次握手是主机B 同意 主机A的关闭连接的请求)。 第四次握手:主机A向主机B发送确认断开连接请求,B收到后就关闭连接请求,A等待2MSL(两个最大段生命周期,2 Maximum Segment Lifetime)后依然没有收到回复,则证明B已经正常断开,A也关闭连接。 三、TCP协议特点 1、面向连接 面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。 2. 仅支持单播传输 每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。 3.面向字节流 TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。 4.可靠性 对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认;如果发送端实体在合理的往返时延内未收到确认,那么对应的数据(假设丢失了)将会被重传 5. 提供拥塞控制 当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞 6. TCP提供全双工通信 TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)。
2019-07-11
传输层协议的TCP与UDP对比(一)
TCP和UDP都是处于网络层之上的传输层协议,向终端用户之间提供透明传输,向上层提供可靠的数据传输服务。即保证网络层数据的传输。 TCP协议与UDP协议区别 什么时候应该使用TCP? 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 什么时候应该使用UDP? 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 UDP协议 UDP,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。 一、UDP协议报头 UDP指用户数据报协议,其报头格式如下: 二、UDP协议特点 1. 面向无连接 UDP协议只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。不需要和 TCP一样在发送数据前进行三次握手建立连接。 发送端:应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识下是 UDP 协议,接着传递给网络层。 接收端:网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会进行任何拼接操作。 2.支持单播、多播、广播功能 UDP 支持一对一的传输方式,也支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。 3.面向报文 发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文。 4.不可靠性 由于UDP协议是面向无连接的,即通讯不需要建立连接,因此UDP协议是不可靠的。其次,接收端接收到的数据并不会进行备份,发送端也不关心接收方是否接收到数据。最后,在网络环境不稳定情况下,UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。 5.头部小,传输数据多 UDP头部小,说明传输更多的数据内容,UDP 头部包含了以下几个数据: 两个十六位的端口号,分别为源端口(可选字段)和目标端口 整个数据报文的长度 整个数据报文的检验和(IPv4 可选 字段),该字段用于发现头部信息和数据中的错误 UDP 的头部开销小,只有八字节,比TCP 的至少二十字节少的多,可以高效传输数据报文。
2019-07-10
文件传输——TCP/IP协议介绍总结
一、链路层 数据链路层的工作特性: 1.为IP模块发送和接收IP数据报 2.为ARP模块发送ARP请求和接收ARP应答(ARP:地址解析协议,将IP地址转换成MAC地址) 3.为RARP发送RARP请求和接收RARP应答 链路层的主要工作就是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。 二、网络层 网络层引入了三个协议,分别是IP协议、ARP协议、路由协议。IP协议能判断发送者和接收者的两台主机是否属于同一个子网;ARP协议能使发送者知道接收者的MAC地址;路由协议能使两台主机的数据包发送接收不局限于一个子网。 1、IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGMP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP或UDP要做的事情。 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGMP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP或UDP要做的事情。 2、ARP协议 即地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。 (1)每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。 (2)主机(网络接口)新加入网络时(也可能只是mac地址发生变化,接口重启等), 会发送免费ARP报文把自己IP地址与Mac地址的映射关系广播给其他主机。 (3)网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。 (4)某个主机需要发送报文时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送 ARP 数据包,该数据包包括的内容有:源主机 IP 地址,源主机 MAC 地址,目的主机的 IP 地址等。 (5)当本网络的所有主机收到该 ARP 数据包时: A.首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包。 B.如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。 C.然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。 (6)源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。 3、路由协议 通过ARP协议的工作原理可以发现,ARP的MAC寻址还是局限在同一个子网中,因此网络层引入了路由协议,首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。 路由协议通过在路由器之间共享路由信息来支持可路由协议。路由信息在相邻路由器之间传递,确保所有路由器知道到其它路由器的路径。总之,路由协议创建了路由表,描述了网络拓扑结构;路由协议与路由器协同工作,执行路由选择和数据包转发功能。 三、传输层 传输层提供了两种到达目标网络的方式 传输控制协议(TCP):提供了完善的错误控制和流量控制,能够确保数据正常传输,是一个面向连接的协议。 用户数据报协议(UDP):只提供了基本的错误检测,是一个无连接的协议。 这一部分内容如果感兴趣留意后续文章,会有一篇专门展开来讲解两个协议的内容。 四、应用层 应用层是TCP/IP协议的最高层级,基于三层协议的支持,应用层负责处理特定的应用程序细节,定义数据格式并按照对应的格式解读数据。应用层定义了各种各样的协议来规范数据格式,常见的有 HTTP、FTP、SMTP 等。
2019-07-09

关注云语科技

wechat qrcode

微信扫一扫,获取最新资讯