八股文之计算机网络

TCP/IP 网络模型有哪几层

该模型用来解决不同设备间的进程通信,就需要网络通信,该模型就应运而生。首先是应用层,我们所接触的App都是在这一层实现的,当不同的设备需要通信时,就需要把数据发给传输层,传输层支持两个传输协议,TCP和UDP,TCP应用广泛因为它具有可靠性,顺序性,能进行流量控制,拥塞控制,适用于长连接,适用于事务性应用,它可以确保数据被不丢失和不被篡改。UDP也有自身的优势,UDP没有TCP的连接建立过程和拥塞控制机制,在传输的过程中延迟较低,在简单的应用场景下更加合适,因为它的头部较小,没有复杂的控制机制,UDP支持广播和多播,适用于实时广播、流媒体等,UDP没有连接的概念,适用于一些短期通信的场景。接下来就是网络层了,传输层就作为应用数据传输的媒介,具体的传输路线由网络层管理,网络层采用的是IP协议,会将传输层的报文作为数据部分,再加上IP头部组装成IP报文,如果IP报文大小超过了MTU(以太网中一般就是1500字节)就会再次进行分片,再这一层需要寻找匹配的网络号和主机号(IP按位与子网掩码,IP按位与子网掩码的取反),IP协议还需要进行路由,当数据包到达一个网络节点,就需要通过路由算法决定下一步怎么走。最后数据到了网络接口层,在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上,以太网在判断网络包目的地时和 IP 的方式不同,必须采用相匹配的方式才能在以太网中将包发往目的地,而 MAC 头部就是干这个用的,所以,在以太网进行通讯要用到 MAC 地址。网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

在浏览器输入一个网址到网页显示,这期间发生了什么

  1. 域名解析(DNS解析):首先,浏览器会将输入的网址中的域名部分发送到DNS(域名系统)服务器,以获取与该域名关联的IP地址。DNS服务器将域名解析为对应的IP地址,以便后续连接到正确的服务器。

  2. 建立TCP连接:浏览器使用获取到的IP地址,通过TCP(传输控制协议)建立与服务器的连接。这涉及一个三次握手的过程,其中浏览器和服务器之间进行通信以确保连接的建立。

  3. 发送HTTP请求:一旦TCP连接建立,浏览器将HTTP请求发送到服务器,请求特定的网页内容。HTTP请求中包含请求的方法(GET、POST等)、请求的资源路径、协议版本等信息。

  4. 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容和路径来处理请求,然后准备要返回的HTTP响应。

  5. 服务器发送HTTP响应:服务器将请求处理后的网页内容封装成HTTP响应,并发送回浏览器。HTTP响应中包含响应状态码、响应头部和响应体等信息。

  6. 接收响应:浏览器接收到服务器发送的HTTP响应后,会解析响应内容,其中包括状态码、响应头部和响应体等。

  7. 渲染页面:浏览器根据接收到的响应内容,开始渲染页面。它会解析HTML、CSS和JavaScript等内容,并在页面上显示出来。浏览器会按照文档对象模型(DOM)和渲染树的方式来构建页面的可视化表示。

  8. 加载资源:在渲染页面的过程中,浏览器还会下载页面所需的其他资源,如图片、样式表、JavaScript文件等。这些资源的加载是并行进行的,以提高页面加载速度。

  9. 执行JavaScript:如果页面中包含JavaScript代码,浏览器会执行这些代码,可能会改变页面的内容、交互和样式。

  10. 显示页面:最终,浏览器将渲染好的页面显示在用户的屏幕上,用户可以与页面进行交互,点击链接、填写表单等。

    总的来说,从键入网址到网页显示期间,涉及域名解析、建立TCP连接、发送和接收HTTP请求与响应、解析和渲染页面等多个步骤,这些步骤协同工作,使用户能够快速访问并浏览网页内容。

TCP为什么要三次握手四次挥手,一次握手和一次挥手不可以吗

TCP协议的三次握手和四次挥手是为了确保可靠的连接建立和断开,以应对不同网络环境下可能出现的问题和情况。一次握手和一次挥手是不足以满足这些需求的,下面解释一下为什么需要三次握手和四次挥手:

三次握手(建立连接):

  1. 第一次握手:客户端发送连接请求报文(SYN)给服务器,请求建立连接。

  2. 第二次握手:服务器收到客户端的连接请求后,回复一个确认报文(SYN + ACK),表示收到请求,并同意建立连接。

  3. 第三次握手:客户端收到服务器的确认后,再次回复一个确认报文(ACK),表示连接已建立。

    三次握手的主要目的是确保双方都同意建立连接,以及确认双方的通信能力正常。如果仅有一次握手,不能完全保证双方的通信能力,因此可能会导致不稳定的连接。

四次挥手(断开连接):

  1. 第一次挥手:客户端发送连接释放报文(FIN)给服务器,表示客户端没有数据要发送了,请求断开连接。

  2. 第二次挥手:服务器收到客户端的释放请求后,发送一个确认报文(ACK),表示已收到请求。

  3. 第三次挥手:服务器发送自己的连接释放报文(FIN)给客户端,表示服务器也没有数据要发送了,准备断开连接。

  4. 第四次挥手:客户端收到服务器的释放请求后,发送一个确认报文(ACK),表示已收到请求。

    四次挥手的过程是为了确保双方都完成数据的传输和处理,以及释放连接资源,避免在数据未完全传输或处理完毕时就断开连接,导致数据丢失或错误。

总的来说,三次握手和四次挥手的设计是为了保证连接的可靠性和数据的完整性,在不同网络环境下能够应对各种可能的问题,确保通信的稳定和可靠。

你说到数据安全,你可以说说对称加密和非对称加密吗?

  1. 对称加密:在对称加密中,同一个密钥被用于加密和解密数据。这意味着发送方和接收方都必须共享同一个密钥。常见的对称加密算法包括DES(Data Encryption Standard)、AES(Advanced Encryption Standard)等。对称加密的优点是加解密速度较快,但密钥的管理和分发相对复杂,容易受到安全威胁。

  2. 非对称加密:非对称加密使用一对密钥,分别是公钥和私钥。发送方使用接收方的公钥来加密数据,而接收方使用自己的私钥来解密数据。反之亦然。非对称加密算法的常见代表是RSA(Rivest-Shamir-Adleman)。非对称加密能够提供更好的安全性,因为私钥不需要与其他人共享,但相对来说加解密速度较慢。

https为什么安全,怎么实现的

HTTPS(Hypertext Transfer Protocol Secure)是一种通过加密和身份验证来保护网络通信的协议,它在传输数据时使用了SSL(Secure Sockets Layer)或TLS(Transport Layer Security)加密协议,从而提供了更高的安全性。HTTPS的安全性体现在以下几个方面:

  1. 数据加密: 在HTTPS中,传输的数据会通过加密算法进行加密,使得未经授权的第三方无法解读和窃取数据内容。这防止了数据在传输过程中被拦截和篡改。

  2. 身份验证: HTTPS使用了数字证书来对服务器进行身份验证,确保你与服务器通信的是预期的合法服务器,而不是恶意的中间人。这样可以防止“中间人攻击”等安全威胁。

实现HTTPS安全的过程如下:

  1. 获取SSL/TLS证书: 网站管理员需要从权威的证书颁发机构(Certificate Authorities,CA)处获取SSL/TLS证书。证书中包含了网站信息、公钥等,证明了服务器的身份。
  2. 配置服务器: 服务器需要配置支持HTTPS协议,一般是在Web服务器(如Apache、Nginx)上进行配置。配置的过程包括指定证书、私钥、加密算法等信息。
  3. 建立安全连接: 当客户端(浏览器)向服务器发起连接请求时,服务器会返回证书。浏览器通过证书中的公钥加密一个随机生成的对称密钥,并将其发送给服务器。
  4. 握手过程: 服务器收到客户端发送的对称密钥后,使用自己的私钥进行解密,得到了对称密钥。接下来的通信会使用这个对称密钥来进行加解密。此外,服务器和客户端会交换一些用于后续通信的加密参数。
  5. 安全通信: 一旦握手成功,客户端和服务器之间的通信就会使用对称密钥进行加密,从而保障数据的隐私和完整性。

需要注意的是,虽然HTTPS提供了更高的安全性,但也并非绝对安全。不正确的配置、失效的证书、被劫持的域名等都可能影响HTTPS的安全性。因此,维护证书的有效性、正确配置服务器以及及时更新证书等都是保障HTTPS安全的重要步骤。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/49271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java版B/S架构 智慧工地源码,PC、移动、数据可视化智慧大屏端源码

智慧工地是什么?智慧工地主要围绕绿色施工、安全管控、劳务管理、智能管理、集成总控等方面,帮助工地解决运营、管理方面各个难点痛点。在互联网的加持下促进项目现场管理的创新与发展,实现工程管理人员与工程施工现场的整合,构建…

centos9 mysql8修改数据库的存储路径

一、环境 系统:CentOS Stream release 9 mysql版本:mysql Ver 8.0.34 for Linux on x86_64 (MySQL Community Server - GPL) 二、修改mysql的数据库,存储路径 查看目录数据存储的位置 cat /etc/my.cnf操作 1、新建存放的目录,…

【JAVA基础】 IO详解

【JAVA基础】 IO详解 文章目录 【JAVA基础】 IO详解一、概述二、IO流的作用三、IO流的使用场景四、IO流的分类4.1 传输数据的单位分:4.2 数据传输的方向分:4.3 流的角色的不同分: 五、IO流体系六、字节输入流InputStream七、字节输出流 Outpu…

Springboot+Netty+WebSocket搭建简单的消息通知

SpringbootNettyWebSocket搭建简单的消息通知 一、快速开始 1、添加依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.36.Final</version> </dependency> <dependency>…

c++ 友元 运算符重载详解

友元 c是面向对象的&#xff0c;目的之一&#xff1a;封装 封装&#xff1a; 优点之一&#xff0c;就是安全。 缺点&#xff1a;在某些特殊的场合&#xff0c;不是很方便。 华为与IBM 40亿的咨询故事 IBM需要对华为各级部门做深度咨询分析&#xff0c; 为了提高咨询效率&a…

Transformer在医学影像中的应用综述-分类

文章目录 COVID-19 Diagnosis黑盒模型可解释的模型 肿瘤分类黑盒模型可解释模型 视网膜疾病分类小结 总体结构 COVID-19 Diagnosis 黑盒模型 Point-of-Care Transformer(POCFormer)&#xff1a;利用Linformer将自注意的空间和时间复杂度从二次型降低到线性型。POCFormer有200…

Docker基础操作

1.安装docker服务&#xff0c;配置镜像加速器 安装docker服务 清理缓存 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-enginesystemctl enable --now docker 脚…

Vue3+Vite 初始化Cesium

Vue3Vite 初始化Cesium 安装依赖 yarn add cesium yarn add vite-plugin-cesium -D加载vite-plugin-cesium插件 import { defineConfig } from vite import vue from vitejs/plugin-vue import cesium from vite-plugin-cesium;export default defineConfig({plugins: [vue(…

微积分进阶 1.1 函数

一、函数的概念 在观察自然现象或工程实际问题时&#xff0c;我们经常发现有几个变量在变化&#xff0c;这些变量之间并不是彼此孤立的&#xff0c;而是相互制约的&#xff0c;这些变量是怎么变化的呢&#xff1f;它们之间有什么联系呢&#xff1f;存什么规律呢&#xff1f;怎…

WPF中手写地图控件(4)——离线地图

内存缓存和本地文件缓存技术 如果每个瓦片图每次打开都要重新加载&#xff0c;会比较浪费资源&#xff0c;而且如果网络不好&#xff0c;甚至要等很久&#xff0c;于是可以使用内存缓存&#xff0c;每次已经加载的瓦片图&#xff0c;第二次再加载之前&#xff0c;先看看内存中…

ARM开发(cortex-A7核中断实验)

1.实验目的&#xff1a;实现KEY1/LEY2/KE3三个按键&#xff0c;中断触发打印一句话&#xff0c;并且灯的状态取反&#xff1b; key1 ----> LED3灯状态取反&#xff1b; key2 ----> LED2灯状态取反&#xff1b; key3 ----> LED1灯状态取反&#xff1b; 2.分析框图: …

IDEA快速设置Services窗口

现在微服务下面会有很多SpringBoot服务&#xff0c;Services窗口方便我们管理各个SpringBoot服务&#xff0c;但有时IDEA打开项目后无法的看到Services窗口&#xff0c;以下步骤可以解决&#xff01;

leetcode 151. 反转字符串中的单词

反转字符串中的单词 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 s中可能…

Windows环境使用bat脚本启动Java服务

Java项目一般会被打包成jar后启动&#xff0c;在windows系统中可以通过终端窗口cmd启动jar包&#xff0c;即在jar包所在的目录中打开cmd&#xff0c;或在cmd中进入到jar包目录&#xff0c;执行如下命令&#xff1a; java -jar test.jar 在bat脚本中执行java服务&#xff0c;命…

西瓜书之神经网络

一&#xff0c;神经元模型 所谓神经网络&#xff0c; 目前用得最广泛的一个定义是“神经网络是由具有适应性的简单单元组成的广泛并行互连的网络&#xff0c;它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应”。 M-P神经元 M-P神经元&#xff1a;接收n个输入(…

Nodejs-nrm:快速切换npm源 / npm官方源和其他自定义源之间切换

一、理解 Nodejs nrm Nodejs nrm 是一个管理 npm 源的工具。由于 npm 在国内的速度较慢&#xff0c;很多开发者会使用淘宝的 npm 镜像源&#xff0c;但是也会遇到一些问题&#xff0c;例如某些包在淘宝镜像源中不存在&#xff0c;或者淘宝镜像源本身也会有问题。 Nodejs nrm …

计算机竞赛 基于CNN实现谣言检测 - python 深度学习 机器学习

文章目录 1 前言1.1 背景 2 数据集3 实现过程4 CNN网络实现5 模型训练部分6 模型评估7 预测结果8 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于CNN实现谣言检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&am…

JavaScript中的设计模式之一--单例模式和模块

虽然有一种疯狂天才的感觉可能很诱人&#xff0c;但重新发明轮子通常不是设计软件的最佳方法。很有可能有人已经遇到了和你一样的问题&#xff0c;并以一种聪明的方式解决了它。这样的最佳实践在形式化后被称为设计模式。今天我们来看看它们的概念&#xff0c;并检查单例模式和…

AWS解决方案日:Web 3业务安全方案

近日&#xff0c;AWS合作伙伴之Web3解决方案日在香港举办&#xff0c;多家科技公司专家和企业代表就WEB 3.0方案、AI创新和Web 3.0安全进行了探讨。顶象现场展示了Web 3.0业务安全解决方案。 NFT是Web 3.0典型场景之一。NFT基于区块链技术的非同质化代币&#xff0c;具有不可分…

Java入坑之 数据库编程

一、基础概念 1.1JDBC 步骤 导入驱动jar包 注册驱动 获取数据库连接对象 Connection DataSource dSource; dSource.getConnection(); 定义sql语句 String sql "update account set balance 500 where id 1"; 获取执行sql语句的对象 Statement PreparedStatement…