网络协议相关问题

一、 为甚有了ip还要mac地址?
  1. 局域网内IP地址是动态分配的,假如我是192.168.2.100,如果我下线了,可能IP就分配给了另一台电脑。IP和设备并不总是对应的,这对通信就产生了问题,但是MAC地址不同,MAC地址和设备是一一对应且全球唯一的。所以局域网使用MAC地址通信没有问题。
  2. 历史遗留问题:早期的以太网只有交换机,没有路由器,以太网内通过MAC地址通信。后来才有了互联网,为了兼容原本的模式,采用了IP+MAC地址通信的方式。为啥不推到了重来呢?看看IPv6的处境你就知道了。所以是先有MAC地址后有的IP,IP的提出主要还是因为MAC地址本身的缺陷,这个问题换成有了MAC为何还要IP地址也很有意思。
  3. 我这里简单说一下第一:MAC地址本身的缺陷:因为MAC地址是硬件提供商写在网卡中的,MAC地址虽然唯一但是不能表明用户在整个互联网中的位置,除非维护一个超级大MAC地址对应表,那寻址效率肯定爆炸。但是IP地址解决了这个问题,因为IP地址是网络提供商给你的,所以你在哪里整个网络都是知道的。第二:安全问题:获取MAC地址是通过ARP协议来完成的,如果只用MAC地址通信,那么广播风暴是个难题。
  4. 那么我觉得如果哪天每人一个固定的IPv6地址,那么我觉得MAC地址+IPv4的模式是不是可以被替换了?
  5. MAC地址更像是身份证,是一个唯一标识, 但是它的通信范围较小,局限在一个子网之内。IP有远程定位功能。
二、TCP和UDP的区别?
  1. TCP是面向连接的(三次握手,四次挥手),UDP是面向无连接的,所谓建立连接,是为了客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓面向连接的特性。
  2. TCP是面向字节流的,发送的时候发的是一个流,没有头尾。IP包不是流,而是一个个的IP包。之所以变成流,这也是TCP自己状态维护做的事情。而UDP继承了IP的特性,基于数据报的,一个一个的发。
  3. TCP可以又拥塞控制的,会根据网络环境来调整,UDP没有,应用让发就发。
  4. 如果 MAC 层定义了本地局域网的传输行为IP 层定义了整个网络端到端的传输行为,这两层基本定义了这样的基因:网络传输是以包为单位的,二层叫,网络层叫,传输层叫。我们笼统地称为包。包单独传输,自行选路,在不同的设备封装解封装,不保证到达。基于这个基因,生下来的孩子 UDP 完全继承了这些特性,几乎没有自己的思想。
三、TCP三次握手四次挥手
  1. 连接:在自己监听的端口接收到连接的请求,然后经过“三次握手”,维护一定的数据结构和对方的信息,确认了该信息:我发的内容对方会接收,对方发的内容我也会接收,直到连接断开。
  2. keepalive:客户端和服务端建立tcp连接时,为了验证连接是否还在,客户端和服务端之间应该会不停地发送一些确认的信息,保证客户端和服务端之间的连接还在。
  3. 断开:经过“四次挥手”确保双方都知道且同意对方断开连接,然后在remove为对方维护的数据结构和信息,对方之后发送的包也不会接收,直到 再次连接。
  4. 我看到有的同学说,TCP是建立了一座桥,我认为这个比喻不恰当,TCP更好的比喻是在码头上增加了记录人员,核查人员和督导人员,至于IP层和数据链路层,它没有任何改造。
  5. UDP也有相应的错误检验,但是没用重传
四、TCP慢启动问题

在这里插入图片描述
在这里插入图片描述

  1. 设备缓存会导致延时?
    假如经过设备的包都不需要进入缓存,那么得到的速度是最快的。进入缓存且等待,等待的时间就是额外的延时。BBR就是为了避免这些问题:充分利用带宽;降低buffer占用率。

  2. 降低发送packet的速度,为何反而提速了?
    标准TCP拥塞算法是遇到丢包的数据时快速下降发送速度,因为算法假设丢包都是因为过程设备缓存满了。快速下降后重新慢启动,整个过程对于带宽来说是浪费的。通过packet速度-时间的图来看,从积分上看,BBR充分利用带宽时发送效率才是最高的。可以说BBR比标准TCP拥塞算法更正确地处理了数据丢包。对于网络上有一定丢包率的公网,BBR会更加智慧一点。回顾网络发展过程,带宽的是极大地改进的,而最小延迟会受限与介质传播速度,不会明显减少。BBR可以说是应运而生。

  3. BBR如何解决延时?
    S1:慢启动开始时,以前期的延迟时间为延迟最小值Tmin。然后监控延迟值是否达到Tmin的n倍,达到这个阀值后,判断带宽已经消耗尽且使用了一定的缓存,进入排空阶段。
    S2:指数降低发送速率,直至延迟不再降低。这个过程的原理同S1
    S3:协议进入稳定运行状态。交替探测带宽和延迟,且大多数时间下都处于带宽探测阶段。

五、https加密过程

https如何保证数据安全
在这里插入图片描述

  1. 各大CA机构的公钥是默认安装在操作系统里的
  2. Nonce是由服务器生成的一个随机数,在客户端第一次请求页面时将其发回客户端;客户端拿到这个Nonce,将其与用户密码串联在一起并进行非可逆加密(MD5、SHA1等等),然后将这个加密后的字符串和用户名、Nonce、加密算法名称一起发回服务器;服务器使用接收到的用户名到数据库搜索密码,然后跟客户端使用同样的算法对其进行加密,接着将其与客户端提交上来的加密字符串进行比较,如果两个字符串一致就表示用户身份有效。这样就解决了用户密码明文被窃取的问题,攻击者就算知道了算法名和nonce也无法解密出密码。
  3. 每个nonce只能供一个用户使用一次,这样就可以防止攻击者使用重放攻击,因为该Http报文已经无效。可选的实现方式是把每一次请求的Nonce保存到数据库,客户端再一次提交请求时将请求头中得Nonce与数据库中得数据作比较,如果已存在该Nonce,则证明该请求有可能是恶意的。然而这种解决方案也有个问题,很有可能在两次正常的资源请求中,产生的随机数是一样的,这样就造成正常的请求也被当成了攻击,随着数据库中保存的随机数不断增多,这个问题就会变得很明显。所以,还需要加上另外一个参数Timestamp(时间戳)。
  4. Timestamp是根据服务器当前时间生成的一个字符串,与nonce放在一起,可以表示服务器在某个时间点生成的随机数。这样就算生成的随机数相同,但因为它们生成的时间点不一样,所以也算有效的随机数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN是一个专注于计算机技术及互联网相关领域的交流平台,其中涵盖了丰富的关于网络协议的内容。网络协议是计算机网络传输数据时所遵循的规则和约定。在CSDN上,我们可以找到关于网络协议的文章、教程、经验分享以及问题解答。 CSDN上关于网络协议的内容非常丰富多样。首先,我们可以了解各种常见的网络协议,如TCP/IP协议、HTTP协议、FTP协议等。这些文章会详细介绍每种协议的工作原理、特点和应用场景,有助于我们理解网络通信的基本原理。 另外,在CSDN上我们还可以找到关于网络协议的实践经验和问题解决方案。很多技术人员在网络开发和维护过程中,会遇到各种网络协议相关问题,如如何进行网络封包解析、如何处理网络拥塞等。他们在CSDN上分享了自己的经验和解决方案,帮助其他人更好地解决类似问题。 此外,CSDN上还有一些深入的网络协议研究文章。这些文章对于某些协议的细节进行深入剖析,并探讨了一些协议的发展趋势和新技术的应用。这些研究成果对网络协议的学术研究和技术创新具有一定的参考价值。 总的来说,CSDN在网络协议方面提供了丰富的内容和资源,可以帮助广大技术人员和学习者更深入地理解和应用网络协议。无论是初学者还是有经验的开发者,都可以通过CSDN获得相关知识,提高自己的网络编程和网络管理能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值