A2-计算机网络

计算机网络

计算机网络

一、七层模型

网络设计者以分层的方式组织协议,每一层都是向上服务的,每个分层中所有的协议称为协议栈

1.1 七层模型表格

OSI 出现 功能 协议
物理层 ①两台计算机连接起来,比如通过光纤、电缆等介质,通过高低电频来传送0、1的信号 定义通信的物理设备规格,网络接口类型,光纤接口类型 实际物理传输介质
数据链路层 ①物理层传送来的01信号需要一套标识:以太网;②计算机如何区分发送给那一台电脑:每个计算机的网卡接口的唯一地址:MAC地址;③:如何知道另一台计算机的MAC地址:ARP协议③知道了计算机的MAC地址,但是不着调计算机分布在那边路线上:广播 传输有地址的帧①以太网:一组电信号构成一个数据包,我们把这个数据包称之为帧。每一个桢由标头(Head)和数据(Data)两部分组成,标头部分主要是一些说明数据,例如发送者,接收者等信息。而数据部分是这个数据包具体的,想给接收者的内容;②广播就是A计算机向所有子网中的计算机发送数据包,计算机收到包之后会解析MAC地址,如果与自己的相同,接收,不相同就不接收,就像大街上的广播呼叫某个人一样 ARP协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包,如果接收包的计算机发现MAC与自己的相同,就把自己的MAC回给对方,否则就抛弃;②RARP反向地址转换协议,根据物理地址获取IP地址;③PPP点对点协议,主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案
网络层 每台计算机都能够收到广播那还得了:只有处于同一子网的计算机才能收到,所以区分MAC地址是否是处于同一子网,是的话就使用广播,不是的话就把数据发给网关:IP 提供端对端的接口;TCP、UDP-拆包组包TCP,保证数据的完整性,以及传输过程中可能发生的危险UDP 协议:IP、ICMP①DNS:如何知道对方的IP地址呢,当然是计算机的操作者来输入,但是我们输入的是域名,会有DNS服务器;②比如http的传输默认端口是80,这些端口信息也包含在数据包里的;
现在已经从计算机A到计算机B通信了,那么计算机B改给谁呢
传输层 建立端口到端口的通信 应用程序之间的通信 TCP、UDP
应用层 数据五花八门:html,MP4 等,所以要指定这些数据的格式规则,收到后才能解读 渲染文件传输、电子邮件、文件服务、虚拟终端 FTP(定义了文件传输协议,使用21端口),SMTP(定义了简单邮件传送协议,服务器开放的是25号端口),FTP(定义了文件传输协议,使用21端口),Telnet(它是一种用于远程登陆的端口,23端口),DNS,HTTP

1.2 补充-表示层 会话层

表示层:数据格式化、代码转换、数据加密-解决不同主机的通信的数据格式问题
会话层:解除或建立与其它接点的联系-建立和管理应用程序之间的通信

1.3 补充-IP、子网掩码

  • IP 地址由 32 位的二进制数组成,0.0.0.0~255.255.255.255,IP地址被分为两部分,前面一部分代表网络部分,后面一部分代表主机部分。并且网络部分和主机部分所占用的二进制位数是不固定的
  • 如果两台计算机的网络部分是一样的,那么就是处于一个子网中,那么网络部分只知道是前部分,具体是占几位,不知道啊,所以子网掩码出现了
    • 子网掩码与IP地址一样也是32位进制数,不过网络部分都是1,主机部分规定全部为0
    • 计算方法:例如,192.168.43.1和192.168.43.2的子码掩码都255.255.255.0,把IP与子码掩码相与,可以得到他们都为192.168.43.0,进而他们处于同一个子网中

1.4 补充-IP数据报的报头字段

  • IP数据报的报头字段包括:版本号(4位)、首部长度(4位)、服务类型(8位)、总长度(16位)、标识(16位)、标志位(3位)、片偏移(13位)、生存时间(TTL,8位)、协议(8位)和头部校验和(16位)、原IP地址(32),目标IP地址(32)、选项、数据
  • TTL字段是由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。
  • 如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息 。
  1. 版本(Version):4位,表示IP协议的版本,当前版本为IPv4。
  2. 头部长度(Header Length):4位,表示IP包头部的长度,以32位字节为单位。
  3. 服务类型(Type of Service):8位,用于指定IP包的服务质量要求,如优先级、延迟、吞吐量等。
  4. 总长度(Total Length):16位,表示整个IP包的长度,包括头部和数据部分。
  5. 标识(Identification):16位,用于标识IP包的唯一性。
  6. 标志(Flags):3位,用于指示分片和重组的情况。
  7. 片偏移(Fragment Offset):13位,用于指示分片的偏移量。
  8. 生存时间(Time to Live):8位,表示IP包在网络中的生存时间,每经过一个路由器,该值减1,直到为0时被丢弃。
  9. 协议(Protocol):8位,指示IP包中数据部分的协议类型,如TCP、UDP等。
  10. 头部校验和(Header Checksum):16位,用于校验IP包头部的完整性。
  11. 源IP地址(Source IP Address):32位,指示发送方的IP地址。
  12. 目标IP地址(Destination IP Address):32位,指示接收方的IP地址。
  13. 选项(Options):可选字段,用于提供一些额外的功能或处理特殊的网络情况。
  14. 数据(Data):IP包的数据部分,根据协议类型的不同而有所差异。

二、 TCP和UDP

2.0 TCP与UDP对比

对比项目 TCP UDP
是否面向连接 是,①需要先将客户端与服务器的连接连好,然后在进行数据交互:服务器的listen()函数和accept();②因为使用TCP协议时,Linux内核协议栈为TCP连接创建了两个队列:1)半连接队列:用来保存处于SYN_SENT 和 SYN_RECV状态的请求;2)全连接队列:accept队列,用来保存正在数据交互(established状态)的客户端连接
是否可靠 是:使用以下方式保证是否可靠①数据包校验(16为数据校验和)防止发送过来的数据是错误数据②确认序列号,对失序报文进行重排③丢弃重复数据包,防止数据冗余重复④确认应答机制,接收方接受数据之后会发送一个确认⑤超时重传机制,发送方发出数据后会启动一个定时器,超过该定时器时间依旧未收到对方确认,便会重新发送该数据⑥流量控制(16位窗口大小)确保接收方收到的数据在自身缓冲区中不会溢出⑦拥塞控制,保证数据在网络中传播的可靠性,降低丢包的概率,提高TCP的可靠性
是否有状态
传输形式 字节流(报文首部20个字节):①是以字节为单位发送数据,可以以字节大小来拆分成多个数据包②可以先将数据存放在发送缓冲区中,可以等待数据到一定大小发送,也可以直接发送,没有固定大小 数据报文段 (首部8字节)发送固定长度的数据包,长度太长需要剪裁
通信 支持点对点通信,因为需要建立连接 支持一对一,一对多,多对多
传输效率 较慢(对某些实时性要求比较高的情况,选择UDP,比如游戏,媒体通信,实时视频流(直播);其它大部分情况下,HTTP都是用TCP,因为要求传输的内容可靠,不出现丢失) 较快
协议 HTTP、HTTPS、FTP、 SMTP、POP3/IMAP、Telnet HDCP、DNS、HTTP 3.0
应用场景 TCP协议可靠性较高,适用于数据传输的可靠性要求较高的场景,例如传输大文件或需要确保所有数据都能到达接收端的应用,如FTP、HTTP等应用程序 UDP协议则适用于对实时性要求较高的场景,例如音视频流媒体、在线游戏

2.1 TCP报文

2.1.1 TCP报文头部格式

在这里插入图片描述

  1. 首先,源端口号和目标端口号是不可少的,如果没有这两个端口号,数据就不知道应该发给哪个应用。
  2. 接下来有包的序号,这个是为了解决包乱序的问题。、
  3. 确认号,目的是确认发出去对方是否有收到。如果没有收到就应该重新发送,直到送达这个是为了解决丢包的问题。
  4. 接下来还有一些状态位。例如 sN 是发起一个连接,ACK 是回复, RST 是重新连接,FIN 是结束连接等。TCP 是面向连接的,因而双方要维护连接的状态,这些带状态位的包的发送,会引起双方的状态变更。
  5. 还有一个重要的就是窗口大小。TCP 要做流量控制,通信双方各声明一个窗口(缓存大小),标识自己当前能够的处理能力,别发送的太快,撑死我,也别发的太慢,饿死我。
  6. 除了做流量控制以外,TCP还会做拥塞控制,对于真正的通路堵车不堵车,它无能为力,唯一能做的就是控制自己,也即控制发送的速度。不能改变世界,就改变自己嘛。

2.1.1 TCP报文头生成

  1. 在双方建立了连接后,TCP 报文中的数据部分就是存放 HTTP 头部+数据,组装好 TCP 报文之后,就需交给下面的网络层处理。
    在这里插入图片描述

2.2 TCP 三次握手

2.2.1 过程

在这里插入图片描述

  • 服务器新建套接字,绑定地址信息后开始监听,进入listen状态
  • 客户端新建套接字绑定地址信息后调用connect,发送连接请求SYN,进入SYN_SENT状态,等待服务器确认
  • 服务器监听到请求之后,将连接放入内核等待队列中,并向客户端发送SYN和确认报文段ACK,进入SYN_RECD状态
  • 客户端收到sYN+ACK报文段后向服务端发送确认报文段,并进入established状态,开始读写数据
  • 服务端接收到客户端的确认报文,就进入established状态,进行读写数据

2.2.2 为什么握手是三次,而不是两次或者四次?

  • 两次不安全,四次没必要。tcp通信就是确保双方都具有数据收发的能力,得到ACK响应则认为对方具有数据收发的能力,因此双方都要发送SYN确保对方具有通信能力
  • 第一次握手是客户端发送SYN,服务端接收-服务端得出客户端的发送能力和服务端的接收能力都正常
  • 第二次握手是服务端发送SYN+ACK,客户端接收-客户端得出客户端接收能力正常,服务端发送能力正常,但是服务端还不知道客户端能否接收正常
  • 第三次握手是客户端发送ACK,服务器接收,-服务端得出客户端的收发能力正常,我自己的收发能力也正常

2.2.3 三次握手可以携带数据吗?

  • 第一次、第二次握手不可以携带数据,而第三次握手是可以携带数据的。假设第一次可以携带数据,如果有人恶意攻击服务器,每次都在第一次握手中的SYN报文放入大量数据,重复发送大量SYN报文,此时服务器会花费大量内存空间来缓冲这些报文,服务器就更容易被攻击了

2.2.4 TCP三次握手失败,服务端会如何处理?

  • 手失败的原因有两种,第一种是服务端没有收到SYN,则什么都不做;
  • 第二种是服务端回复了SYN+ACK后,长时间没有收到ACK响应,则超时后就会发送RST重置连接报文,释放资源

2.2.5 什么是半连接队列?全连接

  • 服务器第一次收到客户端的SYN之后,就会处于SYN_RECD状态,此时双方还没有完全建立连接。服务器会把这种状态下的请求连接放在一个队列里,我们把这种队列称之为半连接队列。
    • 短连接的优点:管理起来比较简单,建立存在的连接都是有用的连接,不需要额外的控制手段。
  • 当然还有一个全连接队列,就是已经完成三次握手,建立起来连接的就会放在全连接队列中,如果队列满了就有可能出现丢包现象

2.2.6 ISN(Initial Sequence Number)是固定的吗?

  • 当一端为建立连接而发送它的SYN时,它为连接选择一个初始序号。ISN随时间而变化,因此每个连接都将具有不同的ISN。ISN可以看作是一个32比特的计数器,每4ms加1 。这样选择序号的目的在于防止在网络中被延迟的分组在以后又被传送,而导致某个连接的一方对它做错误的解释。
  • 三次握手的其中一个重要功能是客户端和服务端交换 ISN(Initial Sequence Number),以便让对方知道接下来接收数据的时候如何按序列号组装数据。如果 ISN 是固定的,攻击者很容易猜出后续的确认号,因此 ISN 是动态生成的

2.3 TCP的四次挥手

2.3.1 四次挥手总结图

(Kriging_NSGA2)克里金模型结合多目标遗传算法求最优因变量及对应的最佳自变量组合研究(Matlab代码实现)内容概要:本文介绍了克里金模型(Kriging)与多目标遗传算法NSGA-II相结合的方法,用于求解最优因变量及其对应的最佳自变量组合,并提供了完整的Matlab代码实现。该方法首先利用克里金模型构建高精度的代理模型,逼近复杂的非线性系统响应,减少计算成本;随后结合NSGA-II算法进行多目标优化,搜索帕累托前沿解集,从而获得多个最优折衷方案。文中详细阐述了代理模型构建、算法集成流程及参数设置,适用于工程设计、参数反演等复杂优化问题。此外,文档还展示了该方法在SCI一区论文中的复现应用,体现了其科学性与实用性。; 适合人群:具备一定Matlab编程基础,熟悉优化算法和数值建模的研究生、科研人员及工程技术人员,尤其适合从事仿真优化、实验设计、代理模型研究的相关领域工作者。; 使用场景及目标:①解决高计算成本的多目标优化问题,通过代理模型降低仿真次数;②在无法解析求导或函数高度非线性的情况下寻找最优变量组合;③复现SCI高水平论文中的优化方法,提升科研可信度与效率;④应用于工程设计、能源系统调度、智能制造等需参数优化的实际场景。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现过程,重点关注克里金模型的构建步骤与NSGA-II的集成方式,建议自行调整测试函数或实际案例验证算法性能,并配合YALMIP等工具包扩展优化求解能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lweiwei@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值