计算机网络知识|青训营笔记

109 阅读7分钟

计算机网络七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。 1.应用层:为应用程序提供交互服务。在互联网中的应用层协议很多,如域名系统DNS、HTTP协议、SMTP协议等。 2.表示层:负责数据格式的转换,如加密解密、压缩解压缩等。 3.会话层:负责在网络中的两节点之间建立、维持和终止通信,如服务器验证用户登录便是由会话层完成的。 4.运输层:负责向两台主机进程之间的通信提供数据传输服务。传输层的协议主要有传输控制协议TCP和用户数据协议UDP。 5.网络层:选择合适的路由和交换结点,确保数据及时传送。主要包括IP协议。 6.数据链路层:将网络层传下来的IP数据包组装成帧,并再相邻节点的链路上传送帧。 7.物理层:实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和通信手段的差异。

RTT往返时间:RTT是数据完全发送完(完成最后一个比特推送到数据链路上)到收到确认信号地时间。

TCP:传输层,TCP是用来支撑端对端进行数据流传输的传输协议,会先经历三次握手:客户端先向服务端发送连接请求,服务端返回确认,客户端返回确认收到确认。TCP在接受待传的数据流时会将数据流切成适当长度的若干个数据包,每个包贴一个序号,序号能够保证接收端按序号接收包,同时接收端收到包后会返回相应的确认(ACK),若发送端在合理的往返时延(RTT)内未接受到确认,就会认定对应包丢失,会将其重传。TCP通过一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和,这也导致了HTTP基于TCP的时候会出现队头堵塞,即序号靠前的包出现错误,则需要等待错误解决才能继续传输。

UDP:传输层,UDP是用来无连接地进行数据传输地传输协议,其区别于TCP有:UDP额外空间开销很小,传输端与接收端不建立联系,没有可靠性保证、顺序保证和流量控制字段等,数据传输效率高,但若传输过程数据被篡改能够通过校验值发现错误,但是不会对错误校正,只是将损坏的消息扔掉或提供警告信息。UDP并不会对数据分段,而是直接包装发送。区别于TCP,UDP是无序的,这使得基于UDP的HTTP3不存在队头堵塞。

QUIC:传输层,快速UDP网络连接,在第一次数据传输时实现TLS密钥的生成与对接,此处消耗了1RTT,同时客户端将来自服务器的密钥进行缓存,下次建立连接就可以直接使用缓存的密钥,实现0RTT。但是长期密钥泄露出去容易将数据泄露,因此QUIC还使用了前向安全来保证之前的数据不会泄露出去。

TLS:传输层,TLS是为互联往往通信提供安全及数据完整性保障的安全协议,其会将两个用于在两个应用程序透过网络创建起安全的连接,防止在交换数据时收到窃听及篡改。客户端先连接到支持TLS协议的服务器,要求服务器创建安全连接并列出受支持的密码组合(加密密码算法和散列算法),服务器从中决定加密算法和散列算法,并通知客户端,服务器发回其数字证书,内含服务器的名称,受信任的证书颁发机构(CA),和服务器的公钥,客户端接收证书和公钥,并将公钥加密成随机生成的密钥发给服务器,若有步骤失败则断开所有链接。

HTTP超文本传输协议:应用层,HTTP是一个简单的请求—相应协议,通常运行在TCP之上,指定了客户端可能发给服务器什么样的消息以及得到什么样的响应,请求和响应消息的头以ASCII形式给出。基于HTTP的客户/服务器模式的信息交换过程,它分四个过程: (1)客户与服务器建立连接; (2)客户向服务器提出请求; (3)服务器接受请求,并根据请求返回相应的文件作为应答; (4)客户与服务器关闭连接。 客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。 HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。 请求报文格式:请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体; 应答报文格式:状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体。

HTTP1.0:每一个tcp只能发一次请求,发送数据完毕,连接就断开,如果还想请求其他资源,就必须新建一条新的tcp连接。 HTTP1.1:一个TCP可以同时发送多个请求,但是响应依旧是一个响应完才能进行下一个,存在队头堵塞,且无法多路复用。 HTTP2:将请求和响应分割成更小的帧,乱序同时传输,接收端将帧重组成数据包,这解决了应用层的队头阻塞,但是这些帧依旧要遵循“丢包重传”机制,因此TCP层的队头阻塞依旧存在,并且更为严重,因为采用TCP复用,无法建立新的TCP连接。 HTTP3:不再使用TCP,而是使用基于UDP的QUIC,不仅减少建立连接时的多次握手,还解决了队头阻塞。

WebSocket:从HTTP升级而来,有状态的持久连接,服务端可以主动推送消息,用WebSocket发送消息延迟比HTTP低。

网络安全三要素: 机密性:攻击者无法获知通信内容 完整性:攻击者对内容进行篡改时能被发现 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信

机密性: 对称加密:加密、解密用同样的密钥 非对称加密:加密、解密使用不同的密钥(公钥的私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密 加密需要加密算法和密钥等信息(统称为秘密信息),但网络是明文的,不安全。

完整性: 实现完整性步骤: 1.有明文m,密码散列函数H,以及一个密钥s 2.计算H(m+s)获得哈希值h 3.将m和h组合成新信息m+h 4.接收方拆分m+h,重新计算H(m+s)得h‘,对比h’和h 因此要想实现完整性,通信双方需要先有秘密信息