网站建设公司的年报,可信网站查询官网,呼和浩特城乡建设网站,网站推广有哪些优势作者#xff1a;逍遥Sean 简介#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话#xff0c;可以三连支持一下~ 如有需要我的支持#xff0c;请私信或评论留言#xff01; 前言 计算机基础是… 作者逍遥Sean 简介一个主修Java的Web网站\游戏服务器后端开发者 主页https://blog.csdn.net/Ureliable 觉得博主文章不错的话可以三连支持一下~ 如有需要我的支持请私信或评论留言 前言 计算机基础是软件开发的基础它是软件开发人员必须掌握的一些基本知识和技能包括计算机体系结构、数据结构、算法、操作系统、计算机网络、数据库等方面的基础知识。这些知识和技能的掌握可以提高软件开发人员的开发效率和质量这对软件开发至关重要。 在软件开发中计算机基础知识可以帮助开发人员更好地理解开发平台和工具更好地编写高效、可维护的代码。例如了解数据结构和算法可以帮助开发人员设计和实现高效的程序了解操作系统和计算机网络可以帮助开发人员充分利用计算机资源和网络资源了解数据库可以帮助开发人员有效地管理数据。 有扎实的计算机基础对于软件开发的效率和质量有着重要的影响本文从几个问题里面搞清楚Java开发需要的一些计算机网络底层原理深入浅出打下网络知识基础 Java网络基础知识从几个问题里面搞清楚计算机网络底层原理 一、从HTTP请求理解网络分层原理网络通讯流程分层 二、TCP协议底层知识三、三次握手四次挥手四、粘包拆包五、连接与可靠性传输六、加密算法七、HTTPS加密原理 一、从HTTP请求理解网络分层原理
网络通讯流程 分层
为了简化网络的复杂度网络通讯的不同方面被分解为多个层次结构每一层只跟紧挨着的的上层或者下层进行交互将网络分层这样可以修改甚至替换某一层的软件只要层与层之间的接口保持不变就不会影响到其它层。
OSI七层模型
一个HTTP请求的分层解析
应用层HTTP协议属于应用层协议因此HTTP请求的第一层是应用层。在这一层客户端发起HTTP请求请求中包含请求方法、请求URL、HTTP协议版本、请求头部等信息。传输层HTTP请求通过TCP传输协议进行传输因此传输层是HTTP请求的第二层。在这一层TCP协议提供了可靠的数据传输并对数据进行分段。网络层在网络层对TCP数据进行封装为IP数据包并在网络中传递。数据链路层在数据链路层将IP数据包转换为数据帧并在物理媒介上传输。物理层在物理层数据被转换为电子信号通过介质传输至接收方。
当HTTP请求到达服务端后通过相同的方式逆向传输。
二、TCP协议底层知识
TCPTransmission Control Protocol是一种面向连接、可靠的传输层协议主要用于在网络上的不同主机之间传输数据。TCP协议在 OSI 网络模型的传输层中负责通过网络传输应用层数据并通过一些机制保证数据可靠到达。以下是TCP协议底层知识的介绍 TCP三次握手 TCP连接的建立采用三次握手的方式即发送方发送SYN接收方发送SYN/ACK发送方再发送ACK建立连接。三次握手的目的是确保双方都能收到对方的信息以便在之后的通信中能够可靠地传输数据。 TCP数据传输 TCP是面向流的协议将应用层数据分割成适当的大小的数据块称为 TCP段每个 TCP 段都有一个序列号接收方按照序列号的顺序重新组合数据。TCP通过拥塞控制、流量控制等机制保证数据可靠到达。 TCP四次挥手 TCP连接的关闭采用四次挥手的方式即发送方发送FIN接收方发送ACK接收方再发送FIN发送方发送ACK关闭连接。四次挥手的目的是确保双方都能正常关闭连接避免出现数据丢失或重复的情况。 TCP拥塞控制 TCP通过拥塞控制来避免网络拥塞和丢包。TCP会根据网络的负载情况来调整自己的发送速率避免发送过多的数据导致网络拥堵和数据丢失。 TCP流量控制 TCP通过流量控制来避免发送方发送过多的数据导致接收方缓冲区溢出。TCP接收方会向发送方发送窗口大小信息告诉发送方可以发送的数据量。发送方会根据接收方的窗口大小来控制发送速率避免数据堆积。
总之TCP协议是互联网传输中最常用的协议之一因为其可靠性和流控制等机制使其适用于各种应用场景。
三、三次握手四次挥手
三次握手和四次挥手是TCP协议中用于建立和终止连接的过程。 三次握手指的是在建立TCP连接时客户端和服务端之间需要进行三次数据交互。 客户端发送一个SYN同步数据包给服务端表示客户端想要与服务端建立连接。服务端接收到SYN数据包后向客户端发送一个SYN/ACK同步/确认数据包表示服务端同意连接请求并准备建立连接。客户端接收到SYN/ACK数据包后向服务端发送一个ACK确认数据包表示客户端也准备好了并且至此建立了TCP连接可以进行数据传输了。 四次挥手指的是在终止TCP连接时客户端和服务端之间需要进行四次数据交互。 客户端发送一个FIN结束数据包给服务端表示客户端想要终止连接。服务端接收到FIN数据包后向客户端发送一个ACK数据包表示服务端已经收到了客户端的请求并且准备好了。服务端发送一个FIN数据包给客户端表示服务端也准备好了并且请求客户端也关闭连接。客户端接收到FIN数据包后向服务端发送一个ACK数据包表示客户端已经收到了服务端的请求确认关闭连接。此时TCP连接已经完全关闭。 四、粘包拆包
粘包和拆包是在计算机网络中出现的两种常见问题。 粘包是当发送方连续发送多个数据包时由于网络传输的不确定性这些数据包可能会在接收方处合并成一个大的数据包导致接收方无法正确解析从而出现粘包现象。 拆包则是相反的情况当发送方发送的数据包过大时在传输过程中会被拆分成多个小的数据包进行传输但是接收方可能会在接收时只收到了部分数据包导致无法正确解析出现拆包现象。 为了解决粘包和拆包问题通常采用以下两种方式
基于消息边界的通信协议例如 HTTP、SMTP 等这些协议都是基于消息边界的协议即每个消息之间使用特定的分隔符或长度字段来分隔。使用协议报文长度标识例如 TCP 协议中的 MSS 和 IP 协议中的 MTU发送方在发送数据时需要根据协议规定的报文长度标识来分割数据并在数据头部携带数据长度信息接收方在接收数据时根据数据长度信息来分割数据包。
五、连接与可靠性传输
连接是指建立两个或多个设备之间的物理或逻辑连接以便它们之间可以进行通信。在互联网中连接通常是通过TCP/IP协议建立的。
可靠性传输是指确保数据在传输过程中不会丢失、损坏或重复。为了实现可靠性传输TCP协议使用了多种技术如数据分段、确认、重传和流控制。这些技术能够保证数据的准确传输并且保证了数据的可靠性。
当一个设备想要向另一个设备发送数据时它们需要建立一个连接。在连接建立后它们可以进行通信而且这个连接可以保持一段时间。如果数据在传输过程中发生了错误则TCP协议会使用一些技术来确保数据的准确传输并且在必要时重发数据确保数据的可靠性。 三次握手和四次挥手也是可靠性连接的技术之一 六、加密算法
加密算法是指将明文经过一定方式处理后转换为密文的过程。常见的加密算法有对称加密算法和非对称加密算法。
对称加密算法是指加密和解密使用的密钥是相同的常见的有 DES、3DES、AES 等。
非对称加密算法则是使用公钥和私钥两个不同的密钥进行加密和解密公钥可以公开用于加密数据而私钥只有密钥持有人可以使用用于解密数据和数字签名等操作。常见的非对称加密算法有 RSA、DSA、ECC 等。
七、HTTPS加密原理
HTTPSHypertext Transfer Protocol Secure是一种通过加密技术保证通信安全的HTTP协议。其加密原理主要包括三个部分密钥交换、加密算法和数字证书验证。 密钥交换 客户端通过与服务器端进行密钥交换双方生成一个共享的加密密钥用于后续的加密和解密过程。密钥交换一般通过公钥加密技术实现即服务器端通过公钥将密钥发送到客户端客户端再通过私钥将密钥解密出来。 加密算法 在密钥交换完成后双方使用共享密钥对通信内容进行加密。HTTPS采用的加密算法主要有对称加密算法和非对称加密算法。对称加密算法一般速度较快但是密钥需要在通信双方之间共享容易被窃取。非对称加密算法则采用公钥加密和私钥解密的方式安全性较高但是速度较慢。 数字证书验证 为了保证通信双方的身份真实可信HTTPS通常采用数字证书进行身份验证。数字证书中包含了服务器端的公钥和对应的身份信息客户端通过验证证书的真实性和合法性可以确定通信方的身份并避免被假冒者攻击。数字证书的验证一般是通过数字证书颁发机构CA进行CA会对证书申请者的身份进行核实保证证书的真实性和合法性。