计算机网络知识,七层协议
计算机网络整理(超全)
一、网络 7 层架构(ISO/OSI协议参考模型)
物理层:主要规范物理设备的标准(如网线接口类型、光纤接口类型等),用于实现比特流(即由1、0转化为电流强弱来进行传输)的传递工作,并在接收端将其转换回1、0形式(即模数转换与数模转换)。这一层次的数据被称为比特。
数据链路层:负责将来自物理层面的数据进行MAC地址封装与解封装操作(即生成帧的形式)。在这一层面工作的设备通常是交换机。
网络层面:负责将从下一层接收到的数据进行IP地址封装与解封装(如192.168.0.1),并在这一层次工作的设备通常是路由器。
传输层面:定义了一些用于传输数据的协议以及端口号(如WWW端口80等),例如:
- TCP协议(面向连接的协议)具备较高的可靠性但较低的传输效率;适用于对可靠性要求较高且数据量较大的场景。
- UDP协议(无连接状态下的协议)则恰恰相反,在可靠性要求不高且数据量较小的情况下被采用(例如QQ聊天使用的UDP协议)。
此外还负责将来自下一层的数据进行分段处理并最终重组送达目标地址。
会话层面:通过建立基于端口号的通路实现各系统之间的会话发起或响应请求(设备间的通信可基于IP地址或MAC地址或主机名进行)。
表示层面:主要对来自上一层的数据进行解析以及相关操作(包括加密/解密以及压缩/解压缩),其作用是将计算机能够识别的形式转化为人类可识别的形式(例如图片文件或音频文件)。
应用层面:主要为终端用户提供一些基础的应用服务(如FTP文件下载功能、Web页面浏览功能等),这些服务大多表现为终端用户能够直接使用的界面形式。(例如IE浏览器即是此类服务的一个典型代表)
二、TCP/IP 原理
TCP/IP 被称为因特网的主要通信协议家族,并非简单的‘TCP 和 IP 两个协议’的组合。根据协议分层模型分析,在这一族中包括四个层次:Network Interface Layer负责设备间的连接与数据传输管理;Network Layer处理数据包的整体传送;Transmission Layer确保数据在不同 Network之间的可靠传输;Application Layer则与 Applications交互。
1、网络访问层(Network Access Layer)
该层在TCP/IP参考模型中并未做具体说明。它仅说明主机需采用某种协议与其相连。
2、网络层(Internet Layer)
在体系结构中扮演核心角色的是互联网层(Internet Layer),它负责将数据分组发送到任意网络,并确保每个分组独立地向目标传输。这些数据包可能会经过多个子网络传输到达目的地,在此过程中接收端可能收到的数据包顺序与发送端并不一致。如果上层希望按照特定顺序接收数据包,则必须自行管理数据包的排序问题。互联网层使用因特网协议(IP, Internet Protocol)进行通信
3、传输层(Tramsport Layer-TCP/UDP)
Transport Layer使得源端与目的端机器上的对应实体能够实现对话。在此定义了两种两端到一端的协议:即传输控制协议(TCP)及其编码方式与用户数据报协议(UDP)。TCP是一种基于连接的设计,在其功能设计中不仅包含基本的数据传送而且具备可靠性保障、流量管理以及安全机制等关键功能。而UDP则是一种无需建立可靠连接的数据传送机制。
4、应用层(Application Layer)
应用层(Application Layer)涵盖所有上层网络协议系统,在此层次之上构建各种网络功能服务。该系统包括:虚端口通信协议(TELNET、TELecommunications NETwork)、文件传输服务(FTP)、邮件传输服务(SMTP)、域名解析服务(DNS)、新闻组信息发布服务(NNTP)以及超文本传输服务(HTTP)。
三、TCP 三次握手/四次挥手
1、三次握手
第一次握手: 主机 A 向服务器主机 B 发送一个位码为 syn=1 的数据包,并随机生成 seq number=1234567;基于 syn=1 的信息可知,主机 A 意图发起在线连接;
第二次握手: 主机 B 收到请求后需核实联机信息,随后向主机 A 发送 ack number=(主机 A 的 seq+1), syn=1, ack=1,并随机生成 seq=7654321 的数据包;
第三次握手: 主机 A 接收到上述数据包后需验证 ack number 是否正确,即确认是否为主机 B 发送的第一个数据包(seq number+1)以及 ack 位码是否为 1;若无误,主机 A 将回复 ack number=(主机 B 的 seq+1), ack=1;主 机 B 收到此反馈后即可确认连接建立成功。
2、四次挥手
TCP 建立连接需要经过三次握手过程而断开连接则需四次握手这是因为 TCP 连接采用半闭式设计原理即当一方完成数据传输任务后会发出一个 FIN 指令用于通知对方即将终止该方向的通信
为什么会有TIME_WAIT状态:
确保有足够的时间让对方收到ACK包
避免新旧连接混淆
3、TCP/IP状态
1、LISTENING(listening)
FTP服务启动后首先处于侦听(LISTENING)状态。
2、ESTABLISHED(established)
建立连接。表示两台机器正在通信。
3、CLOSE_WAIT
当对方主动关闭连接或因网络异常导致连接中断时,本方的状态将变为CLOSE_WAIT状态。在此情况下,本方应调用close()函数以确保连接得到正确关闭。
4、TIME_WAIT
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。
5、SYN_SENT
SYN_SENT状态标识请求连接。当访问其他计算机的服务时需要先发送同步信号至该端口,在此状态下当前状态仍为SYN_SENT;若连接建立成功,则状态更新为ESTABLISHED。
四、TCP 长连接与短连接
1、长连接和短连接使用原因
在采用TCP协议进行网络通信的情况下,在实际的读写操作开始前,服务器和客户端之间必须先进行一次连接建立。一旦完成读写操作后不再需要该连接时,则可释放该连接。其中,建立一个新连接通常会经历三次握手流程(SYN、SYN-ACK、ACK),而断开一个现有连接则需执行四次挥手(FIN、ACK、FIN、ACK)。因此,在每个新旧连接转换过程中都需要消耗相应的资源与时间支持
2、HTTP的长连接和短连接
HTTP的长连接和短连接本质上是TCP长连接和短连接。
默认情况下,在HTTP/1.0协议下采用短连接策略。即每当客户端与服务器完成一次完整的HTTP操作时, 就会创建一个新的网络会话。任务结束后立即断开当前的网络会话。在网页内容加载过程中, 每次遇到一个新的外部资源请求时(例如JavaScript文件, 图像文件或CSS文件), 计算机将启动新的网络会话。
而自HTTP/1.1版本开始,默认采用长连接方式,并以此维持其连通性特点。当采用长连接的HTTP协议时,在响应头端将添加此行代码块:
链接:keep-alive
在建立长时间连接时,在网页页面完成加载后客户端与服务器之间的TCP数据传输通道不会被关闭。当客户端再次访问该服务器时会继续利用这条已建立的通道进行数据传输。Keep-Alive功能并不会持续保持开启状态它有一个维持时间可以在不同的服务器软件中(例如Apache)设置相应的维持时间参数来实现对长连接的支持。要实现长时间保持连接双方都需要支持Long-Keep-Alive协议。
3、TCP—长连接
所谓长连接即允许多个数据包依次传输当TCP连接保持开放时即使没有当前的数据包待发送也需要双方持续发送检测报文以维持该连接通常无需手动重传检测报文即可维持其活跃状态在这种情况下不会触发RST报文也不会完成四次握手过程
通信过程包括交替进行的"建立初始会话"与"发送/接收心跳包"阶段。即使存在长时间无数据交换的情况,系统仍需定期发送心拍包来维持会话的有效性。
TCP存活机制主要用于保障服务器端对客户端存活状态的感知。当客户端出现故障导致部分连通状态无法正常工作时,若此时服务器仍在等待客户端的数据输入,则存活机制将主动采取措施检测这种异常情况。
4、TCP—短连接
简式通信连接是指在通信双方存在数据交互时创建一个TCP 连接实例,并在数据发送完成后关闭该 TCP 连接实例(操作相对简便,在这种情况下所有建立的链接都是有效的链接);
连接→数据传输→关闭连接;
5、应用场景
长连接:主要用于频繁的操作(读写)以及点对点的通讯,并且在实际情况中通常不会让连接数量过多。每个TCP连接都需要经历三个握手过程(三步),这意味着每次建立或断开都需要时间。如果每个操作都先建立一个TCP连接再执行操作的话,在处理频率较高的情况下会导致整体速度明显下降;因此,在完成一次操作后不再关闭该TCP连接;在下一次需要使用时直接发送数据包即可。
例如,在数据库中,默认情况下通常会采用长连接方式;若采用短连接进行频繁通信可能导致socket异常;同时频繁创建socket也会造成资源利用率下降
**短连接:**通常采用HTTP 1.0协议中的短连接机制(HTTP/1.0仅支持单个握手周期建立一个会话并断开),而HTTP/1.1则引入了带时间戳的时间戳字段以及最大重传次数字段以支持长时间保持会话状态的功能。当采用基于时间戳的长连接机制时,在客户端发起成千上万甚至更多并发请求的情况下会占用大量资源。因此,在客户端请求频率不高但并发量较大的情况下更适合使用短链接。
五、 HTTP 原理
HTTP是一种不依赖会话维持的状态的协议。这种"无状态"特性意味着客户端(如Web浏览器)与服务器之间无需建立持续性的连接通道,在客户端发送请求至服务器后立即关闭该通道,并不会在服务器上保留任何与该通道相关的相关信息。(此处补充说明:这种设计使得系统能够更加高效地处理大量并发请求而不产生额外负担)。HTTP采用了基于请求/响应的通信模型:当客户端向服务器发送一个请求时(通常是一个数据包),后者将解析该数据包并生成相应的响应数据包;随后将这些响应数据包依次返回给客户端。(此处补充说明:这一系列的数据传输操作构成了完整的HTTP通信过程)
1、地址解析
通过客户端浏览器发起请求至该页面:http://www.lydms.com:8080/index.htm ,随后将从该页面获取协议名称、主机名称、端口信息以及路径信息。具体而言,在后续步骤中会解析得到以下结果:
支持的协议标识为 http;
解析得到的主机名称为 www.lydms.com;
使用的端口号为 8080;
对应的对象路径为 /index.htm;
随后需通过DNS系统对 localhost.com 进行解析以获取对应的IP地址。
2、封装 HTTP 请求数据包
把以上部分结合本机自己的信息,封装成一个 HTTP 请求数据包
3、封装成 TCP 包并建立连接
封装成 TCP 包,建立 TCP 连接(TCP 的三次握手)
4、客户机发送请求命
在建立连接之后,在完成认证流程并获得授权的情况下
5、服务器响应
当服务器接收到请求时, 发送相应的响应数据, 其格式遵循一条状态记录线路, 包含该通信过程所使用的协议版本号标识符; 包含带有成功返回状态或错误返回状态的一个代码字段; MIME 头身之后包含服务器相关信息以及实体的信息, 并可能携带附加内容.
6、服务器关闭 TCP 连接
当Web服务器向浏览器发送请求数据时就会关闭该连接;如果在浏览器或服务器的头信息中添加此行代码Connection:keep-alive那么该连接在后续的数据传输过程中将始终保持开启状态因此允许浏览器通过同一通道持续发送新的请求这种持续的连接操作减少了为每个新请求建立临时链接所需的时间同时进一步减少了整个网络传输过程所消耗的带宽
六、HTTPS
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是一种旨在保障通信安全的HTTP传输介质。简单来说,它是在标准HTTP基础上增加了加密层的技术实现。该协议的核心技术基于SSL协议,在实际应用中通常采用端口号443进行通信。
1、SSL/TLS之间的关系
SSL 为‘Secure Sockets Layer’ 的缩写,在中文中被称作‘安全套接层’。它于 1990年代中期由网景公司开发。为何需要开发 SSL 协议?由于当时互联网上的 HTTP 协议采用明文传输,在通讯过程中存在诸多不便:例如信息传输过程中容易遭受窃听(eavesdropping)和篡改。为此目的而开发出 SSL 协议。
自1999年起,SSL 因其广泛应用而已被公认为互联网领域的核心标准之一。当年IETF完成了对SSL的标准制定工作。正式名称被确定为TLS(即"Transport Layer Security"的缩写),中文名称则为"传输层安全协议"。
普遍认为这两个术语常被并联使用(SSL/TLS),这是因为它们本质上属于同一概念的不同阶段。
2、建立连接获取证书
当SSL客户端通过TCP协议与服务器建立连接时(使用443端口),同时,在常规的TCP握手过程中请求证书。而客户端将包含自身可实现算法列表以及其他所需信息的消息发送给Server;其中包含了客户端可实现的所有算法列表以及其他所需信息;Server将返回一个数据包并确定本次通信所需的算法;最后Server将返回包含目标域名、颁发该证书的企业以及公共密钥的信息 certificates。
3、证书验证
Client接收到服务器返回的有效数字证书后,识别该证书所附CA机构,并通过该CA机构的有效公钥验证该证书签名的真实性;同时确保书上所列域名与实际连接到的域名一致。
4、数据加密和传输
如果确定认证文件有效,则制作一个对称密钥并通过使用目标服务器的公开密钥执行加密操作。随后将该数据发送至目标服务器端。目标服务器通过利用自身的私有密钥执行解码操作来获取原始内容,并使得这两台设备能够采用对称加密方法实现通信。
在这里插入图片描述
六、CDN 原理
CND 一般包含分发服务系统、负载均衡系统和管理系统。
1、分发服务系统
其中核心功能模块由各个Cache服务器承担。其中一部分主要负责即时响应用户请求并高效传递所获取的内容;另一部分则负责实时更新内容以确保与源站保持高度同步的状态。根据不同类型的内容以及提供的服务种类需求,在分发服务系统中形成了多个专门的服务子系统体系:例如基于网页加速技术构建的网页加速服务、基于流媒体技术开发的流媒体加速服务以及基于应用层架构设计的应用加速服务等。每个子服务系统均构成一个分布式的服务集群,在保证完成内容同步更新与高效响应用户请求的同时还具备对各Cache设备运行状态进行实时监控的能力,并将相关信息数据反馈至上层管理调度系统以便其依据预设策略自主选择合适的Cache设备来处理用户的实际请求信息
2、负载均衡系统
在整个 CDN 系统中担任核心角色的是负载均衡系统。它负责对所有用户的请求进行分配调度,并确保将请求分配到最合适的服务器节点上。该系统采用分级架构来管理网络流量的平衡。其中最为基础的两极架构包含全局负载均衡(GSLB)和本地负载均衡(SLB)。GSLB 根据用户的 IP 地址以及请求内容等信息,在遵循就近原则的基础上决定将流量发送至哪个服务节点上。通常采用 DNS 解析或应用层重定向(如 Http 3XX 重定向)的方式实现这一功能。而 SLB 则专注于处理节点内部的流量平衡问题,在将流量从 GSLB 分配至 SLB 的过程中会根据节点内部各个缓存设备的状态以及内容分布情况等信息来进行重新路由配置。目前 SLB 的实现方案主要包括四层调度(LVS)、七层调度(Nginx)以及链路级负载调度等多种策略。
3、管理系统
分为‘运营管理和网络管理’两个主要子系统。网络管理系统负责对 CDN 系统的设备、拓扑结构以及链路运行状态实施监控,并处理故障相关问题;为用户提供一种直观且全面的集中化资源监控平台。而运营管理则负责处理与业务相关的CDN系统交互所需的数据收集、整理与输出工作。
包括用户管理、产品管理、计费管理、统计分析等。
七、TCP/IP协议族
TCP/IP只提供无连接、不可靠的服务。
传输之前需要进行三次握手。
该协议的主要功能是将这些信息打包进一个IP分组里,并将其顺利送达最终的目的地节点;通过将各个分组拆解并重新组合,在确保各组能够按照既定路线送达的同时实现跨网通信。
1、应用层协议—文件传输服务(FTP)
用来在计算机之间传输文件。
实际Internet上的FTP服务是一种无身份认证的FTP服务,在其中配置了一个特殊的用户名-anonymous供一般用户访问。
执行anonymous登录操作至FTP服务器后, 其运作模式类似于常规FTP. 出于安全考虑, 在大多数情况下,默认设置下匿名FTP服务器仅限于下载功能而不支持上传文件.
FTP在客户端向服务器创建两条TCP连接:其中一条为控制连接(用于传输命令及参数),端口21;另一条则为数据连接(用于传输文件),端口20。
2、应用层协议—远程登录协议(Telnet)
依赖 Telnet 协议实现用户终端与服务器间的连接,在服务器端通过 TCP 协议接收并处理客户端的请求指令,并将处理后的结果传输回客户端终端设备。客户端接收到返回的数据后会自动完成相应的转换操作并在屏幕上展示相关内容。基于 Telnet 命令的执行方式也被称为 Telnet 远程登录服务。
由客户端软件、服务器软件以及Telnet通用协议三部分组成。
3、应用层协议—电子邮件协议(SMTP)
电子邮件(E-mail)利用计算机进行信息交换的电子媒体信件。
基于客户端/服务器架构的系统由包含E−mail客户端应用程序、E−mail服务器以及通信协议三个组成部分构成。当用户试图发送一封电邮时,在网络中首先会被发送到自己的注册邮箱服务提供商所在的邮件服务器主机上,在这一阶段完成后会继续在网络中经过多个节点(如路由器)将电邮传输至目标电邮服务提供商所在的 mail 服务器主机上,在此之后电邮会被正确解析至其对应的电子邮箱,并最终由用户的网络终端设备访问并驱动电子邮件管理程序,在线下载文件以完成接收过程。
SMTP:简单邮件传输协议
MIME:Internet邮件扩充协议
PEM:增强私密邮件保护协议
POP机制用于保护用户未被及时取回的邮件内容。该协议基于纯文本格式设计,并规定每一次传输均采用标准E-mail格式进行操作。
4、传输层协议—TCP
基于IP提供的不可靠数据服务的基础上, 为应用程序提供一个可靠的、面向连接的、全双工的数据传输服务。同时, 在TCP中, 源主机与目的之间的建立与关闭连接操作均需要通过三次握手机制来确认其完成情况。然而, 尽管TCP实现了可靠的数据传输功能, 但这一功能是以通信效率有所牺牲作为代价的。
基于IP提供的不可靠数据服务的基础上, 为应用程序提供一个可靠的、面向连接的、全双工的数据传输服务。同时, 在TCP中, 源主机与目的之间的建立与关闭连接操作均需要通过三次握手机制来确认其完成情况。然而, 尽管TCP实现了可靠的数据传输功能, 但这一功能是以通信效率有所牺牲作为代价的。
TCP采用了重发技术:当发送数据时启动定时器,在未得到应答的时间段内就会重复发送数据。
5、传输层协议—UDP
用户数据报协议是一种不可靠且缺乏连接机制的通信协议,在缺乏可靠性的前提下不具备错误检测功能;而TCP通信机制能够确保数据传输过程中的连通性,在可靠性方面优于UDP;在传输效率方面 UDP表现出更高的性能;此外 TCP能够自动管理端口间的开销与关闭流程 无需管理端口间的开销与关闭流程 不负责自动重传丢失的数据包 不会对接收到的数据进行顺序排列 无法去除重复发送的数据报 不负责自动重传丢失的数据包 不会对接收到的数据进行顺序排列 无法去除重复发送的数据报
TCP:交互式会话应用程序(FTP等)。
UDP:自己进行错误检测、不需要检测错误(DNS、SNMP)。
6、网际层协议—IP
IP仅限于提供无连接、不可靠的服务,并将差错检测与流量控制等任务授权给其他层次的协议
将上层的数据(TCP、UDP)打包进一个IP数据包里;
IP地址下的所有这些流量都会发送至目标;
为了让这些信息能在网络接口处进行处理而被分割开来处理这些流量;
计算路径信息以便确定到达其他网络的目的地。
7、网际层协议—ICMP
互联网控制信息协议(ICP),主要用于发送错误报告。
该协议使IPv4更加可靠。
同样地,也依赖于IPv4来进行数据传输。
ping工具通过ICMP包来判断目标是否可达。
5种差错报文:(源抑制、超时、目的不可达、重定向和要求分段)
4种信息报文:回应请求、回应应答、地址屏蔽码请求和地址屏蔽码应答。
8、网际层协议—ARP和RARP
地址解析协议(ARP)和反地址解析协议(RARP)
ARP的功能在于将网络层的IP地址转换为物理层的MAC地址;而RARP则负责将物理层的MAC地址还原为网络层的IP地址。所有设备都拥有独一无二的MAC地址(由网卡提供)。为了避免底层协议差异及物理层特性的干扰,在数据传输过程中必须实现IP与MAC之间的相互转换。
9、网络接口层协议—以太网(Ethernet IEEE 802.3
Ethernet IEEE 802.3:该技术属于标准局域网络;其数据传输速率可达1,655,676千比特每秒(Gbps),主要采用光纤作为信息传递的主要媒介。
Ethernet IEEE 802.4p:高速以太网络;其设计目标是实现最高可达967 Mbps的数据传输速率;通常采用双绞线作为信号传导的主要路径。
Gigabit Ethernet (IEEE 802.4q):支持高达1,554 Mbps的数据传送能力;该网络架构通过光纤或双绞线提供稳定且高效的连接选项
10、网络接口层协议—令牌环网(Ethernet IEEE 802.5)
1、只有拥有令牌才可以发送数据。
2、发送数据时,需要捕获一个令牌。
3、令牌不为空,需要等待。
11、网络接口层协议—光纤分布式数据接口(FDDI)
以光纤为传输介质。
通过建立双环体系架构,在两层循环之间实现信息的双向逆向传递。在该架构中,其中之一被称为主循环体(master loop),另一方则为副循环体(secondary loop)。通常情况下,在主循环体中完成数据信息的传递任务,在副循环体中则保持静默状态以确保系统的稳定性与协调性。
双环设计的主要目标是实现高可靠性和稳定性的保障。FDDI所规定的传输介质包括单模光纤和多模光纤两种类型。
12、网络接口层协议—点对点协议(PPP)
主要用于实现通过拨号方式实现的广域网络接入。该方案具有操作简便且提供用户身份验证功能的特点,并能有效解决主机间IP地址分配的问题。提供了一种适用于多种设备间建立简便连接的通用方法。
基于以太网协议运行的PPP机制被采用来实现基于以太网资源的认证接入方式,并被称为PPPoE技术方案。目前在ADSL接入方案中应用最为普遍的技术标准是PPPoE
ATM网络撒花姑娘运行PPP来管理用户再认证的方式成为PPPoA。
PPPoA和PPPoE运行原理相同,不同的是运行环境的不同。
13、其他—ADSL(非对称用户数据线)
ADSL Modem上网拨号方式有3中,即专线方式(静态IP)、PPPoA和PPPoE。
ADSL专用带宽, 具有安全性。价格低的情况下, 通过旧电话线路, 可以将电话设备与ADSL Modem区分开来。
14、其他—IPv4和IPv6
IPv4:32位二进制,能表示IP地址个数:2^32=40亿
IPv6:128位二级制,能表示IP地址个数:2128=3.4*1038。
