1、计算机网络基础知识,教科书式教学计算机网络在IT行业的重要性IT即互联网技术,从事的工作和网络有很大的关系,前端要负责和后台 (服务器)进行交互,其必然得经过网络,所以懂点网络知识有很大的帮 助。网络模型数据处理过程传输层协议的作用提供了一种端到端(end to end)的连接,一般为前端和后台服务器的连接由于网络层只管传递数据,并不关心成功与否,TCP协议在数据丧失、损 坏的情况下保证数据的可靠性传输层协议的分类传输控制协议 TCP(Transimision Control Protocal):1 .可靠的、面向连接的协议.传输效率低用户数据报协议 UDP(User Datagram Pro
2、tocal):1 .不可靠的、无连接的服务.传输效率高TCPTCP的功能为了保证TCP是可靠的、面向连接的协议,具备以下功能:1 .将数据进行分段打包传输,如果不将数据分段打包传输,那么会导致每次 传输的数据特别大,而带宽是一定的,所以很容易造成拥塞。想象一下, 一辆火车跑在公路上的感觉。2 .对每个数据包编号控制顺序,因为数据进行了分段打包传输,而网络中的 路线不止一条,而且某些路线会有延迟的情况,没有编号,那么如何保证 到达的数据是原来的模样。想象一下,将一副大拼图从一个地方,分多条 路运往另外一个地方,并且没有编号。3 .运输中丧失、重发和丢弃处理,由于网络中的路线会有延迟,并且存在丢
3、包现象,所以会有重发等机制来保证数据的完整性。4 .流量控制防止拥塞,防止发送速率过快,让接收方来不及接收,导致发生 丢包。TCP首部源端口号和目的端口号:用来存放发送端和接收端加上IP协议首部的源 端IP及终端IP ,确认一个唯一的TCP连接。32位序号:TCP用序列号 对数据包进行标记,以便在到达目的地后重新重装,假设当前的序列号为 s ,发送数据长度为I ,那么下次发送数据时的序列号为s + l。在建立连接时 通常由计算机生成一个随机数作为序列号的初始值。32位确认序号: ACK为1时有效,上次成功收到的数据字节序号+ 1 (如接收到的为 1024-2048 ,那么返回2049 ),也是
4、下一次发送端要发送数据的序列号。4位首部长度:TCP首部的长度,单位为4字节。如果没有可选字段,那 么这里的值就是5。表示TCP首部的长度为20字节。6个保存位: URG =紧急指针; ACK = 为1表示确认序号有效; PSH =缓存区将满,接收方应尽快将此报文段交给应用层; RST =连接断了重建连接; SYN =同步序号为1 ,用来发起一个新连接; FIN = 为1表示发端完成发送任务。16位窗口大小:TCP流量控制,字节数,说明本地可接收数据段的数 目,这个值的大小是可变的。当网络通畅时将这个窗口值变大加快传输速 度,当网络不稳定时减少这个值可以保证网络数据的可靠传输。它是来在 TCP
5、传输中进行流量控制的16位检验和:包括计算TCP首部和数据综合的二进制反码和检验和。16位紧急指针:URG为1时有效,正向的偏移量,加上序号字段值表示 最后一个字节的序号。通常在暂时中断通信时使用(比方输入Ctrl + C)o三次握手和四次挥手三次握手:1 .第一次握手主机A通过一个标识为SYN标识位的数据段发送给主机B请 求连接,通过该数据段告诉主机B希望建立连接,需要B应答,并告诉主 机B传输的起始序列号.第二次握手是主机B用一个确认应答ACK和同步序列号SYNC标志位的 数据段来响应主机A , 一是发送ACK告诉主机A收到了数据段,二是通 知主机A从哪个序列号做标记。2 .第三次握手是主
6、机A确认收到了主机B的数据段并可以开始传输实际数 据。第一次握手主要是确定服务端确认客户端能够发送信号;第二次握手主要 是客户端确认服务端能够接收和发送信号;第三次握手主要是服务端确认 客户端能够接收信号四次挥手:1 .主机A发送FIN控制位发出断开连接的请求.主机B进行响应,确认收到断开连接请求2 .主机B提出反方向的关闭要求.主机A确认收到的主机B的关闭连接请求第一次挥手是服务端确认客户端需要断开连接;第二次挥手是客户端确认 服务器接收断开请;第三次挥手是客户端确认服务器数据发完,断开连 接;第四次挥手是服务端确认客户端断开连接,断开连接。所以如果服务 端的数据全部发送完,是没有第三次挥手
7、,直接进入第四次挥手。TCP流量控制和TCP拥塞控制窗口 :1 .接收端窗口 rwnd :接收端缓冲区大小。接收端将此窗口值放在TCP报文 的首部中的窗口字段,传送给发送端。2 .拥塞窗口 cwnd (congestion window):发送端缓冲区大小.发送窗口 swnd :发送窗口的上限值=Min rwnd, cwnd,当rwnd cwnd时,是接收端的接收能力限制发送窗口的最大值。当cwnd rwnd时,那么是网络的拥塞限制发送窗口的最大值拥塞控制和流量控制的差异:拥塞问题是一个全局性的问题,涉及到所有的主机、所有的路由器、以及与 降低网络传输性能有关的所有因素。流量控制往往指的是点对
8、点通信量的 控制,是个端到端的问题。流量控制所要做的就是控制发送端发送数据的速率,以便使接收端来得及 接受。拥塞控制控制的是注入网络中的数据量。流量窗口是接收方控制的,拥塞窗口是发送方控制的TCP流量控制所谓的流量控制就是接收方让发送方的发送速率不要太快,让接收方来得 及接受。利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流 量控制。TCP的窗口单位是字节,不是报文段,发送方的发送窗口不能超 过接收方给出的接收窗口的数值。假设主机A向主机B发送数据。双方确定的窗口值是400.再设每一个报 文段为100字节长,序号的初始值为seq = L图中的箭头上面大写ACK , 表示首部中的却认为
9、为ACK,小写ack表示确认字段的值。下面这张接 收窗口(rwnd)图和上面的数据不是对应的,但是能说明窗口大小调整的过 程,可以自己将下面的图进行修改,用上面的数据分析:1 .刚开始的窗口值为400字节,每段报文100字节,经过发送2次请求 后,此时已发送但未被确认的报文seq = 201为100字节,主机B向主机 A发送接收情况并调整窗口大小为300字节。2 .主机A向主机B发送301-500 ,并且重发201-300 ,主机B向主机A发 送接收情况,并调整窗口大小为100字节.主机A向主机B发送501 -600,主机B向主机A发送接收情况,并且调整 窗口大小为0 ,让A暂停发送假设B向A
10、发送了 rwnd = 0的报文段后不久,B的接收缓存又有了一些 存储空间。于是B向A发送了 rwind=400的报文段,然而这个报文段在 传送中丧失了。A 一直等待收到B发送的非零窗口的通知,而B也一直等 待A发送的数据。这样就死锁了。为了解决这种死锁状态,TCP为每个连 接设有一个持续计时器。只要TCP连接的一方收到对方的零窗口通知,就 启动持续计时器,假设持续计时器设置的时间到期,就发送一个零窗口探测 报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出 了现在的窗口值。TCP拥塞控制拥塞控制原理发送方控制拥塞窗口的原那么是:只要网络没有出现拥塞,拥塞窗口就增大 一些,以便把更
11、多的分组发送出去。但是只要网络出现拥塞,拥塞窗口就 减小一些,以减少注入到网络的分组数。拥塞控制设计从控制理论的角度来看拥塞控制这个问题,可以分为开环控制和闭环控制 两种方法:开环控制就是在设计网络时事先将有关拥塞发生的所有因素考虑周到,一 旦系统运行起来就不能在中途改正。闭环控制是基于反应环路的概念,包括如下措施:1 .监测网路系统以便检测拥塞在何时、何地发生.把拥塞发生的信息传送到可采取行动的地方2 .调整网络系统的行动以解决出现的问题。拥塞控制方法因特网建议标准RFC2581定义了进行拥塞控制的四种算法,即慢开始 (Slow-start)x 拥塞防止(Congestion Avoidan
12、ce)、快重传(Fast Restrangsmit)和快回复(Fast Recovery ) o 我们假定:1 .数据是单方向传送,而另外一个方向只传送确认.接收方总是有足够大的缓存空间,因为发送窗口的大小由网络的拥塞程度 来决定。慢开始算法最初的TCP在连接建立成功后会向网络中发送大量的数据包,这样很容易 导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能 够一开始就大量发送数据包,而只能根据网络情况逐步增加每次发送的数 据量,以防止上述现象的发生。具体来说,当新建连接时,cwnd初始化 为1个最大报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据, 每当有一个报文段被确
13、认,cwnd就增加至多1个MSS大小。用这样的 方法来逐步增大拥塞窗口 CWNDO这里用报文段的个数的拥塞窗口大小 举例说明慢开始算法,实时拥塞窗口大小是以字节为单位的。如下列图:拥塞防止算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口 cwnd加1 ,而不是加倍。这样拥塞窗口按线性规律缓慢增长。慢开始和拥塞防止轮换机制为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限 ssthresh状态变量。ssthresh的用法如下: 当cwndssthresh时,改用拥塞防止算法。 当cwnd=ssthresh时,慢开始与拥塞防止算法任意。乘法减小和加法增大乘法减小:是
14、指不管在慢开始阶段还是拥塞防止阶段,只要出现超时,就 把慢开始门限减半,即设置为当前的拥塞窗口的一半(于此同时,执行慢 开始算法)。当网络出现频繁拥塞时,ssthresh值就下降的很快,以大大 将小注入到网络中的分组数。 加法增大:是指执行拥塞防止算法后是拥塞窗口缓慢增大,以防止网络过 早出现拥塞。快重传和快恢复一条TCP连接有时会因等待重传计时器的超时而空闲较长的时间,慢开始 和拥塞防止无法很好的解决这类问题,因此提出了快重传和快恢复的拥塞 控制方法。 快重传算法并非取消了重传机制,只是在某些情况下更早的重传丧失的报 文段(如果当发送端接收到三个重复确实认ACK时,那么断定分组丧失, 立即重
15、传丧失的报文段,而不必等待重传计时器超时)。快重传要求接收 方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早 知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重 传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未 收到的报文段,而不必继续等待设置的重传计时器时间到期。如下列图: ,快恢复算法:1 .当发送方连续收到三个重复确认时,就执行“乘法减小算法,把ssthresh 门限减半。但是接下去并不执行慢开始算法。2 .考虑到如果网络出现拥塞的话就不会收到好几个重复确实认,所以发送方 现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将 cwnd设置为ssthresh减半后的大小,然后执行拥塞防止算法。如下列图:UDPUDP应用由于UDP是不可靠的、无连接的服务并且传输效率高,所以UDP应用的 特点就是需要实时数据,可以允许丢包。所以QQ、视频软件、TFTP简 单文件传输协议(短信)等都是UDP应用。UDP的实现由于在IP地址中存在一些广播地址,UDP主要是通过它们来实现的结 语:IT即互联网技术,从事的工作和网络有很大的关系,前端要负责和后 台(服务器)进行交互,其必然得经过网络,所以懂点网络知识有很大的帮 助。END本篇完