Day4-2021.1.12 计算机网络原理 视频 第八章 传输层+力扣494. 目标和+300. 最长上升子序列+376. 摆动序列+昨天的题目。需要重新做。

2021年1月12日 时间都去哪了?
捉了一个队友!!!
在这里插入图片描述

今日计划:整理背包问题的笔记。力扣题目刷到150+。实际上就做了一道题目加上计算机网络的一部分视频。

今日工作:昨天的题目。需要重新做。
494. 目标和【昨天的题目。需要重新做。】
300. 最长上升子序列
376. 摆动序列【课后题】
做题比较难。看看计算机网络的视频吧。
计算机网络传输层和应用层。别的也基本不问。这就很少了
计算机网络原理 视频 第八章 传输层

今日总结: 实际上就做了一道题目加上计算机网络的一部分视频。也就三小时的工作量。。。。。。。。。。。。。

王道考研视频重点:
王

计算机网络原理 视频 第八章 传输层 标红是非重点。
在这里插入图片描述

今日语录:
一切都在剧烈变革,但时代从来不会停下来等谁,甚至时代要淘汰你时,都不会提前打声招呼。
转到2021.1.9-2021.1.31的learning record 首页

正文:

300. 最长上升子序列【例题】

其实例题是不难的吗,课后题比较难。

(1)动态规划

题解:

LIS问题:longest-increasing-subsequence

LIS(i)表示在【0…i】的范围内,选择数字num[i]作为结尾,可以获得的最长上升子序列的长度。

dp[i]表示在【0…i】的范围内,以nums[i]为结尾的最长上升子序列的长度。这里既然有“最长”,那么肯定要去遍历。双重for循环:dp[i]中的i是一层遍历,j在【0…i】的范围内也是一层遍历。

下图的状态定义的本意是:dp[i]的值代表以nums[i]结尾的最长子序列长度

image-20210112082038077

import java.util.Arrays;

public class p9_ex6_300 {
    public int lengthOfLIS(int[] nums) {
        int n = nums.length;
        if (n == 0) {
            return 0;
        }
        // dp[i]表示以nums[i]为结尾的最长上升子序列的长度
        int[] dp = new int[n];
        // dp[i]初始值要赋值为1
        Arrays.fill(dp, 1);
        // 这里 res至少为1哦。
        int res = 1;
        for (int i = 1; i < n; i++) {
            // 这里的第二重for循环,是去考察num[i]之前所有的元素
            // 限制条件 nums[i]>nums[j],那么可以以nums[i]作为结尾。
            for (int j = 0; j < i; j++) {
                if (nums[j] < nums[i]) {
                    dp[i] = Math.max(dp[i], dp[j] + 1);
                }
            }
            res = Math.max(res, dp[i]);
        }
        return res;
    }
}

计算机网络原理笔记 第八章 传输层

计算机网络原理 视频

8.1传输层的两个协议

8.1.1 TCP和UDP的应用场景

  • 网络中的计算机通信无外乎有以下两种情况:
    1.TCP,要发送的内容多,需要将发送的内容分成多个数据包发送。【需要分段,编号。有流量控制的功能,拥塞避免的功能,可靠传输的功能,客户端和服务器端需要建立TCP连接(协商参数:选择性确认,最大报文),通信结束需要释放连接】【下载电影,放到服务器缓存,分成一段一段的,加上首部,分成帧,】【可靠传输。】
    2.UDP,要发送的内容少,一个数据包就能发送全部内容。【qq聊天。流媒体。】【不需要分段,不需要流量控制,传输是否成功完全依靠应用层来判断,不需要建立连接,节省服务器资源,】【实时的语音和视频,多播,也是通过UDP协议,这种数据在传输过程中不允许颠倒顺序。】【不可靠传输,传输的数据少。】

  • 针对这两种情况,在传输层有两个协议,TCP(Transmission Control Protocol 即传输控制协议)和 UDP(User Datagram Protocol即用户数据报协议)。

    访问网页web。发送邮件。FTP协议。不是一个数据包能够解决的,所以用TCP协议。

8.1.2 传输层协议和应用层协议之间的关系

  • 应用层协议很多,传输层就两个协议,如何使用传输层两个协议标识应用层协议呢?【使用端口号来标示应用层协议。】
  • 传输层协议加一个端口号来标识一个应用层协议,下图展示了传输层协议和应用层协议之间的关系。【有点像倒过来的树形结构,哈哈。】
    在这里插入图片描述
    - 一些常见的应用层协议和传输层协议,以及它们之间的关系。【其实不用记住吧。。。】
  • HTTP默认使用TCP的80端口标识。
  • FTP默认使用TCP的21端口标识。
  • SMTP默认使用TCP的 25端口标识。
  • POP3默认使用TCP的110端口。
  • HTTPS默认使用TCP的443端口。
  • DNS使用UDP的53端口。
  • 远程桌面协议(RDP)默认使用TCP的3389端口。
  • Telnet使用TCP的23端口。
  • Windows访问共享资源使用TCP的445端口。
  • 微软SQL数据库默认使用TCP的1433端口。
  • mySQL数据库默认使用TCP的3306端口。

8.1.3 服务和端口之间的关系

  • Windows和Linux操作系统有些服务为本地计算机提供服务,有些服务为网络中的计算机提供服务。
  • 为网络中计算机提供服务的服务,一旦启动就会使用TCP或UDP的某个端口侦听客户端的请求。

【TCP和UDP在传输层。应用层在上面。传输层相当于大门。传输层的大门作用可以用来实现网络安全。】

windows上的服务:1.为 本系统/本机 提供的服务。2.为网络中其他计算机提供的服务,使用TCP或者UDP的某一个端口来侦听客户端的请求。

  • 在这里插入图片描述

[8-7服务器和客户端的端口要求本地]

客户端的端口和服务器的端口都得唯一。端口冲突会造成服务启动失败。

[8-11UDP协议特点和首部格式]

8.2 用户数据报协议 UDP

8.2.1 UDP 协议的特点

  • (1)UDP是无连接的,即发送数据之前不需要建立连接(当然发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。[不可靠连接]
  • (2)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表(这里面有许多参数),通信的两端不用保持连接,因此节省系统资源。
  • (3)UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给网络层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
    在这里插入图片描述
  • (4)UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。【比如qq聊天】
  • (5)UDP支持一对一、一对多、多对一和多对多的交互通信。
  • (6)UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

8.2.2 UDP 的首部格式

在这里插入图片描述

  • UDP的首部包括四个字段,源端口、目标端口、长度和校验和,每个字段的长度是两个字节。这样就是一共8个字节
  • 伪首部包括:源地址、目的地址、UDP数据长度、协议类型(0x11),协议类型就一个字节,但需要补一个字节的0x0,构成12个字节。
    在这里插入图片描述
    计算UDP检验和的例子
    在这里插入图片描述

8.3传输控制协议 TCP

8.3.1 TCP 协议主要的特点

  • (1)TCP是面向连接的传输层协议。这就是说,应用程序在使用TCP协议之前,必须 先建立TCP连接。传送数据完毕后,必须释放已经建立的TCP连接。这就是说,应用进程之间的通信好像在“打电话”:通话前要先拨号建立连接,通话结束后要挂机释放连接。

  • (2)每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的 (一对一)。

  • (3)TCP提供可靠交付的服务。也就是说,通过TCP连接传送的数据,无差错、不丢 失、不重复、且按序发送。

  • (4)TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。 TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时, 应用程序把数据传送给TCP的缓存后,就可以做自己的事,而TCP在合适的时候把数据 发送出去。在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取 缓存中的数据。【客户端,服务器,双向通信,使用一条TCP协议。】

  • (5)面向字节流。TCP中的“流”(steam)指的是流入到进程或从进程流出的字节序列。

    web网页,传输层,字节流,打包1000字节,封装数据包,应用程序读到的就是连续的字节流

    在这里插入图片描述

[8-13TCP报文首部字段]

8.3.2 TCP 报文的首部格式

长度不统一。

TCP协议是能够实现数据分段传输、可靠传输、流量控制、网络拥塞避免等功能,因此TCP报文的首部要比UDP报文首部字段要多,并且首部长度不固定。

在这里插入图片描述

两个字节所能表达的数:65536。端口号范围是65535。2的16次方=65536

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bU56Jd75-1610461394603)(https://i.loli.net/2021/01/12/4RNwe1KVZq8ucT6.png)]

TCP的分用功能是通过端口来实现的。4*8=32。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AJBcuiu3-1610461394617)(https://i.loli.net/2021/01/12/pvMyZAfWcIj6d8F.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oNyL45M0-1610461394623)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210112194836609.png)]

数据偏移:用来指明TCP的首部。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8h1mlZ5x-1610461394631)(https://i.loli.net/2021/01/12/Q87pGOCt64INvJn.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PVFGvAEb-1610461394634)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210112195050986.png)]

数据偏移 4位二进制 (也叫做首部长度) 最大是2的4次方-1=15。用来指明TCP的首部。从而得到TCP的数据部分。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M17oRUeX-1610461394636)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210112195556656.png)]

(6)保留字段,6位二进制。63位。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kt2HIxvL-1610461394637)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210112195819930.png)]

标蓝的是标记位。一共六位。每位标记位占一位二进制。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AiZmjNvO-1610461394639)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210112200056661.png)]

上图的7,8,9,表述了:标记位

(7)URG紧急标记位:当其为1时,表示此报文段中有紧急数据,应该尽快发送。优先发送。

(8)ACK确认标记位:当连接建立后,所有传送的报文段都必须把ACK只为1.

(9)PSH标记位:立即受到对方响应。就是很push。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KhXJoYlQ-1610461394641)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210112200904906.png)]

(10)复位RST标记位:TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。

(11)同步标记位:SYN 连接请求or连接接受

(12)终止标记位:FIN 结束连接。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wKSBdQ8c-1610461394642)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210112201322933.png)]

窗口字段。相当于用来控制传输的速度的。窗口,一个窗口可以包括好多条数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4RN0BY1s-1610461394643)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210112201718902.png)]

校验和:占两个字节。校验的是TCP首部和数据部分。

紧急指针:URG紧急标记位:当其为1时,表示此报文段中有紧急数据,应该尽快发送。优先发送。


  • (1)源端口和目的端口各占2个字节,分别写入源端口号和目的
    端口号。和前面图所示的UDP的分用相似,TCP的分用功能也是通
    过端口实现的。
  • (2)序号占4字节。序号范围是[0,232-1],共232(即4 294 967 296)个序号。序号增加到232-1后,下一个序号就又回到0。TCP
    是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节
    都按顺序编号
  • (3)确认号 占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。
    • TCP协议能够实现可靠传输,接收方收到几个数据包后,就会给发送方一个确认数据包,告诉发送方下一个数据包该发第多少个字节了。
    • 若确认号是N,则表明:到序号N-1为止的所有数据都已正确收到。
  • (4)数据偏移 占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的。但请注意,“数据偏移”的单位为4字节,由于4位二进制数能够表示的最大十进制数字是15,因此数据偏移的最大值是60字节,这也是TCP首部的最大长度,这也就意味着选项长度不能超过40字节。
  • (6)保留 占6位,保留为今后使用,但目前应置为0。
  • (7)紧急URG(URGent) 当URG=l时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。
  • (8)确认ACK(ACKnowlegment) 仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。‘
  • (9)推送PSH(PuSH) 当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。
  • (10)复位RST(ReSeT) 当RST=l时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
  • (11)同步SYN(SYNchronization) 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此,SYN置为1就表示这是一个连接请求或连接接受报文。
  • (12)终止FIN(FINish意思是“完”、“终”) 用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据己发送完毕,并要求释放传输连接。
  • (13)窗口 占2字节。窗口值是[0,216-1]之间的整数。TCP协议有流量
    控制功能,窗口值告诉对方:从本报文段首部中的确认号算起,接收方
    目前允许对方发送的数据量(单位是字节)。
  • (14)检验和 占2字节。检验和字段检验的范围包括首部和数据这两部分。和UDP用户数据报一样,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
  • (15)紧急指针 占2字节。紧急指针仅在URG=1时才有意义,它指出本
    报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。因此
    紧急指针指出了紧急数据的末尾在报文段中的位置。
  • (16)选项 长度可变,最长可达40个字节。当没有使用选项时,TCP的
    首部长度是20字节。TCP最初只规定了一种选项,即最大报文段长度MSS(Maximum Segment Size)。

【8-15TCP可靠传输的实现-停止等待协议】

8.4 可靠传输

8.4.1 TCP可靠传输的实现-停止等待协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zzviruGm-1610461394645)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210112202702820.png)]

无差错的情况:感觉这样效率会挺慢的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YPbzDj2e-1610461394646)(https://i.loli.net/2021/01/12/MCE8AbW5a3yisxN.png)]

确认丢失,超时重传。

确认迟到,应该也是没有收到反馈吧。。。收到了以前的一个确认。

发一个等待确认,发一个等待确认,发一个等待确认,发一个等待确认,

【8-16改进的停止等待协议-连续ARQ和滑动窗口】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yBEW0izp-1610461394648)(https://i.loli.net/2021/01/12/YdTNMuclfF62mo9.png)]

这里说明了无差错情况中的是需要等待的时间是挺长的。效率差。以下对此进行了改进。

8.4.2 连续 ARQ 协议和滑动窗口协议-改进的停止等待协议

使用连续的ARQ 协议和滑动窗口协议相结合。是一个改进的停止等待协议。提高了效率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-plejSwha-1610461394650)(https://i.loli.net/2021/01/12/wzRF3sCMJcWUTbA.png)]

在发送端,有一个发送窗口,窗口里有四个分组,直接发送者四个分组的内容,数据量增多。

当前计算机没有使用“停止等待协议”,而是使用的是“连续的ARQ 协议和滑动窗口协议相结合的改进的停止等待协议”

[8-17以字节为单位的滑动窗口技术详解]【感觉走神了,没听明白。】

8.4.3以字节为单位的滑动窗口技术详解

滑动窗口是面向字节流的,为了方便大家记住每个分组的序号,下面的讲解每一个分组就假设100个字节,为了方便画图表示,将分组进行编号简化表示,如图所示,不过你要记住,每一个分组的序号是多少。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-11aQMXRZ-1610461394652)(https://i.loli.net/2021/01/12/6Je9xR4wKhIuvqH.png)]

在这里插入图片描述

【8-18选择性确认SACK】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值