首页 > 其他分享 >前端开发需要了解的网络基础

前端开发需要了解的网络基础

时间:2024-09-20 09:19:21浏览次数:11  
标签:请求 网络 TCP SYN 发送 了解 服务器 前端开发 客户端

常见的http请求方式

  • GET:从服务器获取数据,参数通常在 URL 中传递。
  • POST:向服务器发送数据,通常用于创建或更新资源,数据在请求体中传递。
  • PUT:更新现有资源,通常需要提供完整的资源数据。
  • PATCH:部分更新资源,只需提供要修改的字段。
  • DELETE:删除指定资源。
  • HEAD:获取响应头,通常用于检查资源的状态。
  • OPTIONS:获取服务器支持的请求方法,常用于跨域请求。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断

get请求和post请求

相同点:

  • 底层都是基于TCP/IP协议实现的
  • 都用于与服务器进行数据交换
  • 服务器都会返回响应,包含状态码和数据
不同点:
  • 数据传递:
    GET:数据通过 URL 查询字符串传递,限制长度。
    POST:数据通过请求体传递,支持更大数据量。
  • 安全性:
    GET:不适合传递敏感数据,数据暴露在 URL 中。
    POST:相对安全,数据不显示在 URL 中。
  • 幂等性:
    GET:是幂等的,多次请求结果相同。
    POST:不是幂等的,多次请求可能产生不同结果。
  • 缓存:
    GET:可以被缓存。
    POST:通常不被缓存。
  • 编码方式:
    GET请求只能进行url编码
    POST请求支持多种编码方式
  • 请求过程:
    GET请求产生一个TCP数据包,浏览器把请求头和请求体一并发送出去
    POST请求产生两个TCP数据包,浏览器先发送请求头,服务器响应100,然后浏览器再发送请求体

http和https

http

http是一种超文本传输协议,也是应用层协议,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能

HTTP响应由四个部分组成:状态行、响应头、空行、响应体

  1. 状态行:协议版本、状态码及状态描述
  2. 响应头:响应头主要字段有connection、content-type、content-encoding、content-length、set-cookie、Last-Modified、Cache-control、Expires
  3. 响应体:服务器返回给客户端的内容

特点:

  • 明文传输,安全性较差
  • 页面响应速度较快,使用TCP三次握手建立连接,客户端与服务器需要交换3个包
  • 80端口
  • 运行在TCP协议之上

https

HTTPS即超文本传输安全协议,是一种通过计算机网络进行安全通信的传输协议

  • HTTP+SSL,传输过程加密,安全性较好,具有安全性的ssl加密传输协议
  • 需要到CA机构(数字证书认证机构)申请证书,需要一定的费用
  • 页面响应速度较慢,使用TCP三次握手建立连接,客户端与服务器需要交换3个包,SSL握手需要交换9个包,一共12个包
  • 443端口
  • 基于SSL/TLS之上的HTTP协议,比HTTP更耗费服务器资源
  • 运行在SSL协议之上,SSL协议运行在TCP协议之上

常见的状态码

  • 200 表示从客户端发来的请求在服务器端被正常处理了
  • 204 表示请求处理成功,但没有资源返回
  • 301 表示永久重定向,请求的资源已被分配了新的URI,以后应使用资源现在所指的URI
  • 302 表示临时性重定向
  • 304 服务器端资源未改变,可直接使用客户端未过期的缓存
  • 400 表示请求报文中存在语法错误,当错误发生时,需修改请求的内容后再次发送请求
  • 401 表示未授权,当前请求需要用户验证
  • 403 请求资源的访问被服务器拒绝了
  • 404 请求资源不存在,也可以在服务器端拒绝请求且不想说明理由时使用
  • 500 服务器内部错误,服务器端在执行请求时发生了错误
  • 503 服务器超时,服务器暂时处于超负载或正在停机维护,现在无法处理请求

同源策略

同源策略是一种网络安全机制,用于防止不同源(域名、协议和端口)之间的恶意交互。具体来说,浏览器仅允许来自同一源的脚本访问和操作网页的资源。其主要目的是保护用户数据,防止跨站点请求伪造(CSRF)和跨站点脚本攻击(XSS)

跨域

跨域是指在网页中,来自一个源(域名、协议、端口)的网站试图访问另一个源的资源。由于同源策略的限制,浏览器默认不允许这种行为,以保护用户数据和防止安全风险。常见的跨域场景包括使用 Ajax 请求不同域的 API、访问不同域的图片或脚本等。解决跨域问题的方法有 CORS(跨源资源共享)、JSONP、代理服务器等

解决跨域

方式一:JSONP请求

优点:简单易用,适用于不支持 CORS 的服务器
缺点:只支持 GET 请求;存在安全隐患,可能导致 XSS 攻击

工作原理:
1. 在网页中动态创建一个 `<script>` 标签,源指向目标域的 API
2. 目标服务器返回一个 JavaScript 函数调用,函数名通常是请求时指定的回调函数
3. 当 `<script>` 标签加载完成,回调函数被执行,从而获取数据

// jsonp
// 可以通过动态创建script标签,再请求一个接口地址
// 原生js
    var script = document.createElement('script');
    script.type = 'text/javascript';

// 传参并指定回调执行函数为onBack
script.src = 'http://www.demo2.com:8080/login?user=admin&callback=onBack';
document.head.appendChild(script);

// 回调执行函数
function onBack(res) {
    alert(JSON.stringify(res));
}
// vue中使用vue-jsonp插件实现跨域
this.$jsonp('http://xxx' , params).then((res)=>{
    console.log(res)
})

tcp和udp

相同点:

  • 都属于传输层协议,用于在网络中传输数据
  • 都可以用于传输应用层数据

不同点:

  • 连接性:
    TCP:面向连接,建立连接后再传输数据
    UDP:无连接,数据报文直接发送
  • 可靠性:
    TCP:提供数据完整性、顺序控制和重传机制,确保数据可靠传输
    UDP:不保证数据的可靠性,可能丢失或乱序
  • 速度:
    TCP:因其连接建立和错误检查机制,相对较慢
    UDP:由于没有额外的控制,传输速度较快
  • 应用场景:
    TCP:适用于需要可靠传输的应用,如网页浏览、文件传输等
    UDP:适用于实时应用,如视频流、在线游戏等
  • 头部开销:
    TCP:头部较大(20字节以上),包含序列号、确认号等信息
    UDP:头部较小(8字节),只包含源端口、目标端口等基本信息

总结:TCP适合需要可靠和有序传输的场景,而UDP适合对速度要求高、可以容忍数据丢失的场景

三次握手

三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的

  • 第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)
  • 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态
  • 第三次握手:客户端收到服务器的SYN_ACK包,向服务器发送确认包(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手

四次挥手

四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开,在socket编程中,这一过程由客户端或服务端任一方执行close来触发

  • 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态
  • 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态
  • 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态
  • 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手

标签:请求,网络,TCP,SYN,发送,了解,服务器,前端开发,客户端
From: https://blog.csdn.net/qq_45937484/article/details/142127579

相关文章

  • TS相关知识了解
    概述本篇我们来讲述一下TS中的常见但又有些难度的小知识。联合类型|TypeScript的类型系统允许我们使用多种运算符,从现有类型中构建新类型我们来使用第一种组合类型的方法:联合类型(UnionType)联合类型是由两个或者多个其他类型组成的类型表示可以是这些类型中的任何一......
  • 网络安全C10-2024.9.15-Nmap、Xray、Nessus和AWVS使用扫描
    1、安装并使用Nmap扫描一个地址(本机、VPS、虚拟机环境都可以),提供扫描结果截图nmap下载安装:https://nmap.org/download#windowsnmap概述:Nmap(“NetworkMapper<网络映射器>”)是一款开放源代码的网络探测和安全审核的工具。Nmap输出的是扫描目标的列表,以及每个目标的补充信息,......
  • 云WAF能做什么?看它如何帮你应对网络攻击
    面对日益复杂的Web应用层攻击,企业迫切需要一种有效的防护手段来保障网络安全。云WAF(Web应用防火墙)凭借其强大的识别和防御能力,成为越来越多企业的选择。它通过智能识别并阻断恶意流量,帮助企业抵御各种网络攻击,确保业务稳定运行,同时减少安全风险。云WAF如何防护网络攻击实时识......
  • 回归预测|2024年最新优化算法美洲狮优化器PO 基于美洲狮PO优化BP神经网络数据时间序列
    回归预测|2024年最新优化算法美洲狮优化器PO基于美洲狮PO优化BP神经网络数据时间序列算法完整Maltab程序有对比文章目录一、基本原理1.美洲狮优化算法(POA)简介2.BP神经网络(BPNeuralNetwork)简介3.PO-BP回归预测流程总结二、实验结果三、核心代码四、代码获取五......
  • Java中的图神经网络:如何在大规模图数据中实现嵌入学习
    Java中的图神经网络:如何在大规模图数据中实现嵌入学习大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!近年来,图神经网络(GraphNeuralNetworks,GNN)在处理图结构数据上取得了显著进展,尤其是在社交网络、推荐系统、知识图谱等领域。与传统的神经网络......
  • 网络安全简单入门与扫描
    目录网络安全简单入门内容大纲1、安全策略1.1、安全三要素1.2、安全评估1.2、一般流程2、安全工具(漏洞扫描器)2.1、AppScan2.2、Acunetix3、其他3.1、关于工具的问题3.2、银弹理论3.3、原理4、结尾回到顶部网络安全简单入门回到顶部内容大纲策略制定安全工具其他回......
  • 1网络安全的基本概念
    文章目录网络安全的基本概念可以总结为以下几个方面:网络安全的需求:信息安全的重要性:信息安全是计算机、通信、物理、数学等领域的交叉学科,对于社会的发展至关重要。信息安全的目标:主要包括保密性、完整性、可用性和合法使用。信息安全的需求来源:包括政府、商业......
  • 软件设计画图,流程图、甘特图、时间轴图、系统架构图、网络拓扑图、E-R图、思维导图
    目录一、流程图二、甘特图三、时间轴图四、系统架构图五、网络拓扑图六、E-R图七、思维导图一、流程图是一种用符号表示算法、工作流或流程的图形。用不同的图形表示不同含义,如椭圆表示开始和结束、菱形表示判断等。画图工具WPSoffice应用市场--文档处理--本地流......
  • 国标GB28181设备端SDK,支持将本地文件、网络流、实时流模拟接入国标GB28181视频平台
    现在市面上的国标设备端SDK,基本上都是收费的,一个是这个东西比较小众,还有一个就是确实有一些研发成本,于是,在前段时间,我就将我们之前一直对外收费的EasyGBD国标GB28181设备端的SDK免费了,SDK地址在:https://github.com/EasyDarwin/EasyGBD/tree/main简单看一下EasyGBD的接口://......
  • 五、I/O与网络编程-5.1、I/O基础
    5.1、I/O基础5.1.1、Java有几种文件拷贝方式,哪一种效率最高?答:以下是三种不同方式的Java代码示例:使用字节流进行传输:可以使用FileInputStream和FileOutputStream类来完成文件的读取和写入,逐字节地拷贝文件内容。这种方式比较简单,但效率较低,特别是对于大文件而言。示例:i......