操作起来 3.17

3.17

计算机网络

TCP基本认识

头格式:

序列号(32位):计算机生成的随机数作为初始值,通过SYN包传给接收端主机,每发一次自增一次该数据字节数的大小,解决网络包乱序问题

确认应答号:指下一次期望收到的数据的序列号,收到这个代表之前的数据已被正常接收

控制位:

ACK:该位为1时,确认应答字段有效,除开最初建立连接时SYN包其他都为1

RST: 该位为1时,表示TCP连接出现异常必须强制断开连接

SYN:该位为1时,表示希望建立连接,并在序列号字段进行初始值的设定

FIN:该位为1时, 表示今后不会有数据发送,希望断开连接。即断开连接时双方交换FIN为1的tcp报文就可以啦

为什么需要TCP协议,他在哪一层

无损坏、无间隔、非冗余、按序

IP不负责任,TCP能保证数据传输可靠、有序,传输层

什么是TCP

TCP是面向连接的、即一对一,不能像UDP那样一对多

可靠的、

基于字节流的:消息没有边界,有序,丢失就得重传

传输层通信协议

什么是TCP连接

用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,socket (IP地址+端口号)+ 窗口大小(流量控制) + 序列号(乱序问题)称为连接

如何唯一确定一个TCP连接

端口:即数据应该发送给哪个进程

TCP四元组:源端口 + 源地址 (32位)+ 目的端口(16位) + 目的地址,

端口—TCP头部 ; 地址 — IP头部

有一个服务器监听了一个端口,它的最大TCP连接数是多少

理论值:最大TCP连接数 = 客户端IP数 * 客户端端口数

实际受限:文件描述符限制(socket也是文件) ; 内存限制(TCP占用内存)

UDP TCP区别,应用场景

UDP利用IP面向无连接,组成:包长度(首部长度和数据长度之和)+ 校验和(提供可靠的UDP头部) + 目的端口+ 源端口,大小都是16位,一共8个字节

1 连接

传输数据前TCP需要建立连接,UDP不需要

2 服务对象

TCP一对一,UDP可以一对多

3 可靠性

TCP可靠交付数据,无损坏、无间隔、无冗余、按序;无差错、不丢失、不重复、不乱序

UDP:尽最大努力交付数据,不保证可靠性

4 流量控制、拥塞控制

TCP有这两个机制,保证数据传输安全性

UDP发送速率则不受网络影响

5 首部开销

TCP(没选项时20)>UDP(8字节)

6 传输方式

TCP:流式传输,没有边界

UDP:一个包一个包、有边界

7 分片不同

TCP,MSS,传输层分片,丢失一个分片,重传这一个就可以啦

UDP,MMU,IP层分片,丢失一个,得重传所有,所以UDP长度最好小于MMU

应用场景

TCP: FTP(文本传输协议,应用层) ; HTTP/HTTPS

UDP: 总包量较少通信,如DNS(应用层、域名解析协议) SNMP(简单网络管理,应用层) ; 视频、音频等多媒体通信 ; 广播通信

为什么UDP头部没有首部字段而TCP有

UDP首部大小固定;TCP有长度可变的选项

为什么UDP有包长度而TCP没有

Leetcode

组合总和二

class Solution {
public: 
    vector<vector<int>>ans;
    vector<int>path;
    int sum = 0;
    
    void bt(vector<int>& candidates, int index, int target, vector<bool>& used){
        if(sum >= target){
            if(sum == target)   {ans.push_back(path);}
            return;
        }
        for(int i = index ; i < candidates.size() && (candidates[i] + sum <= target) ; i++){
        //关键,也可以使用index去重
            if(i > 0 && candidates[i] == candidates[i-1] && !used[i-1]) continue;
            sum += candidates[i];
            used[i] = true;
            path.push_back(candidates[i]);
            bt(candidates, i+1, target, used);
            sum -= candidates[i];
            used[i] = false;
            path.pop_back();
        }
    }
    vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
        sort(candidates.begin(), candidates.end());
        vector<bool>condi(candidates.size(), false);
        bt(candidates, 0, target, condi);
        return ans;
    }
};

其他

坚持、反省是很可贵的品质。一个秘诀,一个方向

果然有时只要和学习无关,你总会尝试着接触一下

是否准备好接受失败呢,接受一事无成,水啊水啊,

自由是想不做什么就不做什么

看了蛮久小说阿西吧,诡秘之主,不能再这样下去了,现在不是悠闲看小说的时候呀!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值