- 博客(89)
- 收藏
- 关注
原创 计算机网络谢希仁第七章课后题【背诵版本】
入侵者C把A发给B的密文截获,不破译而直接把密文发给B,使B误认为C就是A,B就会向伪装成A的C发送许多本该发给A的报文。A就收不到报文,而C得到这些更多的密文可以想办法来破译。对付重放攻击,可以使用不重数(nonce)。不重数就是一个不重复使用的大随机数,即“一次一数”。在鉴别过程中,不重数可以使B能够把重复的鉴别请求和新的鉴别请求区分开。A和B通信,A向B发送“我是A”,这个报文被“中间人”C截获,C把这个报文原封不动地转发给 B。B选择一个不重数 RB。
2024-11-25 09:15:34
1597
1
原创 计算机网络谢希仁第六章课后题【背诵版本】
动态文档:文档内容是在浏览器访问服务器时才由应用进程动态创建的。例子:股市行情,天气预报,携程网买机票。例如:我们输入出发地,目的地,日期人数后,携程网服务器根据键入数据动态生成航班表通用互联网邮件扩充MIME(Multipurpose Internet Mail Extensions)。它并没有改动或取代SMTP。MIME的意图是继续使用原来的邮件格式,但增加了邮件主体的结构,并定义了传送非ASCII 码的编码规则。MIME邮件可以在现有的电子邮件程序和协议下传送quoted-printable编码。
2024-11-19 08:57:31
1446
原创 计算机网络谢希仁第五章课后题【背诵版本】
(结合谢希仁p234图记一下图)Karn 算法。在计算加权平均 RTTs时,只要报文段重传了,就不采用其往返时间样本。这样得出的加权平均 RTTs和 RTO 就较准确。(允许TCP能够区分开有效和无效的往返时间样本,从而改进了往返时间的估算)若不采用 Karn 算法,而是在收到确认时都认为是对重传报文段的确认,那么由此得出的往返时间样本和重传时间都会偏小。如图 T-5-32所示,TCP发送了报文段后,没有收到确认,于是超时重传报文段。但刚刚重传了报文段后,马上就收到了确认。
2024-11-16 09:28:59
1458
原创 计算机网络谢希仁第四章课后题【背诵版本】
最大传送单元MTU(Maximum Transmission Unit):是数据链路层协议规定的一个帧中所能传送的数据最大值。MTU与IP数据报的总长度字段有关系。虽然总长度字段是16位,表示最大长度是2^16-1=65535字节,但实际上下面的数据链路层已经限制了IP数据报总长度不能超过最大传送单元MTU,这个值远小于65535。当一个IP数据报封装成帧时,此数据报的总长度(即首部加上数据部分)一定不能超过数据链路层所规定的MTU值。例如,最常用的以太网就规定其MTU值是1500字节。
2024-11-11 11:08:42
1389
原创 计算机网络803-(5)运输层
这样就表示:到这个分组为止的所有分组都已正确收到了。累积确认有的优点是:容易实现,即使确认丢失也不必重传。缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。累计到第3个确认:前三个都收到了并且没有丢包,下一个给我发送数据包4。假设数据包1丢包——第二个图假设数据包1丢包,则后续发送方还在发,发完一个滑块后,由于收方滑块还在1处等待收1,接收方接收完后续的数据到3不给予回复,则会超时重传,重新发送(回退N如果发送方发送了前 5个分组,而中间的第 3个分组丢失了。
2024-10-28 21:19:36
1122
1
原创 计算机网络803-(4)网络层
知道路由器R1的IP地址。N6:B检查N6的新路径信息,新路径下一跳是C,旧路径下一跳是F,新路径距离是4+1=5,而旧路径距离是8,由于下一跳不同,比较大小,新距离小,则更新为新路径:N6 5 C。R1 收到 R2 的更新报文后,误认为可经过 R2 到达网1,于是更新自己的路由表,说: “我到网 1 的距离是 3,下一跳经过 R2 ”。N8:B检查N8的新路径信息,新路径下一跳是C,旧路径下一跳是E,新路径距离是3+1=4,而旧路径距离也是4,由于下一跳不同,比较大小,距离相同,则不更新路径。
2024-10-10 20:48:54
1441
原创 释疑 803-(3)数据链路层 整理总结
P(X)=> 除数为 100111)除数:10011 被除数:11010110110000,经过模二除法,得添加在数据后面的余数为11102)若最后一个变为0,被除数:11010110101110,除数:10011,得到余数为0011,余数不为0,则接收端可以发现错误。3)若最后两个成为0,被除数:11010110001110,除数:10011,得到余数为0101,余数不为0,故接收端可以发现错误。采用CRC检验,若接收端检测到错误,则丢弃该帧,然后就不做任何操作。
2024-08-30 17:10:56
1578
原创 计算机网络803-(3)数据链路层
①先听后发帧间间隔)→②边听边发争用期最短有效帧长)→③冲突停发(碰撞干扰,即强化碰撞)→④随机重发二进制指数类型退避算法边听边发 渡过争用期则没碰撞②→①发送下一次信息;发生碰撞则经历③④,结束后→①七. 使用广播信道的以太网1. (1)使用集线器的星形拓扑传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。
2024-08-26 21:35:31
1156
1
原创 释疑 803-(2)物理层 整理总结
2-01 物理层要解决哪些问题?物理层的主要特点是什么?物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,尽可能屏蔽掉硬件设备、传输媒体、通信方式不同引起的差异,使上面的数据链路层感受不到这些差异。尽可能屏蔽掉硬件设备、传输媒体、通信方式不同引起的差异,使上面的数据链路层感受不到这些差异。2-02 规程与协议有什么区别?在物理层,这两个名词并没有什么区别,只不过“规程”名词比“协议”出现的早。协议在物理层叫规程,其它层的协议叫“协议”。
2024-08-03 20:34:55
988
原创 释疑 803-(1)概述 整理总结
在分组交换时,分组长度为p(bit),每个分组所必须添加的首部都很短,对分组的发送时延的影响在本题中可以不考虑。当通信双方占用的通信线路由很多个链路组成时,只有在每段链路都能接通(即每一段链路都有空闲的信道资源还没有被其他用户占用,即有可用资源)时,整个的连接建立才能完成(哪怕只有 一段链路没有空闲的信道可供使用,连接建立也无法完成)。1-11 在上题的分组交换网中,设报文长度和分组长度分别为x和(p+h)(bit),其中p为分组的数据部分的长度,而h为每个分组所添加的首部长度,与p的大小无关。
2024-07-24 18:55:14
1332
原创 计算机网络803-(2)物理层
传输媒体:数据传输系统中在发送器和接收器之间的物理通路。导向传输媒体和非导向传输媒体。导向传输媒体:电磁波被导向沿着固体媒体传播。非导向传输媒体:在自由空间(非导向传输媒体中)电磁波的传输。2.导向传输媒体(1)双绞线①屏蔽双绞线 STP (Shielded Twisted Pair)②无屏蔽双绞线 UTP (Unshielded Twisted Pair)(2)同轴电缆①50 Ω 同轴电缆②75 Ω 同轴电缆(3)光缆各种电缆:3.光纤的工作原理多模光纤厚,会弹射;
2024-06-06 16:52:24
1218
1
原创 linux篇【16】:传输层协议<前序>
再谈端口号,UDP协议协议段格式,TCP协议协议段格式,可靠性问题,确认应答(ACK)机制,tcp的发送和接收缓冲区,TCP三次握手,超时重传机制,连接管理机制,listen的第2个参数
2023-02-21 16:50:44
1665
5
原创 linux篇【14】:网络http协议
认识URL,http协议的请求与响应,telnet 命令,初步使用html,表单,GET Vs POST
2023-01-13 11:33:35
3189
14
原创 计算机组成原理【1】初识硬件
数据就是计算机想要的货物,CPU不同于菜鸟驿站的地方:CPU不仅可以取数据也可以写数据MAR:地址寄存器,用于指明要读/写哪个存储单元。其位数反映存储单元数量MDR:数据寄存器,用于暂存要读/写的数据。其位数=存储字长注意:MAR、MDR逻辑属于主存,但是现在的计算机通常把MAR、MDR也集成在CPU内。
2023-01-01 10:20:24
1357
6
原创 linux篇【12】:网络套接字<后序>—tcp接入线程池并改为守护进程
父进程的id。进程本身的id。当前进程所属的进程组。(同组进程的第一个进程一般是进程组的组长)当前进程的会话id。COMMAND:命令。进程启动的时长。用户名映射后的数字,用户UID。TPGID:当前进程组和终端相关的信息,-1 说明进程和终端无关系,非-1说明有关。哪一个终端用户登录时会建立一个会话,会话内部会构建一个前台进程组 和 0个或者多个后台进程组,linux下客户端登录时 会给我们加载bash,bash就是前台进程组。
2022-12-24 19:42:06
1412
20
原创 linux篇【12】:网络套接字<前序>—网络基础+udp套接字
目录一.网络基础1.认识 "协议"2.协议分层(1)软件分层(2)协议分层3.OSI七层模型4.TCP/IP五层(或四层)模型5.网络和操作系统之间的关系6.数据包的封装(封包)和解包,分用(1)下图为数据封装,解包的过程 (2)分用7.局域网(以太网)通信的原理(1)局城网中两台主机可以互相通信(2)局域网通信原理(3)MAC地址和IP地址(4)数据包传输通过路由器转发软件是可以分层的,为什么要分层?1.软件在分层的同时,也把问题归类的2.分层的本质:软件上解耦3.便于工程师进行软件维护网络本身的
2022-12-05 17:47:58
4173
17
原创 linux篇【11】:linux下的线程<后序>
POSIX信号量和SystemV信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源目的。但POSIX可以用于线程间同步。信号量本质是一个计数器。信号量是一个计数器,这个计数器对应的PV操作(V ++ P --)是原子的。信号量的PV操作:V ++归还资源,P --申请资源申请mutex 访问临界资源之前被切换走了有问题吗?——没问题。资源预定::因为只要我拿到了锁,当前的临界资源就是我的!1.信号量申请成功了,就一定能保证你会拥有一部分临界资源吗?
2022-11-29 21:28:14
1439
16
原创 linux篇【11】:linux下的线程<中序>
加锁范围:临界区,只要对临界区加锁,而且加锁的力度越细越好加锁本质:加锁的本质是让线程执行临界区代码串行化加锁是一套规范,通过临界区对临界资源进行访问的时候,要加就都要加锁保护的是临界区, 任何线程执行临界区代码访问临界资源,都必须先申请锁,前提是都必须先看到锁!那这把锁,本身不就也是临界资源吗?锁的设计者早就想到了pthread_mutex_lock: 竞争和申请锁的过程,就是原子的!申请锁的过程不会中断,不会被打扰。难度在加锁的临界区里面,就没有线程切换了吗????
2022-11-23 20:28:39
2195
21
原创 linux篇【11】:linux下的线程<前序>
1.在进程内部运行的执行流(线程在进程的虚拟地址空间中运行)2.线程比进程力度更细调度成本更低3.线程是CPU调度的基本单位线程(执行流)是系统调度的基本单位!linux下没有真正的线程,Linux的线程是用进程模拟的,他叫做 轻量级进程。线程执行力度比进程更细,调度成本更低(进程切换时不需要切换页表,电地址空间等,只需要切换线程的上下文数据),因为他执行的是进程的一部分,访问的是进程的一部分资源,使用进程的一部分数据曾经:进程——内核数据结构+进程对应的代码和数据承担分配系统资源的基本实体。
2022-11-21 20:04:56
1832
20
原创 linux篇【10】:进程信号
(捕捉)①因为一些系统调用例如open(),用户态—>内核态,处理完open的代码后②本来可以返回代码继续执行了,但是正好处于内核态,就顺便去检测信号,并处理信号。③处理信号:若是阻塞或无信号(忽略/默认)就直接内核态—>用户态返回即可 / 若是非阻塞并有信号的自定义捕捉,就内核态—>用户态执行对应的handler方法。(执行handler方法为什么只能是用户态?解释:内核态是什么都可以做的,如果让内核态做用户自定义代码,万一用户写的是一段恶意代码呢???
2022-11-13 08:48:08
4387
19
原创 linux篇【9】:进程间通信——<前序>
一.通信背景一.通信背景1.进程是具有独立性的!——导致进程为什么要通信:需要多进程进行协同处理一件事情2.不要以为,进程独立了,就是彻底独立,有时候,我们需要双方能够进行一定程度的信息交互数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
2022-11-03 19:07:45
1224
24
原创 linux篇【8】:基础IO—<后序>
假如要找第3234个扇区,假如有4个磁盘面,4个磁盘面放在一个数组,一面假设是1000个扇区,3234/1000=3,第一面是0~1000,第二面是1000~2000,第三面是2000~3000,第四面是3000~4000。管理整个分区内一个块的数据,即:记录1GB的block group的属性,例如:有多少inode,起始的inode编号,有多少个inode被使用,有多少block被使用,还剩多少,你的总group大水是多少。对如何管理500GB的文件,变成了对一个1GB的小组数据的管理。
2022-10-26 20:49:02
1911
29
原创 linux篇【8】:基础IO—<前序>
(2)当我们以w方式打开文件,准备写入的时候,其实文件已经先被清空!——不能,所有的上层访问文件的操作,都必须贯穿操作系统。当我们的文件程序,运行起来的时候,才会执行对应的代码,然后才是真正的对文件进行相关的操作。6.通常我们打开文件,访问文件,关闭文件,是谁在进行相关操作?7.学习文件操作:就是学习——进程和打开文件的关系!r+和w+都是既读又写,只是w+多了一个文件不存在就创建文件。默认的进程工作路径是在它所处的路径下,不过这个路径是可以改的。1.当我们向文件写入的时候,最终是不是向磁盘写入?
2022-10-22 17:41:14
1412
21
原创 C++:C++的IO流
EOF)如何终止?答:ctrl z+换行 是规定,ctrl c 是发送信号杀死进程(一般不建议ctrl c)。operator bool:本质是为了支持Date对象转换成boolistream类型对象转换为逻辑条件判断值实际上我们看到使用while(cin>>i)去流中提取对象数据时,调用的是operator>>,返回值是istream类型的对象,那么这里可以做逻辑条件值,源自于istream的对象又调用了operator。
2022-10-22 17:40:51
2528
6
原创 linux篇【7】:进程程序替换
带e的都是可以传环境变量的(execle,execvpe)但是会覆盖系统原有的环境变量,把自己传的环境变量交给进程;2.让子进程执行磁盘中一个全新的程序(shell,想让客户端执行对应的程序,通过我们的进程,执行其他人写的进程代码等等),c/c++ -> c/c++/Python/Shell/Php/Java...答:不用判断返回值(但是还是需要返回值),因为一旦替换成功,就不会有返回值,也不会执行返回语句,因为int ret 这个返回值也是当前进程的代码和数据,execl一旦替换成功,是将。
2022-10-19 11:28:19
945
11
原创 C++:特殊类设计
2. 提供一个静态的成员函数:提供返回构造函数的公有函数时,发现没对象调不了,对象还得通过调用这个函数去构造生成——先有鸡还是先有蛋的循环,所以给这个成员函数加上static,静态的成员函数没有this指针,可以直接通过类域调用该函数,在该静态成员函数中完成堆对象的创建。①这里我们创建静态变量,为了只有一个实例对象,需要把构造函数私有,这个对象为了能访问私有的构造函数,我们需要把它放在类中声明,让它成为类的成员,可以在类外定义。拷贝构造声明成私有,防止别人调用拷贝在栈上生成对象。
2022-10-15 20:17:14
629
10
原创 C++:C++的类型转换
在C语言中,如果。1. 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败2. 显式类型转化:需要用户自己处理C风格的转换格式很简单,但是有不少缺点的:1. 隐式类型转化有些情况下可能会出问题:比如数据精度丢失2. 显式类型转换将所有情况混合在一起,代码不够清晰因此C++提出了自己的类型转化风格,注意。
2022-10-10 11:44:36
3561
13
原创 C++:智能指针
借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法有两大好处:不需要显式地释放资源。采用这种方式,对象所需的资源在其生命期内始终保持有效。
2022-10-08 16:24:21
912
10
原创 C++:异常
此时throw抛异常的地方直接跳到catch中,抛的异常类型要对上,所以这里跳到catch (const char* errmsg){// 当b == 0时抛出异常";try{Func();}3. 异常的使用3.1 异常的抛出和捕获异常的抛出和匹配原则1. 异常是通过抛出对象而引发的,该对象的类型决定了应该激活哪个catch的处理代码。2. 被选中的处理代码。
2022-10-01 13:23:52
491
6
原创 C++11:lambda表达式
lambda表达式就是定义了一个可调用的匿名函数,一般在局部。1.格式mutable捕捉列表 参数去const(单词意思易变的)返回值 函数体};2. lambda表达式各部分说明,该列表总是出现在lambda函数的开始位置,,。捕捉的参数都是自带const的,想要去掉const属性可以用mutable,但是捕捉的对象(变量)仍是一份拷贝,外部的a,b无法被修改,所以mutable 很少用,意义不大,不如用 [&]引用捕捉 ( )引用传参。
2022-09-30 22:05:22
19315
9
原创 C++:C++11
移动构造:拷贝将亡值时不能对将亡值深拷贝,应直接把将亡值的资源交给新的对象,就是把将亡值指向资源的地址直接给新的对象{{public:// 移动构造string(string&& s) 右值匹配{cout
2022-09-22 18:22:47
1079
10
原创 C++:位图,布隆过滤器
方法:用两个 bitset 数组 _bs1,_bs2记录,x对应两个数组的比特位来记录这个数出现的次数,_bs1对应比特位是0,_bs2对应比特位是0,就是出现0次;_bs1对应比特位是0,_bs2对应比特位是1,就是出现1次;_bs1对应比特位是1,_bs2对应比特位是0,就是出现2次;原本4个字节存一个数,现在1个bit存一个数的状态,1字节=8bit,4字节=32bit,16G/32=500MB,现在消耗500MB即可。数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一。
2022-09-15 23:00:58
674
10
原创 C++:哈希,unordered_map和unordered_set
unordered_map和unordered_set和map/set用法一样,不同就是unordered_map和unordered_set不排序,map/set自动排序。
2022-09-07 15:45:24
3053
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人