计算机网络 第5章(运输层)

系列文章目录

计算机网络 第1章(概述)
计算机网络 第2章(物理层)
计算机网络 第3章(数据链路层)
计算机网络 第4章(网络层)
计算机网络 第5章(运输层)
计算机网络 第6章(应用层)


文章目录

  • 系列文章目录
  • 1. 概述
    • 1.1 概念
    • 1.2 总结
  • 2. 运输层端口号、复用与分用的概念
    • 2.1 为什么用端口号
    • 2.2 发送方的复用和接收方的分用
    • 2.3 TCP/IP体系的应用层常用协议所使用的运输层熟知端口号
    • 2.4 运输层传输流程
  • 3. UDP和TCP的对比
    • 3.1 概念
    • 3.2 用户数据报协议UDP(User Datagram Protocol)
    • 3.3 传输控制协议TCP(Transmission Control Protocol)
    • 3.4 总结
  • 4. TCP的流量控制
    • 4.1 概念
    • 4.2 总结
  • 5. TCP的拥塞控制
    • 5.1 概念
    • 5.2 拥塞控制的算法
      • 5.2.1 慢开始和拥塞避免
        • 5.2.1.1 慢开始(slow-start)
        • 5.2.1.2 拥塞避免(congestion avoidance)
        • 5.2.1.3 两个算法完整示意图
      • 5.2.2 快重传和快恢复
        • 5.2.2.1 快重传(fast retrasmit)
        • 5.2.2.2 快恢复(fast recovery)
        • 5.2.2.3 改进后的整体算法的示意图
  • 6. TCP超时重传时间的选择
  • 7. TCP可靠传输的实现
  • 8. TCP的运输连接管理
    • 8.1 概念
    • 8.2 TCP的连接建立
      • 8.2.1 TCP的连接建立要解决以下三个问题
      • 8.2.2 TCP使用“三报文握手”建立连接
      • 8.2.3 总结
    • 8.3 TCP的连接释放
      • 8.3.1 TCP通过“四报文挥手”来释放连接
      • 8.3.2 TCP保活计时器的作用
  • 9. TCP报文段的首部格式


1. 概述

1.1 概念

进程之间的通信

在这里插入图片描述

  • 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层
  • 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到三层(到网络层)的功能。

在这里插入图片描述

进程之间通信流程

在这里插入图片描述

“逻辑通信”是指运输层之间的通信好像是沿水平方向传送数据,但事实上,这两条数据并没有一条水平方向的物理连接,要传送的数据是沿着图中上下多次的虚线方向传送的

进程Ap1与Ap4之间进行基于网络的通信,进程Ap2与Ap3之间进行基于网络的通信

在运输层使用不同的端口,来对应不同的应用进程

然后通过网络层及其下层来传输应用层报文

接收方的运输层通过不同的端口,将收到的应用层报文,交付给应用层中相应的应用进程

这里端口并不是指看得见、摸得着的物理端口,而是指用来区分不同应用进程的标识符

在这里插入图片描述

1.2 总结

在这里插入图片描述

在这里插入图片描述

2. 运输层端口号、复用与分用的概念

2.1 为什么用端口号

在这里插入图片描述

2.2 发送方的复用和接收方的分用

在这里插入图片描述

多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)发送数据称为 复用

多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)接收时叫做 分用

2.3 TCP/IP体系的应用层常用协议所使用的运输层熟知端口号

在这里插入图片描述

2.4 运输层传输流程

举例

在这里插入图片描述

在浏览器输入域名,回车浏览

然后用户PC中的DNS客户端进程会发送一个DNS查询请求报文

DNS查询请求报文需要使用运输层的UDP协议

首部中的源端口字段的值,在短暂端口号49151~65535中挑选一个未被占用的,用来表示DNS客户端进程

首部中的目的端口字段的值:53,是DNS服务器端进程所使用的熟知端口号

在这里插入图片描述

之后,将UDP用户数据报封装在IP数据报中,通过以太网发送给DNS服务器

在这里插入图片描述

DNS服务器收到该IP数据报后,从中解封出UDP用户数据报

UDP首部中的目的端口号为53,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS查询请求报文,交付给本服务器中的DNS服务器端进程

DNS服务器端进程解析DNS查询请求报文的内容,然后按其要求查找对应的IP地址

之后,会给用户PC发送DNS响应报文,DNS响应报文需要使用运输层的UDP协议封装成UDP用户数据报

其首部中的源端口字段的值设置为熟知端口号53,表明这是DNS服务器端进程所发送的UDP用户数据报,目的端口的值设置为49152,这是之前用户PC中发送DNS查询请求报文的DNS客户端进程所使用的短暂端口号

在这里插入图片描述

将UDP用户数据报封装在IP数据报中,通过以太网发送给用户PC

在这里插入图片描述

用户PC收到该数据报后,从中解封出UDP用户数据报

UDP首部中的目的端口号为49152,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS响应报文,交付给用户PC中的DNS客户端进程

DNS客户端进程解析DNS响应报文的内容,就可知道自己之前所请求的Web服务器的域名对应的IP地址

现在用户PC中的HTTP客户端进程可以向Web服务器发送HTTP请求报文(和DNS发送和接收流程差不多)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. UDP和TCP的对比

3.1 概念

  • UDP 和 TCP 是TCP/IP体系结构运输层中的两个重要协议
  • 当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道
  • 当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道

可靠信道与不可靠信道

在这里插入图片描述

  • 两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。
  • TCP 传送的数据单位协议是 TCP 报文段(segment)。
  • UDP 传送的数据单位协议是 UDP 报文用户数据报

在这里插入图片描述

UDP的通信是无连接的,不需要套接字(Socket)

TCP是面向连接的,TCP之间的通信必须要在两个套接字(Socket)之间建立连接

3.2 用户数据报协议UDP(User Datagram Protocol)

可以发送广播

在这里插入图片描述

可以向某个多播组发送多播

在这里插入图片描述

还可以发送单播

在这里插入图片描述

UDP 支持单播、多播以及广播

换句话说,UDP支持一对一,一对多,以及一对全的通信

运输过程:

在这里插入图片描述

UDP对应用进程交下来的报文既不合并也不拆分,而是保留这些报文的边界

换句话说,UDP是面向应用报文的

UDP向上层提供无连接不可靠传输服务

在这里插入图片描述

UDP结构

在这里插入图片描述

3.3 传输控制协议TCP(Transmission Control Protocol)

使用TCP协议的通信双方,在进行数据传输之前,必须使用“三报文握手”建立TCP连接

在这里插入图片描述

TCP连接建立成功后,通信双方之间就好像有一条可靠的通信信道,通信双方使用这条基于TCP连接的可靠信道进行通信

在这里插入图片描述

很显然,TCP仅支持单播,也就是一对一的通信

运输过程

在这里插入图片描述

发送方:

  • TCP会把应用进程交付下来的数据块看作是一连串无结构的字节流,TCP并不知道这些待传送的字节流的含义
  • 并将他们编号,并存储在自己发送缓存中
  • TCP会根据发送策略,提取一定量的字节构建TCP报文并发送

接收方:

  • 一方面从所接受到的TCP报文段中,取出数据载荷部分并存储在接收缓存中;一方面将接收缓存中的一些字节交付给应用进程
  • TCP不保证接收方应用进程所收到的数据块与发送方发送的数据块,具有对应大小的关系(例如,发送方应用进程交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块,就把收到的字节流交付给了上层的应用进程,但接收方收到的字节流必须和发送方应用进程发出的字节流完全一样)
  • 接收方的应用进程必须有能力识别收到的字节流,把它还原成有意义的应用层数据

TCP是面向字节流的,这正是TCP实现可靠传输、流量控制、以及拥塞控制的基础

本图只画了一个方向的数据流,在实际网络中,基于TCP连接的两端,可以同时进行TCP报文段的发送和接收

TCP向上层提供面向连接的可靠传输服务

在这里插入图片描述

TCP结构

在这里插入图片描述

3.4 总结

在这里插入图片描述

4. TCP的流量控制

4.1 概念

在这里插入图片描述
举例

在这里插入图片描述

上图主机A现在可将发送缓存中序号1~200的字节数据全部删除,因为已经收到了主机B对它们的累计确认

在这里插入图片描述

上图主机A现在可将发送缓存中序号201~500的字节数据全部删除,因为已经收到了主机B对它们的累计确认

在这里插入图片描述

在这里插入图片描述

上图主机A现在可将发送缓存中序号501~600的字节数据全部删除,因为已经收到了主机B对它们的累计确认

在这里插入图片描述

在这里插入图片描述

上图如果零窗口探测报文在发送过程中如果丢失,还是能打破死锁局面

因为零窗口探测报文段也有重传计时器,重传计时器超时后,零窗口探测报文段会被重传

4.2 总结

在这里插入图片描述

5. TCP的拥塞控制

5.1 概念

在这里插入图片描述

网络拥塞往往是由许多因素引起的。例如:

  • 点缓存的容量太小;
  • 链路的容量不足;
  • 处理机处理的速率太慢;
  • 拥塞本身会进一步加剧拥塞;

拥塞控制的一般原理

  • 拥塞控制的前提:网络能够承受现有的网络负荷。
  • 实践证明,拥塞控制是很难设计的,因为它是一个动态问题
  • 分组的丢失是网络发生拥塞的征兆而不是原因。
  • 在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化、甚至发生死锁的原因。

开环控制和闭环控制

在这里插入图片描述

监测网络的拥塞

主要指标有:

  • 由于缺少缓存空间而被丢弃的分组的百分数;
  • 平均队列长度;
  • 超时重传的分组数;
  • 平均分组时延;
  • 分组时延的标准差,等等。

上述这些指标的上升都标志着拥塞的增长。

5.2 拥塞控制的算法

在这里插入图片描述

在这里插入图片描述

真正的发送窗口值 = Min (接收方窗口值,拥塞窗口值)

下图的实例横纵坐标的意思

传输轮次:

  • 发送方给接收方发送数据报文段后,接收方给发送方发发回相应的确认报文段
  • 一个传输轮次所经历的时间其实就是往返时间,往返时间并非是恒定的数值
  • 使用传输轮次是为了强调把拥塞窗口所允许发送的报文段都连续发送出去,并受到了对已发送的最后一个报文段的确认

拥塞窗口:

  • 它会随网络拥塞程度,以及所使用的拥塞控制算法动态变化

5.2.1 慢开始和拥塞避免

5.2.1.1 慢开始(slow-start)
  • 目的:用来确定网络的负载能力或拥塞程度。
  • 算法的思路:由小到大逐渐增大拥塞窗口数值。
  • 两个变量:

拥塞窗口(cwnd):初始拥塞窗口值:2 种设置方法。窗口值逐渐增大。
(1)1 至 2 个最大报文段 (旧标准)
(2)2 至 4 个最大报文段 (RFC 5681)

慢开始门限(ssthresh):防止拥塞窗口增长过大引起网络拥塞。

在这里插入图片描述

在这里插入图片描述

图中swnd是发送窗口

每经过一个传输轮次,拥塞窗口就加倍

窗口大小按指数增加,2的n-1次方

5.2.1.2 拥塞避免(congestion avoidance)
  • 思路:让拥塞窗口 cwnd 缓慢地增大,避免出现拥塞。
  • 每经过一个传输轮次,拥塞窗口 cwnd = cwnd + 1。
  • 使拥塞窗口 cwnd 按线性规律缓慢增长。
  • 在拥塞避免阶段,具有 “加法增大” (Additive Increase) 的特点。

在这里插入图片描述

如果在发送过程中出现部分报文段丢失,这必然会造成发送方对这些丢失报文段的超时重传

在这里插入图片描述

这个时候又回到了慢开始

在这里插入图片描述

在这里插入图片描述

5.2.1.3 两个算法完整示意图

在这里插入图片描述

5.2.2 快重传和快恢复

在这里插入图片描述

5.2.2.1 快重传(fast retrasmit)

在这里插入图片描述

5.2.2.2 快恢复(fast recovery)

在这里插入图片描述

5.2.2.3 改进后的整体算法的示意图

在这里插入图片描述

6. TCP超时重传时间的选择

在这里插入图片描述

如果超时重传时间RTO的值设置得比RTT0的值小很多,这会引起报文段不必要的重传,使网络负荷增大

在这里插入图片描述

如果超时重传时间RTO的值设置得远大于RTT0的值,这会使重传时间推迟的太长,使网络的空闲时间增大,降低传输效率

在这里插入图片描述

在这里插入图片描述

RFC6298建议使用下式计算超时重传时间RTO

在这里插入图片描述

往返时间RTT的测量比较复杂

在这里插入图片描述

在这里插入图片描述

TCP超时重传的计算

举例

在这里插入图片描述

总结

在这里插入图片描述

7. TCP可靠传输的实现

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

8. TCP的运输连接管理

8.1 概念

在这里插入图片描述

8.2 TCP的连接建立

  • TCP 建立连接的过程叫做握手
  • 握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手
  • 采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。

8.2.1 TCP的连接建立要解决以下三个问题

在这里插入图片描述

8.2.2 TCP使用“三报文握手”建立连接

  • TCP 连接的建立采用客户服务器方式
  • 主动发起连接建立的应用进程叫做TCP客户 (client)。
  • 被动等待连接建立的应用进程叫做TCP服务器 (server)。

“握手”需要在TCP客户端和服务器之间交换三个TCP报文段

过程

在这里插入图片描述

最初两端的TCP进程都处于关闭状态

在这里插入图片描述

一开始,TCP服务器进程首先创建传输控制块,用来存储TCP连接中的一些重要信息。例如TCP连接表、指向发送和接收缓存的指针、指向重传队列的指针,当前的发送和接收序号等

之后,就准备接受TCP客户端进程的连接请求

此时,TCP服务器进程就进入监听状态,等待TCP客户端进程的连接请求

TCP服务器进程是被动等待来自TCP客户端进程的连接请求,因此成为被动打开连接

在这里插入图片描述

TCP客户进程也是首先创建传输控制块

由于TCP连接建立是由TCP客户端主动发起的,因此称为主动打开连接

在这里插入图片描述

然后,在打算建立TCP连接时,向TCP服务器进程发送TCP连接请求报文段,并进入同步已发送状态

TCP连接请求报文段首部中

  • 同步位SYN被设置为1,表明这是一个TCP连接请求报文段
  • 序号字段seq被设置了一个初始值x,作为TCP客户端进程所选择的初始序号

请注意:TCP规定SYN被设置为1的报文段不能携带数据,但要消耗掉一个序号

在这里插入图片描述

TCP服务器进程收到TCP连接请求报文段后,如果同意建立连接,则向TCP客户进程发送TCP连接请求确认报文段,并进入同步已接收状态

TCP连接请求确认报文段首部中

  • 同步位SYN和确认为ACK都设置为1,表明这是一个TCP连接请求确认报文段
  • 序号字段seq被设置了一个初始值y,作为TCP服务器进程所选择的初始序号,
  • 确认号字段ack的值被设置成了x+1,这是对TCP客户进程所选择的初始序号(seq)的确认

请注意:这个报文段也不能携带数据,因为它是SYN被设置为1的报文段,但同样要消耗掉一个序号

在这里插入图片描述

TCP客户进程收到TCP连接请求确认报文段后,还要向TCP服务器进程发送一个普通的TCP确认报文段,并进入连接已连接状态

普通的TCP确认报文段首部中

  • 确认位ACK被设置为1,表明这是一个普通的TCP确认报文段
  • 序号字段seq被设置为x+1,这是因为TCP客户进程发送的第一个TCP报文段的序号为x,所以TCP客户进程发送的第二个报文段的序号为x+1
  • 确认号字段ack被设置为y+1,这是对TCP服务器进程所选择的初始序号的确认

请注意:TCP规定普通的TCP确认报文段可以携带数据,但如果不携带数据,则不消耗序号

在这里插入图片描述

TCP服务器进程收到该确认报文段后也进入连接已建立状态

现在,TCP双方都进入了连接已建立状态,它们可以基于已建立好的TCP连接,进行可靠的数据传输

为什么TCP客户进程最后还要发送一个普通的TCP确认报文段?能否使用“两报文握手”建立连接?

下图实例是“两报文握手”

在这里插入图片描述

为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误”,这种情况是:一端(client)A发出去的第一个连接请求报文并没有> 丢失,而是因为某些未知的原因在某个网络节点上发生滞留,导致延迟到连接释放以后的某个时间才到达另一端(server)B。本来这是一个> 早已失效的报文段,但是B收到此失效的报文之后,会误认为是A再次发出的一个新的连接请求,于是B端就向A又发出确认报文,表示同> 意建立连接。如果不采用“三次握手”,那么只要B端发出确认报文就会认为新的连接已经建立了,但是A端并没有发出建立连接的请求,因> 此不会去向B端发送数据,B端没有收到数据就会一直等待,这样B端就会白白浪费掉很多资源。

所以并不多余,这是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,因而导致错误

8.2.3 总结

在这里插入图片描述

8.3 TCP的连接释放

  • TCP 连接释放过程比较复杂。
  • 数据传输结束后,通信的双方都可释放连接。
  • TCP 连接释放过程是四报文握手

8.3.1 TCP通过“四报文挥手”来释放连接

  • TCP 连接的建立采用客户服务器方式
  • 主动发起连接建立的应用进程叫做TCP客户 (client)。
  • 被动等待连接建立的应用进程叫做TCP服务器 (server)。
  • 任何一方都可以在数据传送结束后发出连接释放的通知

过程

在这里插入图片描述

现在TCP客户进程和TCP服务器进程都处于连接已建立状态

TCP客户进程的应用进程通知其主动关闭TCP连接

TCP客户进程会发送TCP连接释放报文段,并进入终止等待1状态

TCP连接释放报文段首部中

  • 终止位FIN和确认为ACK的值都被设置为1,表明这是一个TCP连接释放报文段,同时也对之前收到的报文段进行确认
  • 序号seq字段的值设置为u,它等于TCP客户进程之前已传送过的数据的最后一个字节的序号加1
  • 确认号ack字段的值设置为v,它等于TCP客户进程之前已收到的、数据的最后一个字节的序号加1

请注意:TCP规定终止位FIN等于1的报文段即使不携带数据,也要消耗掉一个序号

在这里插入图片描述

TCP服务器进程收到TCP连接释放报文段后,会发送一个普通的TCP确认报文段并进入关闭等待状态

普通的TCP确认报文段首部中

  • 确认位ACK的值被设置为1,表明这是一个普通的TCP确认报文段
  • 序号seq字段的值设置为v,它等于TCP服务器进程之前已传送过的数据的最后一个字节的序号加1,这也与之前收到的TCP连接释放报文段中的确认号匹配
  • 确认号ack字段的值设置为u+1,这是对TCP连接释放报文段的确认

在这里插入图片描述

  • TCP服务器进程应该通知高层应用进程,TCP客户进程要断开与自己的TCP连接
  • 此时,从TCP客户进程到TCP服务器进程这个方向的连接就释放了
  • 这时的TCP连接属于半关闭状态,也就是TCP客户进程已经没有数据要发送了
  • 但如果TCP服务器进程还有数据要发送,TCP客户进程仍要接收,也就是说从TCP服务器进程到TCP客户进程这个方向的连接并未关闭

在这里插入图片描述

  • TCP客户进程收到TCP确认报文段后就进入终止等待2状态,等待TCP服务器进程发出的TCP连接释放报文段
  • 若使用TCP服务器进程的应用进程已经没有数据要发送了,应用进程就通知其TCP服务器进程释放连接
  • 由于TCP连接释放是由TCP客户进程主动发起的,因此TCP服务器进程对TCP连接的释放称为被动关闭连接

在这里插入图片描述

TCP服务器进程发送TCP连接释放报文段并进入最后确认状态

该报文段首部中

  • 终止位FIN和确认位ACK的值都被设置为1,表明这是一个TCP连接释放报文段,同时也对之前收到的报文段进行确认
  • 序号seq字段的值为w,这是因为在半关闭状态下,TCP服务器进程可能又发送
  • 确认号ack字段的值为u+1,这是对之前收到的TCP连接释放报文段的重复确认

在这里插入图片描述

TCP客户进程收到TCP连接释放报文段后,必须针对该报文段发送普通的TCP确认报文段,之后进入时间等待状态

该报文段首部中

  • 确认为ACK的值被设置为1,表明这是一个普通的TCP确认报文段
  • 序号seq字段的值设置为u+1,这是因为TCP客户进程之前发送的TCP连接释放报文段虽然不携带数据,但要消耗掉一个序号
  • 确认号ack字段的值设置为w+1,这是对所收到的TCP连接释放报文段的确认

TCP服务器进程收到该报文段后就进入关闭状态,而TCP客户进程还要进过2MSL后才能进入关闭状态

TCP客户进程在发送完最后一个确认报文后,为什么不直接进入关闭状态?而是要进入时间等待状态?

在这里插入图片描述

因为时间等待状态以及处于该状态2MSL时长,可以确保TCP服务器进程可以收到最后一个TCP确认报文段而进入关闭状态

另外,TCP客户进程在发送完最后一个TCP确认报文段后,在经过2MSL时长,就可以使本次连接持续时间内所产生的所有报文段都从网络中消失,这样就可以使下一个新的TCP连接中,不会出现旧连接中的报文段

8.3.2 TCP保活计时器的作用

TCP双方已经建立了连接,后来,TCP客户进程所在的主机突然出现了故障

TCP服务器进程以后就不能再收到TCP客户进程发来的数据

因此,应当有措施使TCP服务器进程不要再白白等待下去

在这里插入图片描述

9. TCP报文段的首部格式

在这里插入图片描述

各字段的作用

源端口和目的端口

在这里插入图片描述

序号、确认号和确认标志位

在这里插入图片描述

数据偏移、保留、窗口和校验和

在这里插入图片描述

同步标志位、终止标志位、复位标志位、推送标志位、紧急标志位和紧急指针

在这里插入图片描述

选项和填充

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/646713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3之 websoket发送消息

1.封装websoket var ws null; //建立的连接 var lockReconnect false;//是否真正建立连接 var timeout 6 * 1000 * 5;//30秒一次心跳 var timeoutObj null;//心跳心跳倒计时 var serverTimeoutObj null;//心跳倒计时 var timeoutnum null;//断开 重连倒计时 var global_…

DA14531平台secondary_bootloade工程修改笔记

DA14531平台secondary_bootloade工程修改笔记 1.支持在线仿真 初始时加入syscntl_load_debugger_cfg(); 表示可以重复Jlink连接调试仿真 2.支持串口烧录,和支持单线线写 utilities\secondary_bootloader\includes\bootloader.h /************** 2-wire UART supp…

Siamese network 孪生神经网络--一个简单神奇的结构

1.名字的由来 Siamese和Chinese有点像。Siam是古时候泰国的称呼,中文译作暹罗。Siamese也就是“暹罗”人或“泰国”人。Siamese在英语中是“孪生”、“连体”的意思,这是为什么呢? 十九世纪泰国出生了一对连体婴儿,当时的医学技术…

点赞!HashData连续三年获评数据猿“最具投资价值企业奖”

近日,由上海市经济和信息化委员会、上海市科学技术委员会指导,数据猿和上海大数据联盟共同主办的“第六届金猿季&魔方论坛——大数据产业发展论坛”在上海举行。本次活动以“小趋势大未来”为主题,展示了大数据与人工智能、云计算、5G等新…

仰暮计划|“她已跨过了八旬的门槛,一个人见证了时光洪流的智慧年代”

倾听与关爱 2023年7月4日中午,我跟随“羽翼”社会实践服务队、党员服务小组一起到柏桥村完成我们本次三下乡的调研任务,通过走访当地居民并与当地党群服务中心干部进行交谈了解当地乡村振兴落实情况。 在走往柏桥村的路上,我有幸遇到了教师…

【操作系统】实验六 分析源代码

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

Vulnhub-FUNBOX: GAOKAO渗透

文章目录 前言1、靶机ip配置2、渗透目标3、渗透概括 开始实战一、信息获取二、爆破FTP服务三、GetShell四、提权 前言 由于在做靶机的时候,涉及到的渗透思路是非常的广泛,所以在写文章的时候都是挑重点来写,尽量的不饶弯路。具体有不不懂都的…

仰暮计划|“他说,他是出生于两个时代的人”

凌保庆老爷爷,1942年10月4日出生,今年82岁,家住在河南省登封市唐庄乡磨沟村。7月28日,我作为仰暮计划小队的一员去拜访了这位老人,听凌爷爷讲述了他的故事。 走进这户人家的时候,凌爷爷正在书房里。虽然家…

Spring第三天

今日目标 能够理解AOP的作用 能够完成AOP的入门案例 能够理解AOP的工作流程 能够说出AOP的五种通知类型 能够完成"测量业务层接口万次执行效率"案例 能够掌握Spring事务配置 一、AOP 1 AOP简介 问题导入 问题1:AOP的作用是什么? 问题2&am…

【MySQL实践】一个隐蔽的问题导致 Field ‘xxx‘ doesn‘t have a default value

文章目录 1.背景2.问题处理3.思考与总结 1.背景 最后在公司的后台系统上遇到了一个线上问题,是在插入某个表数据的时候出现了数据库的插入异常,即:java.sql.SQLException: Field xxx doesnt have a default value,这其实是一个比…

javaweb-js-vue基础知识(持续更新中)

sshu 双向数据绑定 ---------------------------------------------------------- 注意淘宝镜像最新网址发生变化,记得改,不是老师现在用的那个,不然会下载出错!!! 没有的:ctrlshiftp&#xff…

apipost和curl收不到服务器响应的HTTP/1.1 404 Not Found

windows的apipost发送请求后,服务器响应了HTTP/1.1 404 Not Found,但是apipost一直显示发送中。 linux上的curl也一样。 使用wireshark抓包发现收到了响应,但是wireshark识别不了(图中是回应404后关闭了连接)&#xff…

Chatgpt的崛起之路

Chatgpt的崛起之路 背景与发展历程背景发展历程 技术原理第一阶段:训练监督策略模型第二阶段:训练奖励模型第三阶段:采用强化学习来增强模型的能力。 国内使用情况及应用的领域面临的数据安全挑战与建议ChatGPT获取数据产生的问题数据泄露问题…

接口自动化测试:mock server之Moco工具

什么是mock server mock:英文可以翻译为模仿的,mock server是我们用来解除依赖(耦合),假装实现的技术,比如说,前端需要使用某些api进行调试,但是服务端并没有开发完成这些api&#…

测试人年终总结:入行三年,下一步怎么走,思想碰撞

原贴地址:入行三年,下一步怎么走,思想碰撞 TesterHome 熟悉环境,进步缓慢;停止思考,举步不前(为什么会有这篇文章why 初心变质:计算机系毕业,毕业时的打算是从测试进&a…

程序员如何保持身心健康

程序员要保持身心健康,可以注意以下几个方面: 饮食健康:保持均衡的饮食,多吃蔬菜水果,减少油腻和高热量食物的摄入。同时,适当饮水,避免因长时间坐着工作而导致的脱水。尽量不要吃街边摊、大排…

#常见问题总结#在docker中跑前端vue项目

目录 前言一、no such file or directory, open...总结 前言 提示:这里可以添加本文要记录的大概内容: 记录在docker中跑前端项目过程中,我遇到的问题以及解决方法 提示:以下是本篇文章正文内容,下面案例可供参考 一…

大数据数据可视化工具ECharts,从入门到精通!

介绍:ECharts是一个强大的数据可视化图表库,它基于JavaScript开发,并具有丰富的特性和灵活性。 多平台支持:ECharts可以在PC和移动设备上流畅运行,它对移动端进行了优化,确保在不同设备上都有良好的展示效果…

为什么游戏公司开发一个游戏需要上亿资金

** 为什么游戏公司开发一个游戏需要上亿资金 ** 游戏界有句老话:要做游戏,没上亿准备别来碍手碍脚。说直白点,就是要想在这个竞争激烈的蓝海里立足,开发一款像模像样的游戏,需要有几亿元的资金准备。 可能有人会觉得…

互联网泛人才流动报告:大厂扩张按下暂停键,这家公司逆势给出5w月薪招人

前段时间,脉脉高聘人才智库发布了《2023年互联网泛人才流动报告》,似乎佐证了23年是互联网真正的寒冬…… 卷生卷死!5个人竞争2个岗位 2023年,互联网行业的求职难度可以说是地狱级别,人才供需比持续上升,…