计网面试复习自用

五层:

  1. 应用层:应用层是最高层,负责为用户提供网络服务和应用程序。在应用层,用户应用程序与网络进行交互,发送和接收数据。典型的应用层协议包括HTTP(用于网页浏览)、SMTP(用于电子邮件)、FTP(文件传输协议)等。用户应用程序产生数据,这些数据被封装成应用层数据包。

  2. 传输层:传输层位于应用层之下,主要负责数据的可靠传输和端到端通信。常见的传输层协议包括TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的、面向连接的通信,确保数据的完整性和顺序,而UDP提供不可靠的、面向无连接的通信。传输层将应用层数据包封装成传输层数据包,添加源和目标端口信息。

  3. 网络层:网络层是网络通信的下一层,它负责数据包的路由和转发,以确保数据能够跨越不同网络段到达目标主机。网络层使用IP地址来标识主机和路由器的位置。网络层将传输层数据包封装成网络层数据包,并添加源和目标IP地址信息。网络层的设备,如路由器,负责根据目标地址决定数据包的路径。

  4. 数据链路层:在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
  5. 物理层:实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和物理设备的差异。

在实际情况中,数据在这三个层次之间依次封装和解封装。例如,当您在网页浏览器中请求一个网页时,应用层生成HTTP请求,然后将其传递给传输层,通常使用TCP。传输层将数据包封装,并在数据包中添加源和目标端口信息。然后,传输层数据包传递给网络层,网络层将其封装,并在数据包中添加源和目标IP地址信息。最后,数据包在网络中路由和转发,经过网络层设备(如路由器),最终到达目标主机,然后在相反的顺序解封装,直到数据到达应用层,网页被显示在浏览器中。这个过程确保了数据的可靠传输和目标定位。

TCP的三次握手四次挥手

是的,三次握手和四次挥手是TCP(Transmission Control Protocol)协议中的重要概念,用于建立和终止TCP连接。

三次握手(Three-Way Handshake)

  1. 客户端向服务器发送一个SYN(同步)标志的数据包,表示客户端想要建立连接。
  2. 服务器收到客户端的SYN数据包后,回复一个ACK(确认)标志的数据包,同时也发送一个SYN标志的数据包,表示接受连接请求。
  3. 客户端收到服务器的ACK和SYN数据包后,回复一个ACK数据包,表示连接建立成功。此时,TCP连接已经建立。

四次挥手(Four-Way Handshake)

  1. 客户端发送一个FIN(结束)标志的数据包,表示不再发送数据。
  2. 服务器收到客户端的FIN数据包后,回复一个ACK数据包,表示确认收到客户端的结束请求。
  3. 服务器继续发送数据(如果有未发送完的数据),然后发送一个FIN数据包,表示服务器已经完成发送。
  4. 客户端收到服务器的FIN数据包后,回复一个ACK数据包,表示确认收到服务器的结束请求。此时,TCP连接被完全终止。

三次握手用于建立TCP连接,而四次挥手用于优雅地终止TCP连接。这些过程确保了数据的可靠传输和连接的安全关闭。

为什么四次挥手时服务端要发送两次,也就是为什么会有第三的个步骤

在TCP四次挥手中,服务端发送两次数据包的目的是确保数据的可靠传输和连接的正确终止。具体来说,第三个步骤(服务端发送第二个FIN数据包)是为了处理可能的延迟数据传输或未完成的数据包。让我详细解释:

  1. 客户端发送FIN:客户端首先发送一个带有FIN标志的数据包,表示不再发送数据,但仍愿意接收数据。

  2. 服务端发送ACK:服务端收到客户端的FIN后,发送一个ACK数据包,确认收到客户端的结束请求。

  3. 服务端继续传输:在一些情况下,服务端可能还有未发送完的数据,因此它继续发送数据,但这些数据不再包含应用层数据,而是用来填充TCP缓冲区的数据。

  4. 服务端发送第二个FIN:一旦服务端完成了所有数据的传输(包括填充的数据),它发送第二个FIN数据包,表示它已经完成数据传输,愿意关闭连接。

  5. 客户端发送ACK:客户端接收到服务端的第二个FIN后,发送一个ACK数据包,确认收到服务端的结束请求。此时,TCP连接被完全终止。

这个额外的步骤(第三个步骤)是为了确保在连接关闭之前,服务端有足够的时间将所有未完成的数据传输完毕。它也可以处理可能的数据包延迟或重排序的情况,以确保数据的可靠传输和连接的正确终止。通过这种方式,TCP提供了一种可靠的方式来结束连接,同时保证数据的完整性。

四次挥手时为什么有第三步

在一些情况下,服务端可能会在四次挥手的第三步(发送第二个FIN之前)继续发送数据,但这些数据通常是用来填充TCP缓冲区或处理未完成的数据传输的情况。以下是一些可能的案例:

  1. 延迟数据传输:在某些情况下,服务端可能会有一些数据包在等待传输给客户端,而在关闭连接之前,服务端希望确保这些数据包已经成功发送。这可以包括应用层数据的最后一部分,如果这些数据在连接关闭之前没有被传输,它们可能会丢失。服务端继续传输这些数据,直到它们全部被发送。

  2. TCP缓冲区数据:TCP协议使用缓冲区来管理数据的传输。有时,这些缓冲区可能包含尚未发送的数据或等待确认的数据。服务端需要等待客户端确认接收这些数据,以确保它们已经成功传输。

  3. 未确认数据包:如果服务端发送了一些数据包但尚未收到客户端的确认,它可能会继续发送这些数据包,以确保客户端已经成功接收它们。这是TCP的可靠性机制的一部分。

总之,服务端在第三步(发送第二个FIN之前)继续发送数据的情况通常是为了处理未完成的数据传输,确保数据的可靠传输,以及正确终止连接。这有助于避免数据的丢失或不完整,同时保持连接的可靠性。

例子:

  1. 客户端发送消息:用户在前端输入并发送一条聊天消息。

  2. 后端接收消息:Spring Boot应用接收到这条消息。

  3. 处理消息:Spring Boot应用可能需要对这条消息进行一些处理,例如验证、加工或路由。这个处理过程可能需要一些时间,特别是如果有多个用户在同时发送消息,Spring Boot需要适当地处理所有这些消息。

  4. 实际传输:一旦后端完成了消息的处理,它会将这条消息发送给聊天中的其他用户。这个传输是实时的,但是在第3步中可能存在一些延迟,因为后端需要完成消息的处理。

所以,延迟数据传输在这个示例中是指在消息从客户端发送到实际传递给其他用户之间的时间延迟,这个延迟是由于消息在后端进行处理而引起的。这个延迟可以是短暂的,但在一些繁忙的聊天环境中,可能会积累一些时间。希望这个解释更加清晰

在日常生活中,有许多应用程序示例可以帮助解释客户端发起的第一次挥手操作。以下是一些具体操作的示例:

  1. Web浏览器关闭标签页:当您在Web浏览器中打开一个网页标签页并完成了阅读后,您可以通过单击标签页上的关闭按钮来关闭该标签页。这个操作等同于客户端(浏览器)发起的第一次挥手,客户端表明不再需要与该网站的连接。

  2. 手机应用关闭:当您使用手机上的应用程序(例如社交媒体应用、游戏、电子邮件应用等)时,当您不再需要应用程序时,您可以通过按下主屏幕按钮、滑动应用程序关闭或使用操作系统提供的应用程序关闭功能来关闭应用程序。这是类似于客户端发起的第一次挥手,表明客户端不再需要与服务端的连接(服务器)。

  3. 电子邮件客户端:在电子邮件应用程序中,当您完成了发送或接收邮件的操作并关闭应用程序时,这等同于客户端发起的第一次挥手。客户端表明它不再需要与电子邮件服务器的连接。

  4. 文件传输应用程序:在文件传输应用程序中,例如FTP或P2P文件共享应用程序,当您完成文件上传或下载操作后,关闭应用程序就像客户端发起的第一次挥手,表示客户端不再需要与服务器的连接,因为文件传输已经完成。


TCP为什么不是两次握手

  1. 双向连接确认:三次握手确保了双方都同意建立连接。客户端发起第一次握手,服务端回应第二次握手,然后客户端再回应第三次握手。这种双向确认减少了因意外连接或恶意攻击引起的不必要连接。

  2. 避免失效连接的问题:如果TCP只使用两次握手,客户端发送第一次握手,服务端回应第二次握手后建立连接。但如果第一次握手丢失,客户端将不知道连接是否建立,而服务器已经认为连接已建立。这可能导致不一致性和潜在的问题。通过三次握手,客户端能够确认连接已建立。2.1连接不一致性:假设客户端发送了第一次握手,但该握手丢失,服务器未收到。客户端不会知道连接建立的情况,而服务器会认为连接已经建立。这会导致不一致性,因为客户端和服务器之间的连接状态不匹配。2.2资源泄漏:客户端未能知道连接的状态,可能会导致资源泄漏。如果客户端在认为连接已经建立的情况下开始发送数据,但实际上连接并未建立,服务器将浪费资源尝试接收和处理这些数据。2.3数据不完整性:如果连接状态不一致,客户端可能会认为连接已建立,但服务器可能不会接收客户端的数据。这可能导致客户端的数据丢失或未处理,导致数据不完整性。2.4安全性问题:连接不一致性可能会被恶意利用,例如中间人攻击,其中攻击者可能会伪造一个连接并开始发送数据,而客户端不知道连接状态不正确,从而可能接受来自攻击者的数据。

Http与Https之间的区别:

1 http 协议是免费使用的,而 https 协议需要到CA机构申请证书,需要缴纳费用
2 http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl/tls 加密传输协议,信息是密文
3 http 的连接很简单,是无状态的;https 协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全
4 和 http 通信相比,https 通信会由于加减密处理消耗更多的CPU和内存资源
5 http 和 https 使用的端口也不一样,前者是80,后者是443

什么事对称加密与非对称加密,以及常见的加密协议

对称加密非对称加密是两种不同的加密技术,用于保护数据的机密性。它们在加密和解密过程中使用不同的密钥体系,以及具有不同的用途。

  1. 对称加密

    • 使用相同的密钥来加密和解密数据。
    • 加密和解密速度通常较快,因为使用的密钥简单,但存在共享密钥的问题。
    • 适用于大量数据的加密,例如数据传输的加密和存储设备的加密。
    • 常见的对称加密算法包括AES(高级加密标准)、DES(数据加密标准)和3DES等。
  2. 非对称加密

    • 使用一对密钥,包括公钥和私钥,其中公钥用于加密,私钥用于解密。
    • 加密和解密速度通常较慢,因为使用的密钥复杂,但提供了更好的安全性。
    • 适用于密钥交换、数字签名和身份验证等场景。
    • 常见的非对称加密算法包括RSA、DSA、ECC(椭圆曲线密码学)等。

常见的加密协议通常结合了对称和非对称加密技术以提供综合的安全性,其中对称加

Tcp的长连接短连接

连接和短连接:

  • HTTP1.0默认使用的是短连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
  • HTTP/1.1起默认使用长连接。要使用长连接,客户端和服务器的HTTP响应头部的Connection要设置为keep-alive,才能支持长连接

 GET与POST的区别

  • GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  • GET参数通过URL拼接传递,POST参数通过请求体传递
  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。{1GET请求对参数的数据类型有限制,因为它们需要出现在URL中,因此只能包含ASCII字符,而对于非ASCII字符(如汉字或特殊符号),需要进行URL编码。2POST请求的参数通常包含在请求的正文中,因此可以包含各种数据类型,包括二进制数据、JSON、XML等,而不仅限于ASCII字符。

    例子: 假设您正在开发一个网站的搜索功能。如果用户在搜索框中输入了搜索关键字"购物",则可以使用GET请求来向服务器发送请求,如下所示:

     

    perlCopy code

    GET http://example.com/search?keyword=%E8%B4%AD%E7%89%A9

    在这个例子中,搜索关键字"购物"被URL编码为%E8%B4%AD%E7%89%A9,以适应GET请求的要求。这个关键字以明文形式显示在URL中。

  • }

TCP和UDP区别和应用

  • TCP是可靠传输,UDP是不可靠传输;
  • TCP面向连接,UDP无连接,即发送数据之前不需要建立连接
  • TCP传输速度相对UDP较慢;
  • TCP连接只能是一对一的(端到端);UDP支持一对一、一对多、多对一和多对多的通信方式。

浏览器输入URL到页面返回详细过程

1 输入网址 输入要访问的网址,即URL
2 缓存解析 浏览器获取URL后,先去缓存中查找资源,从浏览器缓存-系统缓存-路由器缓存中查看; 如果有就从缓存中显示界面,不再发送请求; 如果没有,则发送http请求;
3 域名解析 发现缓存中没有资源,发送http请求; 在发送http请求之前,需要进行DNS解析(域名解析); DNS解析:域名到IP地址的转换过程,域名的解析工作由DNS服务器完成,解析后可以获取域名相应的IP地址;
4 tcp连接 三次握手在域名解析后,浏览器向服务器发起了http请求,tcp连接; 因为tcp协议时面向连接的,所以在传输数据前必须建立连接,即三次握手;tcp连接建立后,浏览器开始向服务器发送http请求报文
5 收到请求 服务器收到浏览器发送的请求信息,返回响应
6 页面渲染 浏览器收到服务器发送的响应,显示页面内容。

什么是Cookie和Session,二者区别

 什么是SQL注入

SQL注入就是将原本的SQL语句的逻辑结构改变,使得SQL语句的执行结果和原本开发者的意图不一样;
比如说我们通过账号密码进行登录,首先需要进行查询判断:
"select * from t_user where name = "张三" and password = "123456"
如果我们把or 1 = 1作为拼接在密码末尾传入进来,执行查询的时候sql会变成
"select * from t_user where name = "张三" and password = "123456" or 1 = 1
密码永远都是成立的,所以,前面无论密码正确与否都会成功登录
我们使用预编译语句就可以避免这个问题,例如:JDBC中的PrepareStatement或MyBatis中#{}
将sql预编译,传参数的时候,不会改变sql语句结构,就可以避免注入。
 

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

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

相关文章

如何提高企业工作微信的管理效率?

微信作为一款拥有数亿用户的软件,其使用频率在全国范围内居高不下。随着企业的不断发展,微信在工作中的应用也变得越来越广泛。为了更好地服务客户并提升业务效益,企业通常会为新入职员工配置工作微信以便于业务沟通和客户服务。然而&#xf…

iCloud涨价不用慌!学会使用群晖生态将本地SSD“上云”

文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是想使用群晖生态软件,就必须要在服务端安装群晖系统,具体如何安装群晖虚拟机请参考: 1. 安装并配置synology drive1.1 安装群辉drive套件1.2 在局域…

存在已打开的MicrosoftEdge浏览器,无法执行安装

存在问题:UiBot Creator 安装Chrome扩展时,存在已打开的MicrosoftEdge浏览器,无法执行安装。 解决办法: 打开MicrosoftEdge浏览器,然后在浏览器页面右上角打开“…”图标 第二步,打开“…”图标之后&…

MAC上使用Wireshark常见问题

文章目录 介绍正文启动异常-Permission denied解决方法 过滤协议和地址指定源地址和目的地址调整 time format 介绍 简单记录Wireshark在日常使用过程中的遇到的小case。 正文 Wireshark相较于tcpdump使用较为简单,交互也更为友好。 点击Start即可启动抓包 启动…

【OpenCv光流法进行运动目标检测】

opencv系列文章目录 文章目录 opencv系列文章目录前言一、光流法是什么?二、光流法实例1.C的2.C版本3.python版本 总结 前言 随着计算机视觉技术的迅猛发展,运动目标检测在图像处理领域中扮演着至关重要的角色。在现实世界中,我们常常需要追…

Mysql5.7大限将至升级Mysql 8.0过程记录(未完)

一、前言 时间很快,到2023年10月底,MySQL 5.7就到了它的EOL(End of Life),届时将不会提供任何补丁,无法应对潜在的安全风险;是时候和 MySQL 5.7 说再见了!!!&…

C++语言实现网络爬虫详细代码

当然&#xff01;下面是一个用C语言实现的基本网络爬虫的详细代码示例&#xff1a; #include <iostream> #include <string> #include <curl/curl.h> size_t writeCallback(void* contents, size_t size, size_t nmemb, std::string* output) {size_t totalS…

强化科技创新“辐射力”,中国移动的数智化大棋局

作者 | 曾响铃 文 | 响铃说 丝滑流畅的5G连接、每时每刻的数字生活服务、无处不在的智能终端、拟人交流的AI助手、梦幻般的XR虚拟现实、直接感受的裸眼3D…… 不知不觉&#xff0c;那个科幻片中的世界&#xff0c;越来越近。 数智化新世界的“气氛”&#xff0c;由一个个具…

GEE 18:基于GEE平台的土地荒漠化监测与分析【论文复现】

Desertification 1. 研究背景1.1 参考论文1.2 参数获取1.2.1 NDVI1.2.2 Albedo1.2.3 Normalizing indices1.2.4 Calculating the quantitative relationship1.2.5 Calculating DDI2. GEE2.1 数据2.2 GEE code2.2.1 Study region2.2.2 Reomove cloud for Landsat-82.2.3 Calcula…

CISA 彻底改变了恶意软件信息共享:网络安全的突破

在现代网络安全中&#xff0c;战术技术和程序&#xff08;TTP&#xff09;的共享对于防范网络事件至关重要。 因此&#xff0c;了解攻击向量和攻击类型之间的关联如今是让其他公司从其他公司遭受的 IT 事件中受益&#xff08;吸取经验教训&#xff09;的重要一步。 美国主要网…

PyTorch入门教学——使用PyCharm创建一个PyTorch项目

首先需要创建好PyTorch的虚拟环境&#xff0c;步骤&#xff1a;PyTorch入门教学——简介与环境配置-CSDN博客打开PyCharm&#xff0c;新建项目&#xff0c;选择项目的存放位置。选择先前配置的解释器&#xff0c;也就是虚拟环境中的解释器。&#xff08;记住创建的虚拟环境所在…

【Express】服务端渲染(模板引擎 EJS)

EJS&#xff08;Embedded JavaScript&#xff09;是一款流行的模板引擎&#xff0c;可以用于在Express中创建动态的HTML页面。它允许在HTML模板中嵌入JavaScript代码&#xff0c;并且能够生成基于数据的动态内容。 下面是一个详细的讲解和示例&#xff0c;演示如何在Express中…

Linux:Mac VMware Fusion13以及CentOS7安装包

Linux&#xff1a;Mac VMware Fusion13以及CentOS7安装包 1. Mac VMware Fusion132. CentOS7安装包3. 安装 1. Mac VMware Fusion13 下载官网地址&#xff1a;https:www.vmware.com/products/fusion/fusion-evaluation.html 2. CentOS7安装包 注意是m芯片需要使用arm架构的i…

手动下载/安装Xcode的simulator

目录 前言解决方案1.获取simulator包下载地址1.1 Apple后台1.2 手动 2.使用三方下载工具下载3.使用命令安装simulator 前言 Xcode某个版本更新之后不带iOS的Simulator,导致全新下载一个Xcode后没法编译项目.公司的网又很坑,每次断掉点重试都重新下载,导致完全没法下下来.特别影…

论文阅读:Seeing in Extra Darkness Using a Deep-Red Flash

论文阅读&#xff1a;Seeing in Extra Darkness Using a Deep-Red Flash 今天介绍的这篇文章是 2021 年 ICCV 的一篇 oral 文章&#xff0c;主要是为了解决极暗光下的成像问题&#xff0c;通过一个深红的闪光灯补光。实现了暗光下很好的成像效果&#xff0c;整篇文章基本没有任…

Go-Python-Java-C-LeetCode高分解法-第十周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接&#xff1a;LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏&#xff0c;每日一题&#xff0c;和博主一起进步 LeetCode专栏 我搜集到了50道精选题&#xff0c;适合速成概览大部分常用算法 突…

FutureTask的测试使用和方法执行分析

FutureTask类图如下 java.util.concurrent.FutureTask#run run方法执行逻辑如下 public void run() {if (state ! NEW ||!RUNNER.compareAndSet(this, null, Thread.currentThread()))return;try {Callable<V> c callable;if (c ! null && state NEW) {V res…

【大数据】Hive SQL语言(学习笔记)

一、DDL数据定义语言 1、建库 1&#xff09;数据库结构 默认的数据库叫做default&#xff0c;存储于HDFS的&#xff1a;/user/hive/warehouse 用户自己创建的数据库存储位置&#xff1a;/user/hive/warehouse/database_name.db 2&#xff09;创建数据库 create (database|…

【教程】使用vuepress构建静态文档网站,并部署到github上

官网 快速上手 | VuePress (vuejs.org) 构建项目 我们跟着官网的教程先构建一个demo 这里我把 vuepress-starter 这个项目名称换成了 howtolive 创建并进入一个新目录 mkdir howtolive && cd howtolive使用你喜欢的包管理器进行初始化 yarn init 这里的问题可以一…

nodejs+vue百鸟全科赏析网站

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…