网工 Tcp

面向连接的概念:在自己监听的端口接收到连接的请求,然后经过“三次握手”,维护一定的数据结构和对方的信息,确认了该信息:我发的内容对方会接收,对方发的内容我也会接收,直到连接断开。

断开:经过“四次挥手”确保双方都知道且同意对方断开连接,然后在remove为对方维护的数据结构和信息,对方之后发送的包也不会接收,直到 再次连接。

TCP的连接不是建立了一座桥(或者虚拟的专用通道),TCP更好的比喻是在码头上增加了记录人员,核查人员和督导人员,至于IP层和数据链路层,它没有任何改造。

TCP 三次握手的过程如下(以下同时举例一个生活场景帮助理解):

过程解释

  1. 第一次握手:客户端向服务器发送一个带有SYN(同步)标志位的数据包(就好像客户端向服务器说“你好,我想和你建立连接” ),同时还会选择一个初始序列号(seq),假设为x,此时客户端进入SYN_SENT(已发送同步状态)。
  2. 第二次握手:服务器收到客户端的SYN数据包后,知道客户端要建立连接。服务器向客户端返回一个带有SYN和ACK(确认)标志位的数据包(意思是“你好,我收到你建立连接请求了,我也同意建立连接” )。其中ACK的值为客户端发送的seq + 1(即x + 1)表示确认收到客户端的信息,服务器也选择一个自己的初始序列号(假设为y),此时服务器进入SYN_RCVD(同步收到状态)。
  3. 第三次握手:客户端收到服务器的SYN + ACK数据包后,检查ACK是否正确(确认是x + 1),如果正确则向服务器发送一个带有ACK标志位的数据包(意思是“好的,我知道你收到我的请求并且同意了,那我们连接建立吧” ),ACK的值为服务器的序列号y + 1 ,此时客户端和服务器都进入ESTABLISHED(已建立连接状态),连接建立成功,可以开始传输数据了。

举例(生活场景类比)

把客户端比作小明,服务器比作一个公司的前台。

  1. 第一次握手:小明打电话给公司(类比客户端发送SYN包)说“我想找你们公司谈个业务合作”(这是表达建立联系的意图),同时自己心里默默记了个数字(初始序列号x ,比如是100 ,就好像是自己这次沟通的一个标识)。
  2. 第二次握手:前台接到电话(服务器收到SYN),然后跟小明说(回复SYN + ACK包) “好的先生,我知道您要谈业务合作(确认收到请求),我们可以合作,我是前台(类比服务器的初始序列号y ,假设是200),您的请求编号我记好了是到您了(确认号是x + 1 = 101)”。
  3. 第三次握手:小明听到前台回复(收到SYN + ACK包),确认了前台确实知道自己的请求(检查ACK是101),然后说(发送ACK包)“好的,那我现在过来(表示确认建立连接),我知道你是前台(确认序列号y + 1 = 201)” ,然后双方都知道接下来可以进行业务沟通(数据传输)了。

以下是TCP中常见标志位的作用:

1. URG(紧急标志)

  • 当设置为1时表明发送端向另一端使用紧急方式发送数据,即此报文段中有紧急数据。
  • 紧急数据不按常规的排队顺序来传送(绕过接收方缓存机制),而是系统会尽快传送。发送方的TCP会把紧急数据放到本报文段数据的最前面,紧急指针指向数据段中的某个字节(从第一个字节到指针所指的字节就是紧急数据)。

2. ACK(确认标志)

  • 当ACK = 1时表示确认号字段有效。
  • 大多数情况下该标志位是置位的,除了最初建立连接时的SYN包之外,第一次请求建立连接时ack为0 (在三次握手过程中,第二次握手ACK标志置1 ),在连接建立之后传输数据等情况下,TCP规定该位必须设置为1。
  • 接收端用确认号来给发送端反馈已经成功接收到的数据信息,其值为希望接收的下一个数据包起始序号,即意味着确认号之前的序号数据已经被接收。

3. PSH(推标志)

  • 当设置为1时,指示接收方应该尽快将这个报文交给应用层。
  • 表示需要将收到的数据立刻传给上层应用协议而无需等待缓冲区满等情况。在两个应用进程进行交互式通信时比较常用,例如客户发一个请求给服务器时希望立即能够收到对方的响应,客户应用程序可以通知TCP使用推送(push)操作。

4. RST(复位标志)

  • 当设置为1时表示连接复位。
  • 用于复位那些产生错误的连接(如因为主机崩溃或其他原因导致的错误情况);也被用来拒绝错误和非法的数据包。
  • 比如当一个没有被使用的端口即使发来了连接请求,也可以返回一个RST设置为1的包;程序宕掉或切断电源等原因导致主机重启的情况下,如果对方还在通信,原有的TCP通信也无法继续进行,若对方发过来数据则可以用RST = 1强制断开连接。

5. SYN(同步标志)

  • 在建立连接时使用,用于同步连接双方的序列号和确认应答号等信息。
  • 最初建立连接时,客户端发送SYN = 1,ACK = 0的包请求连接,服务端收到后回复SYN = 1,ACK = 1的包表示响应连接请求,在三次握手过程中SYN标志总共会出现两次(双方各一次)。

6. FIN(结束标志)

  • 当设置为1 时表示发送方完成任务,今后不会有数据发送,希望断开连接。
  • 可以由通信双方的任一方发出,表示此方向的数据传输结束。当通信结束希望断开连接,通信双方的主机之间就可以相互交换FIN位置为1的TCP段,每个主机又对对方的FIN包进行确认应答以后就可以断开连接。

TCP 流量控制和拥塞控制

  1. 序号:解决乱序的问题,确保先来后到
  2. 确认序号:发出去的包应该有确认,要不然我怎么知道对方有没有收到呢?如果没有收到就应该重新发送,直到送达。这个可以解决不丢包的问题。
  3. 窗口大小(滑动窗口):TCP 要做流量控制,通信双方各声明一个窗口,标识自己当前能够的处理能力,别发送的太快,撑死我,也别发的太慢,饿死我。(针对接收方的缓存)
  4. 窗口大小(拥塞窗口):拥塞控制(控制网络中发送的包)TCP 发送包常被比喻为往一个水管里面灌水,而 TCP 的拥塞控制就是在不堵塞,不丢包的情况下,尽量发挥带宽。水管有粗细,网络有带宽,也即每秒钟能够发送多少数据;水管有长度,端到端有时延。在理想状态下,水管里面水的量 = 水管粗细 x 水管长度。对于到网络上,通道的容量 = 带宽 × 往返延迟。

TCP 建立连接采用三次握手而不是两次握手主要有以下几个关键原因:

一、防止已失效的连接请求报文突然又传送到服务器端而产生错误(针对特殊状况)

  1. 假设采用两次握手建立连接:
    • 客户端发送一个连接请求报文(SYN)给服务器。
    • 服务器收到这个请求后,返回一个确认报文(ACK/SYN)表示同意建立连接。此时两次握手完成,连接建立。
    • 但是如果客户端发出的第一个连接请求报文在网络中延迟、阻塞,导致它在某个网络节点中滞留了很长时间。
    • 客户端在一段时间后没有收到服务器的确认,于是重新发送一个新的连接请求报文,这次新的请求正常到达服务器,经过两次握手后连接建立并完成数据传输,最后关闭连接。
    • 而此时,那个延迟的旧连接请求报文突然到达了服务器。如果是两次握手,服务器会认为这是一个新的连接请求,然后向客户端发送确认报文并建立连接,而客户端此时并不会理会这个旧的确认报文,也不会向服务器发送数据,导致服务器一直等待客户端发送数据,浪费服务器的资源。

二、三次握手才能让双方都确认自己和对方的收发能力正常

  1. 第一次握手:客户端发送 SYN 报文给服务器,服务器知道了客户端的发送能力正常,自己的接收能力正常。
  2. 第二次握手:服务器回应 SYN + ACK 报文给客户端,客户端收到后知道了自己的发送和接收能力正常,也知道了服务器的接收和发送能力正常。
  3. 第三次握手:客户端回应 ACK 报文给服务器,服务器收到后知道了自己的发送和接收能力正常,也确认了客户端的接收能力正常。

只有经过这三次信息的交互和确认,双方才能确定彼此的连接参数是可靠的,连接才能正式建立,从而为后续的数据传输提供稳定可靠的基础。因此,TCP 采用三次握手来建立连接是为了保证连接建立的可靠性和准确性,避免出现上述可能的异常情况。

TCP 协议的四次挥手过程如下(以下假设客户端主动发起连接关闭请求):

第一次挥手

  • 客户端打算关闭连接,此时客户端向服务器发送一个带有FIN(Finish,完成)标志位的TCP报文段,表示客户端不再发送数据了 。
  • 发送后客户端进入FIN_WAIT_1(终止等待1)状态 。

第二次挥手

  • 当服务器收到客户端的FIN报文后,服务器会向客户端发送一个ACK(Acknowledge,确认)报文段,表明服务器已经收到客户端的关闭请求。
  • 此时服务器进入CLOSE_WAIT(关闭等待)状态 ,客户端收到这个ACK后进入FIN_WAIT_2(终止等待2)状态。在这个阶段,从客户端到服务器这个方向的连接已经关闭(客户端不能再发数据过来),但从服务器到客户端方向的连接还未关闭(服务器如果还有数据可以继续发向客户端)。

第三次挥手

  • 当服务器完成数据发送(如果还有的话),准备关闭连接时,服务器向客户端发送FIN报文段,告知客户端服务器这边也要关闭连接了。
  • 然后服务器进入LAST_ACK(最后确认)状态,等待客户端的确认应答。

第四次挥手

  • 客户端收到服务器的FIN报文后,必须对这个FIN进行确认,向服务器发送ACK报文段。
  • 发送完成后,客户端进入TIME_WAIT(时间等待)状态。经过2倍的MSL(Maximum Segment Lifetime,报文最大生存时间)时长后,如果期间没有收到服务器重发的FIN报文,客户端就进入CLOSED(关闭)状态 。
  • 当服务器收到客户端的ACK报文后,服务器也进入CLOSED状态,至此双方的连接完全关闭。

一些相关要点和原因解释

为什么需要四次挥手而不是三次(类似三次握手那样)
主要是因为TCP是全双工通信,在关闭连接时,双方都需要单独关闭各自的发送通道和接收通道。第二次和第三次挥手之间存在服务器可能还需要发送数据给客户端的情况,不能合并成一步。

客户端为什么要等待2MSL时长(在TIME_WAIT状态)

  1. 确保最后一个ACK报文能被服务器收到,如果ACK丢失,服务器会重发FIN报文,在2MSL时间内客户端可以重新发送ACK 。
  2. 经过2MSL时长可以让本次连接中在网络中残留的报文段都消失,防止新连接中收到旧连接的残留报文而导致异常。

状态变化总结(客户端和服务器)

  • 客户端:ESTABLISHED -> FIN_WAIT_1 -> FIN_WAIT_2 -> TIME_WAIT -> CLOSED
  • 服务器:ESTABLISHED -> CLOSE_WAIT -> LAST_ACK -> CLOSED

TCP 流量控制

在 TCP 连接中,存在“半打开”和“半关闭”的状态概念:

一、半打开(Half-Open)

  1. 定义:
    • 半打开状态是指在 TCP 连接的一端异常关闭(例如主机崩溃、网络故障等),而另一端却不知道的情况。此时,正常的一端还认为连接是正常的,仍然可以向异常的一端发送数据,但异常的一端无法响应。
  2. 产生场景和示例:
    • 例如,客户端和服务器建立了 TCP 连接,在通信过程中,服务器突然发生故障(如硬件故障导致系统崩溃),但客户端并不知道服务器已经出问题。此时,从客户端的角度来看,连接还是正常的,但实际上服务器已经无法接收或处理数据,连接处于半打开状态。
    • 在这种情况下,如果客户端继续向服务器发送数据,由于服务器无法响应,这些数据可能会丢失,并且客户端可能需要经过一段时间后才能检测到连接出现问题(例如通过超时机制等)。

二、半关闭(Half-Close)

  1. 定义:
    • 半关闭是指在一个 TCP 连接中,一端已经关闭了它的输出信道(发送数据的能力),但仍然可以接收来自另一端的数据。也就是说,连接的一个方向已经关闭,而另一个方向仍然保持打开。
  2. 产生场景和示例:
    • 比如,客户端向服务器发送了一个关闭输出信道的请求(执行 shutdown(socket, SHUT_WR) 这样的操作),这意味着客户端不再向服务器发送数据,但它仍然可以接收服务器发送的数据。此时,连接处于半关闭状态。
    • 一个实际的例子是,客户端已经完成了数据的发送,但还需要接收服务器的一些响应或最后的确认信息,这时就可以使用半关闭状态。客户端关闭输出信道后,服务器可能继续发送剩余的数据,直到完成它的任务后再关闭连接

TCP 拥塞控制 (cnnd 为拥塞窗口)

慢启动算法:一开始设置为1个MSS(最大报文段)拥塞窗口,收到确认后为发送2个MSS,收到确认后发送2的3次方个MSS ,之后一直扩大。

拥塞避免算法:当到达 16个MSS 大小(上图),按照+1个MSS大小一直到发生计时器超时,这里拥塞窗口回到慢启动阶段再来,这里新的拥塞阀值为超时时拥塞窗口的一半(如上图发生拥塞是为24那么新阀值为12)。到达阀值后再进入拥塞避免算法,依次增加1个MSS大小。

TCP 拥塞控制是一种用于管理网络拥塞的机制,目的是避免网络因为过多的数据传输而发生拥塞崩溃,同时保证网络资源的公平共享和高效利用。

一、拥塞窗口(Congestion Window,cwnd)

  • 这是 TCP 用于进行拥塞控制的关键参数。
  • 它限制了发送方在未收到确认之前可以发送的数据量。
  • 初始时,拥塞窗口通常较小,然后随着数据的成功传输和确认,逐渐增大。

二、慢启动(Slow Start)

  1. 阶段特点:
    • 当一个新的 TCP 连接建立或者在长时间的空闲后重新开始传输时,拥塞窗口初始化为一个较小的值(通常是 1 个或几个 MSS,Maximum Segment Size,最大报文段长度)。
    • 每收到一个 ACK 确认,拥塞窗口就会增加一个 MSS 的大小。
    • 例如,开始时 cwnd = 1,发送一个报文段,收到确认后 cwnd = 2,再发送两个报文段,收到相应确认后 cwnd = 4,以此类推,呈指数增长。
  2. 阈值(Threshold)的引入:
    • 当拥塞窗口增长到一个特定的阈值(ssthresh,初始值通常是 65535 字节或其他根据网络状况设定的值)时,慢启动阶段结束,进入拥塞避免阶段。

三、拥塞避免(Congestion Avoidance)

  1. 增长方式变化:
    • 在拥塞避免阶段,拥塞窗口不再呈指数增长,而是每经过一个往返时间(RTT),拥塞窗口只增加 1 个 MSS(即线性增长)。
    • 这样可以更加稳定地增加数据传输量,同时降低网络拥塞的风险。
  2. 网络拥塞的检测与处理:
    • 如果发生超时重传(即发送方在一定时间内没有收到 ACK 确认),TCP 认为网络发生了拥塞。
    • 此时,将阈值 ssthresh 设为当前拥塞窗口 cwnd 的一半,拥塞窗口 cwnd 重新初始化为 1 个 MSS,然后重新进入慢启动阶段。
    • 除了超时重传,还有快速重传和快速恢复机制来处理可能的拥塞情况。

四、快速重传(Fast Retransmit)和快速恢复(Fast Recovery)

  1. 快速重传:
    • 当接收方收到一个失序的报文段时,会立即发送重复的 ACK 给发送方,表明期望收到下一个按序的报文段。
    • 当发送方连续收到三个重复的 ACK 时,就认为有报文段丢失,立即重传丢失的报文段,而不必等待超时定时器到期。
  2. 快速恢复:
    • 在快速重传之后,不执行慢启动,而是将拥塞窗口 cwnd 设为新的 ssthresh 值(即当前拥塞窗口的一半),然后线性增加 cwnd(每收到一个重复的 ACK,cwnd 增加 1 个 MSS)。
    • 当收到新的 ACK 确认新数据时,将 cwnd 恢复到拥塞避免阶段的增长方式。

例如,在一个网络中,TCP 连接开始建立,拥塞窗口初始为 1 个 MSS,经过慢启动指数增长到阈值,然后进入拥塞避免线性增长。如果出现超时重传,就重新调整阈值和拥塞窗口大小,重新开始慢启动;如果是快速重传,则进入快速恢复阶段进行相应处理。

通过超时重传和快速重传机制进行调整

  1. 超时重传
    • 当发送方在一定时间内没有收到确认(ACK)时,认为发生了超时。
    • 此时,TCP 认为网络可能出现了拥塞。
    • 处理方式是将阈值 ssthresh 设为当前拥塞窗口 cwnd 的一半,拥塞窗口 cwnd 重新初始化为 1 个 MSS,然后重新进入慢启动阶段。
    • 这种大幅度的调整可以迅速减少发送的数据量,给网络一定的时间来缓解拥塞状况。
  2. 快速重传
    • 当接收方收到一个失序的报文段时,会立即发送重复的 ACK 给发送方,表明期望收到下一个按序的报文段。
    • 当发送方连续收到三个重复的 ACK 时,就认为有报文段丢失,立即重传丢失的报文段,而不必等待超时定时器到期。
    • 随后进入快速恢复阶段,将拥塞窗口 cwnd 设为新的 ssthresh 值(即当前拥塞窗口的一半),并线性增加 cwnd(每收到一个重复的 ACK,cwnd 增加 1 个 MSS),避免了因等待超时而长时间停止数据传输,同时也能较快地恢复到正常的数据传输状态,减少了网络拥塞的可能性。

超时重传的原理

超时重传机制是 TCP 保证数据可靠传输的一个重要机制,其原理如下:

一、定时器设置

  1. 当发送方发送一个数据报文段时,它会同时启动一个定时器。
  2. 定时器的时长是根据网络的往返时间(RTT)以及一些其他因素动态计算出来的。通常,初始的定时器时长会基于一个经验值或者通过一些测量和估算方法来确定。

二、超时判断

  1. 发送方在定时器计时期间会等待接收方返回的确认(ACK)。
  2. 如果在定时器超时之前收到了确认,说明数据报文段已经成功到达接收方,发送方就会取消定时器,并继续发送下一个数据报文段。
  3. 如果定时器超时了还没有收到确认,发送方就认为该数据报文段在网络中丢失或者出现了其他传输问题。

三、重传操作

  1. 一旦发生超时,发送方会重新发送该数据报文段。
  2. 同时,发送方可能还会调整定时器的时长。例如,根据网络的拥塞状况和之前的往返时间测量结果,增加或减小定时器的时间间隔,以适应网络的变化。
  3. 重传后,再次启动定时器,继续等待确认。如果再次超时,可能会继续重传,并且可能会进一步调整定时器和拥塞窗口等参数,以应对可能的网络拥塞或其他问题。

四、RTT 测量与更新

  1. 在数据传输过程中,发送方会持续测量每个数据报文段的往返时间(RTT)。
    • 即从发送数据报文段的时刻到收到相应确认的时间间隔。
  2. 发送方会根据多个 RTT 的测量值,采用一些算法(如指数加权移动平均等)来更新定时器的时长,以使其更准确地反映当前网络的实际状况。
    • 例如,如果最近几次的 RTT 变长,说明网络状况可能变差,定时器时长可能会相应增加,以减少不必要的重传;反之,如果 RTT 变短,定时器时长可能会适当减小,以提高数据传输的效率。

练习题

TCP使用慢启动拥塞避免机制进行拥塞控制。当拥塞窗口大小为16时,发送节点出现超时未收到确认现象时,将采取的措施是(1),再经过5轮后的拥塞窗口大小为(2),则上述空格内容为() 请解答

在TCP的拥塞控制算法中,当发送节点出现超时未收到确认的现象时,它假定网络中发生了拥塞,因此需要采取措施减少发送到网络中的数据量以避免进一步的拥塞。具体措施如下:

  1. 慢启动阈值(ssthresh)的更新:当检测到超时时,慢启动阈值ssthresh会被设置为当前拥塞窗口cwnd的一半(为了避免除以奇数出现的小数一般会向下取整),但最少要大于2。如果当前拥塞窗口大小为16,则新的慢启动阈值ssthresh应该是8(16的一半)。
  2. 拥塞窗口(cwnd)的重置:超时发生后,拥塞窗口cwnd会被重置为1个MSS(Maximum Segment Size,最大报文段长度)。这是为了重新开始慢启动过程,逐步增加发送速率直到再次达到ssthresh或遇到网络拥塞。
  3. 慢启动与拥塞避免:当cwnd等于ssthresh时,从慢启动阶段转换到拥塞避免阶段。在慢启动阶段,每收到一个ACK,cwnd增加一个MSS;而在拥塞避免阶段,每一轮次(每次接收到与cwnd数量相等的ACK)增加一个MSS。

根据上述规则,当拥塞窗口大小为16时,出现超时后,采取的措施是将cwnd减少为1(即1个MSS),并将ssthresh设置为8。

接下来,经过5轮次(假设每轮成功收到ACK并且没有发生进一步的超时)后的拥塞窗口大小计算如下:

  • 第1轮后:cwnd = 1 (慢启动阶段)
  • 第2轮后:cwnd = 2 (慢启动阶段)
  • 第3轮后:cwnd = 8 (拥塞避免阶段,每次增加1 MSS)达到阈值大小后cwnd增加一个MSS
  • 第4轮后:cwnd = 9
  • 第5轮后:cwnd = 10

因此,再经过5轮后的拥塞窗口大小为10。

网工 udp

  1. udp 协议的特点:
    • 无需事先建立连接(和对方打招呼)也不管网络连通性
    • 包丢了就丢了,不保证网络包的顺序到达
    • 不管网络环境是否拥塞,完全听众上层应用
  2. udp 的使用场景
    • 网络环境好,不易丢包(或者说对丢包不敏感的应用)
    • 不需要一对一沟通,适用广播或者多播的协议。例:dhcp 、vxlan,使用D类地址组播IGMP 协议
  3. 基于 udp 的使用场景
    • QUIC Quick UDP Internet Connections 协议(快速 UDP 互联网连接)是 Google 提出的一种基于 UDP 改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验。
    • 大多数流媒体协议
    • 采用自定义的可靠 UDP 协议,自定义重传策略,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成的影响。
    • IOT 物联网:推出了物联网通信协议 Thread,就是基于 UDP 协议的。
    • 移动流量上网的数据面对的协议 GTP-U 是基于 UDP 的。因为移动网络协议比较复杂,而 GTP 协议本身就包含复杂的手机上线下线的通信协议。

TCP面向字节流与UDP面向报文的区别

UDP(用户数据报协议)面向报文,TCP(传输控制协议)面向字节流,它们的区别如下:

一、数据传输单位

  • UDP面向报文
    • UDP把应用层交下来的数据添加首部后,就直接交付给IP层,既不合并,也不拆分,而是保留这些报文的边界。
    • 例如,应用层一次性传递1000字节的数据给UDP,UDP就会把这1000字节当作一个整体(一个报文)发送出去,在接收端也会一次性收到1000字节的完整数据。
    • 如果应用层传的报文大小超过了网络MTU(最大传输单元),则在IP层会进行分片,但对于UDP来说,它本身不关心也不知道IP层的分片操作。
  • TCP面向字节流
    • TCP把应用层交下来的数据看成一连串无结构的字节流,它不保留报文的边界。
    • 例如,应用层先后发送了两个1000字节的数据,TCP可能会根据当前的网络状况和自身的拥塞控制机制,把这2000字节数据划分成多个小的数据段进行发送,也可能会把它们合并成一个较大的数据段发送。
    • 在接收端,接收方的TCP把收到的数据放入接收缓冲区,应用程序可以根据自己的需求,在合适的时候从缓冲区读取任意数量的字节,因此接收方读取数据的次数和每次读取的数据量都是不确定的。

二、传输可靠性

  • UDP面向报文
    • UDP是不可靠的传输协议,它没有像TCP那样的确认、重传、拥塞控制等机制来保证报文的可靠传输。
    • 发送方UDP将报文发送出去后,并不关心报文是否正确到达接收方,也不会因为网络拥塞等原因而调整发送速率。
    • 因此,UDP适用于对实时性要求高、但对数据准确性要求相对较低的场景,如视频会议、直播等。
  • TCP面向字节流
    • TCP是可靠的传输协议,通过序列号、确认应答、超时重传、滑动窗口、拥塞控制等机制来保证数据的可靠传输和有序到达。
    • 对于发送的每一个字节的数据,都有相应的序列号进行标识,接收方会对接收到的数据进行确认应答,发送方如果在一定时间内没有收到确认,就会重传数据。
    • 这些机制确保了TCP能够在各种网络环境下,尽可能准确地将数据按序传输到接收方,适用于对数据准确性要求高的场景,如文件传输、电子邮件等。

三、数据处理方式

  • UDP面向报文
    • UDP的应用程序必须选择合适大小的报文。如果报文过大,在IP层分片后,若其中一个分片丢失,就会导致整个报文的丢失;如果报文过小,则会降低网络传输效率。
    • 由于UDP一次交付一个完整的报文,因此接收方的UDP在向上交付数据时,交付给应用层的也是一个完整的报文。应用程序需要根据报文的边界来识别不同的报文数据。
  • TCP面向字节流
    • 应用程序不必考虑数据的大小和边界问题,它只需关注从接收缓冲区读取数据的逻辑。
    • 例如,应用程序可以先读取一部分数据进行处理,然后再根据需要继续读取剩余数据,而不必关心这些数据在原始字节流中的位置和边界。
    • TCP的接收方会根据序列号将乱序到达的数据重新排序,然后放入接收缓冲区供应用程序读取。

网工 安全部分

内容
第一部分 网络安全概念
第二部分 病毒防治
第三部分 网络攻击以及防御
第四部分 数据加密
第五部分 数字签名
第六部分 安全认证
第七部分 网络安全协议
第八部分 网闸
第九部分 防火墙
第十部分 入侵检测技术
第十一部分 虚拟专用网
第十二部分 安全审计
第十三部分 等级保护

网工 论园区网的安全升级改造

摘要:

随着信息技术的迅猛发展和网络空间安全威胁的增加,国家对于信息安全的重视程度也在不断提升。2022年5月;集团总部对下属各单位信息系统安全作出指示并要求如下 :一是提高信息系统安全等级,确保达到《信息安全技术网络安全等级保护基本要求》中的二级标准;二是加强员工的信息安全意识教育;三是建立健全信息安全管理体系。任务下达后公司领导对此高度重视并作出部署,委派并任命我负责信息系统安全建设负责人。基于公司实际情况,我对相关工作作出调整,并将方案提交上级审核。对本次信息安全升级改造提出如下目标:一、通过并取得《信息安全技术网络安全等级保护要求》二级资质;二、组织各部门对信息系统中的安全风险进行评估通过邮件统一收集上报,;三、识别潜在的风险和威胁提出改相应改善措施。在团队共同努力下,项目得以顺利推进。最终我们成功获得了由公安机关颁发的信息安全等级保护二级资质,有效减少了来自互联网的Web攻击,增强了边界防护能力,并且提高了主机层面漏洞检测的频率和效率。这些成就不仅得到了集团领导的认可,也受到了用户的好评。

摘要:

本文主要讨论某传统制造企业信息安全改造,该企业主要的业务系统有MES(生产制造系统)、WMS(仓库管理系统)、SAP(企业资源规划)、OA(办公流程自动化)、CRM(客户资源管理)、邮件系统等。各业务系统及网络环境建设投入主要保障业务的可用性,在后续的使用过程中因为各种安全问题造成业务连续性中断时有发生;随着后续业务系统的不断接入,现有网络环境对企业的业务系统的可靠性、可用性、安全性构成的严峻的挑战;作为信息中心的运维负责人针对上述问题由我组织召开了信息安全会议,会议针对公司网络环境安全性提出不限于主要包括如下几点改造要求:1、网络出口线路改造;2、安全防护设备添加;3、系统安全策略修改;4、完善信息安全管理制度与培训。项目从2022年5年开始,于2022年11月结束,总投资200万元。经过为期7个月的升级改造,网络安全性显著增强,系统漏洞明显减少,保障了业务系统连续性、提高了企业员工安全意识,得到了集团领导和用户的肯定。项目施工过程中对磁盘访问速率没有缺憾,期待在后期的运维过程中加以改善。

2022年5月,集团总部发布文件要求下属子公司对信息系统进行全面排查,内容涵盖中心机房及弱电间的物理安全、边界防病毒安全、办公用机及服务器的终端安全、对外服务系统的应用安全、各系统数据安全以及安全制度的完善等方面。同时,要求各业务系统通过《信息安全技术等级保护测评要求》二级评审。

作为公司信息部门的主管,我被公司领导委派全面负责落实此次信息安全建设任务。根据公司的实际情况,我组织召开了跨部门的信息安全会议,邀请各部门负责人参与讨论。会上,我们对所有业务系统进行了详细评估,并收集了关键业务系统的运行状况数据。基于这些信息,我们将整个网络环境划分为不同的安全区域,并推行了区域责任制的安全管理方式。这样做的目的是确保每位员工都明确自己在维护信息安全方面所承担的责任,并能有效执行相应的安全措施。

业务现状:原有的业务系统主要侧重于业务可用性的开发和维护,在信息安全等级保护方面考虑不足。在网络安全、物理安全、主机安全、应用安全、数据安全以及安全制度等方面存在诸多不足。根据各部门反馈的信息及过往发生的安全事件,我们进行了全面梳理:1、过去几年里因为运营商线路切割或者道路工程施工造成网络中断平均每年发生2到3次;2、MES系统因为弱密码被入侵2次;3、主机中毒造成系统宕机2次;4、数据备份磁盘故障导致文件缺失3次;5、在省级的护网行动中因为防火墙系统漏洞被通报1次;6、邮箱垃圾邮件频发;7、弱电机房因温度过高导致光纤转发器故障5次,8、业务系统和服务器的维护巡检记录流于形式,未能起到应有的作用。结合上述状况和此次安全评审要求,安全小组对此次信息安全改造和升级进行了详细的评估,项目预估改造升级费用达100万元,项目耗时2个月。制定项目的总体目标如下:一、打造一个安全稳定的网络环境、保障运营商线路故障可切换,防范常见SQL注入、XSS攻击确保业务连续性;加强密码策略防止未经授权的访问,定期检测系统漏洞加固系统安全;完善数据备份策略杜绝数据缺失。二、通过市公安机关信息安全等级测评、力争取得2级等保资质;三、加强信息安全制度建设和强化员工信息安全教育培训。以下针对上述目标实施过程进行阐述。

构建安全稳定的网络环境

1)、更新防火墙设备:公司网络边界原为一台思科防火墙因为购入较早、厂家已经停止维护,淘汰替换换为2台华为USG6306E构成一主一备、实现设备级故障的冗余。2)、增强网络连接可靠性:原运营商线路为一根移动500M商务专线、存在单点故障的风险。新增一根电信500M商务专线实现双出口备份提升网络可靠性和可用性。3)、优化网络区域:防火墙区域主要划分为内部区域、外部区域、DMZ区域。根据各业务系统类型对外提供访问的有OA、CRM、邮件系统放置在DMZ区域、WMS/MES/SAP系统放置在内部区域、DMZ区域集成华为防火墙IPS、Av 防病毒功能有效阻断网络木马、蠕虫、病毒等入侵行为。4)、定期漏洞扫描与修复:内部区域部署华为漏洞扫描VSCAN1000定期对关键服务系统进行扫描、发现并评估潜在的安全漏洞,并及时进行补救,提升系统安全性,减少攻击面,避免数据泄露。5)、终端安全管理:终端安全部署了奇安信天擎终端管理系统,通过奇安信天擎管理中心对所有终端进行统一查杀和漏洞修复,实现全网终端健康状态的实时监测。通过上述举措,公司的网络和系统安全得到了显著提升,不仅增强了抵御外部威胁的能力,也提高了内部系统的稳定性和数据保护水平。

等级保护2.0

因为公司主要业务系统针对内部用户和客户、代理商等;系统故障不会对公众秩序和国家安全带来损害。根据《信息安全技术 网络安全等级保护基本要求》等级划分适用于一般信息系统(简称2级),将确定的安全保护等级报备给市网安部门。经过第三方测评机构评估,依据等保2.0二级测评概述采取以下安全措施:

1)、物理安全:中心机房消防系统布置灭火气体(七氟丙烷)、自动喷水装置、烟雾探测报警系统。电源保护布置UPS不间断系统、电流过载保护;环境控制:温湿度控制系统、防尘静电板、机房出入 口门禁与视频监控;巡检与进出记录等。

2)、通信安全:运营商双出口线路冗余、防火墙采用双机热备技术,新增一条500M保障业务带宽,根据业务应用配置QOS 保证关键业务带宽。总部和分支通信租用SD-WAN线路,总部和下级单位架设IPSEVVPN 作为备用,达到通信线路加密和双向认证。移动办公采购飞连VPN结合AD认证接入访问内部系统。

3)、边界安全:防火墙安全区域划分trust/untrust/DMZ、配置安全策略实施访问控制,开启AV/IPS功能实现4-7层安全防护;对外提供服务的应用(OA、CRM等)购买云WAF 防护对web应用进行重定向,拦截恶意请求;添加堡垒机实现对数据中心服务器和关键数据库的审计与访问限制,记录所有用户的访问行为包括命令行输入、文件传输、运程桌面会话等。添加上网行为管理对内外双向访问进行审计。

4)、计算安全:设置强密码策略增强账号安全性、安装防病毒终端、部署监控主机对硬件和关键服务进行监控、及时对系统故障进行短信加微信报警,通过漏洞扫描系统及时识别系统中漏洞,更新系统最新补丁;结合完整备份和增量备份定期对文件系统和数据库系统进行备份。

5)、安全管理策略与制度:根据公司实际情况制定信息安全总体方针、包括信息安全目标、范围、原则框架。成立信息安全小组 ,定义部门岗位明确职责分工;建立健全的信息安全管理制度,涵盖风险评估、应急响应、安全培训等方面。

信息安全制度建设与培训

通过建立完善的信息安全制度和持续的信息安全培训,公司可以提升员工的信息安全意识和技能,有效防范和应对各类安全威胁,保障业务系统的稳定运行和数据的安全。

以满足业务连续性和可靠性为基础,实施等级保护及风险管理,确保信息安全以及实现持续改进的目的等内容作为本单位信息安全工作的总体方针。以信息网络的硬件、软件及其系统中的数据受到保护,电子数据能够永久保存而不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统出错时能够快速地恢复运行,信息服务基本不中断为总体目标。项目出台了以下文件:

  •     《安全监督和检查管理规定》
  •     《环境和资源管理管理规定》
  •     《安全人员及培训管理规定》
  •     《运行和维护管理规定》
  •     《管理机构管理规定》
  •     《备份和应急预案管理规定》

通过项目组全体人员为期3个月努力,顺利完成了集团总部领导下达的任务,通过了第三方安全测评机构等保2.0业务系统定级要求,获得了市公安机关颁发的《信息安全技术 网络安全等级保护基本要求》二级资质。为企业构建一个安全稳定的网络环境,为用户提供了一个健康干净的作业土壤,为企业运营打造一个可持续运行的业务系统。美中不中之处是无线业务的用户认证系统还未和企业的单点登录认证进行集成、还在业务的开发阶段,有待后期和企业的AD认证进行统一绑定,实现用户一次登录多系统访问。未来,我们将继续努力,不断完善信息安全管理体系,确保公司信息系统在日益复杂的信息安全环境中和时代同行。

网工 论云安全设计

摘要:
随着信息化的快速发展,云计算技术给基础设施、应用、数据和 I 运营等方面带来了很大的革新。但单位原有的机房规划没有考虑到上云后的相关网络安全,云部署后资源集中使云平台更容易成为黑客攻击的目标,云上的安全问题也更加突出。2020 年上半年,本人作为某市三甲医院的信息科负责人参与了本院新建云 + 业务运营模式的云网络安全保护的规划和设计,为了保证云网络安全项目切实符合需求,针对云数据中心的安全防护问题,通过网络设备的虚拟化,网络区域的划分和部署相关安全管理设备等方案来解决,最后确定了约 120 万左右的项目预算,项目具体实施时间为两个月。具体的方案和部署方案包括云安全网络边界的划分和防护、安全控制措施选择和部署、网络攻击安全防护、相关的安全管理制度四个方面。项目实施后,取得了良好的效果。

正文:
随着信息化的快速发展,云计算技术给传统的 IT 基础设施、应用、数据和 IT 运营等方面带来了很大的变化,对于安全管理来说,有挑战也有机遇。传统云平台安全架构仅能够对用户提供通用的安全策略,不能适用于所有用户。在 2020 年上半年,本人作为某某市三甲医院的信息科负责人参与了本院新建云 + 业务运营模式的云网络安全保护的规划和设计。为了保证云网络安全项目切实符合需求,我和信息科同事前期做了大量的调研工作,资源集中使云平台更容易成为黑客攻击的目标,云上的安全问题也更加突出。目前在云网络安全方面的问题主要是从网络安全部分、主机安全部分、虚拟机资源安全部分、数据安全和备份恢复等几个方面考虑。最终结合当前的技术、业务和设备,确定了约 120 万左右的项目预算,项目的实施时间为 2 个月左右,具体为云安全网络边界的划分和防护、安全控制措施选择和部署、安全防护和相关的安全管理制度四个方面。

一、云网络安全域的划分
安全域是由一组具有相同安全保护需求,并相互信任的系统组成的逻辑区域,在同一个安全域中的所有系统共享相同的安全策略。我们通过安全域的划分,把本院原有的整体的大规模复杂系统的安全问题,划分成更小区域的安全保护问题,这样能够实现大规模复杂信息系统的有效安全保护。按照安全域的思想,从保障云计算业务安全为出发的和立足点,把网络系统划分成不同的安全区域,并且进行纵深防护。根据本院数据中心的实际情况以及安全等级防护要求,安全域的划分如下所示:
核心交换区:由两台同样型号的支持虚拟交换的华为 S7706 高性能交换机组成,先将两台华为 S7706 交换机虚拟化,负责本院整体的云计算系统内部网络信息的整体的通信交换。
核心业务生产区:主要由本院四台同样型号的 IBM3650X 服务器组成,通过裸金属架构,并且通过多虚多的方式,将服务器池分成本院主 HIS 服务器,社区卫生服务中心 HIS 服务器、LIS 服务器,PACS 服务区和本院内部 OA 服务器。并且根据保护等级的不同,将其细分成三个保护子区。本院 HIS 主服务器和社区卫生服务中心 HIS 服务器的要求保护等级最高,将这两个虚拟化服务器规划为保护等级最高的一级保护子区中;LIS 服务器和 PACS 服务器的要求保护等级其次,将这两个虚拟化服务器规划为保护等级其次的二级保护子区中;OA 服务器的保护要求最低,将 OA 服务器放入到三级保护子区中。另外,为了保证这几个不同等级的生产子区域的通信交换,单独划分了一个负责信息交换的数据交换子区域。

互联网交换接入区:主要包括了由两台华为 S7705 交换机、两台带路由器功能的深信服防火墙组成。并且对两台华为 S7705 交换机做了虚拟化设置,提升了交换机的性能,增加了整体外部网络的通信可靠性。两台带路由器功能的防火墙也做了虚拟化,整体互联网交换性能和防护性能也得到了提升,保证了本院外部网络通信的安全。

存储接入区:本院的存储是由一台存储服务器和一个由 20 块 300G 的 SAS 硬盘存储的磁带库组成,为了提升数据的可靠性,我们对存储的磁盘阵列做了优化。对于本院的主要 his 服务器的存储,我们通过 raid10 的方式将 16 块硬盘组成磁盘阵列,在提升数据通信的性能的同时,也增加了其可靠性,另外对其配备了一块热备盘,在 raid10 组磁盘阵列出现问题时进行及时的替换。对于本院其他次要业务的存储,我们通过 raid5 的方式将三块硬盘组成磁盘阵列,在提升可靠性的同时,兼顾了性价比。

二、安全控制措施选择和部署
在完成整体的云平台的安全区域划分后,我们根据安全区域的划分结果,设计和部署了相应的安全机制和措施进行有效防护。为了保障云平台数据中心以及其承载的业务安全,分别根据网络所承载的数据的类型,进行单独的组网。

管理网络:本院的主要物理设备是承载虚拟机的基础资源,所以对其应该进行严格的管理控制,所以我们安装了独立的监控管理系统来保障物理设备的安全性。同时对整体的物理设备进行可视化的管理,在中心机房入口处配置了整体的硬件系统的运行情况可视化屏幕,可以对所有中心机房的物理设备进行监控,如果物理设备出现问题将会在屏幕上进行可视化的报警提醒,并且会有报警信息通过短信的形式分别发送的本院信息中心负责人和分管信息化的院长的手机中,及时通知问题的存在。

存储网络:对于数据存储,我们采用了 NAS 的方式进行数据传输,并将存储网络独立出来,与其他网络进行隔离。

迁移网络:虚拟机可以在不同的云计算节点或者主机之间进行迁移,为了保障进行迁移时的可靠性,我们也将迁移网络独立出来。

三、安全防护
根据本院云数据中心的部署规划,医院业务的特殊性,应用和业务量非常大也非常的丰富,这样必然会各种各样对信息系统的攻击,如 DDOS、木马和病毒和内部人员窃取信息等攻击行为。根据以上问题,本院配备了虚拟机防火墙保护虚拟主机的安全,并且在数据中心安装了异常流量分析设备来分析是否有异常流量的产生,并对其进行及时的报警。在本院汇聚交换机和所有业务主机上安装了基于 vxlan 的安全防护软件,对所有的主机 mac 地址进行认证,防止非法主机的接入,对业务主机进行 usb 端口的全关闭,防止有人通过 USB 接口入侵本院的网络系统。并且安装了企业级的杀毒软件每天定时进行杀毒并定时进行病毒库的更新。

四、安全管理制度
整体的云网络安全目标的实现,仅仅靠技术是不够的,先进的技术还需完善管理制度的配合。为了避免人为操作导致的网络安全事件的发生,我们制定了《关于 XX 市 XX 医院安全管理制度和操作流程》来杜绝人为因素给网络安全带来的隐患。通过完善机房管理制度、设备管理制度和弱电间及线路管理制度来保证物理设备的安全;通过制定系统运维制度来保证系统的持续稳定安全运行,并且通过权限管理制度保证责权到人。并且我们还定期开展安全教育,使本院所有医务人员具有安全意识和责任意识,确保各项规章制度的顺利执行。

五、总结

通过两个月的全面细致的设计部署,总工期两个月的云网络安全项目部署顺利通过相关专家组的验收,实施至今能够有效的保护云数据中心网络的安全。通过网络设备虚拟化,网络安全区域的划分,安装虚拟防火墙和通过 vxlan 技术保护院区主机设备等方法,避免内部虚拟化环境和内部网络环境受到外部的攻击,取得了很好的正面效果,并且在时间、成本、质控方面也达到了预期的效果。因为资金原因,在整体的网络安全规划与设计中,没有加入堡垒机和蜜罐设备应对外部网络的攻击,但是在整体规划中我们留下了扩展的空间,在未来的云网络安全项目实施中,在资金充足的情况下,我们打算对其进行补充。