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

常见的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状态,完成四次挥手

### 回答1: Web前端开发需要掌握的网络基础知识包括: - HTML: 超文本标记语言,用于描述网页的结构 - CSS: 层叠样式表,用于控制网页的外观 - JavaScript: 用于控制网页的行为 - HTTP: 超文本传输协议,用于在浏览器和服务器之间传输数据 - HTTPS: 安全的HTTP协议,用于在浏览器和服务器之间传输加密数据 - AJAX: 异步javascript和XML,用于在网页上实现异步数据交互 - API: 应用程序编程接口,用于网页和服务器之间传输数据 - IP地址,DNS,TCP/UDP,端口号,这些都是基础网络知识 ### 回答2: Web前端开发需要掌握以下网络基础知识: 1. HTTP协议:了解HTTP协议的基本概念、请求方法、状态码、报文格式等。掌握HTTP请求和响应过程,以及常见的HTTP头部字段。 2. 网络通信基础了解TCP/IP协议族的基本原理和工作机制,包括IP地址、域名解析、端口等。理解TCP和UDP协议的区别和特点。 3. DNS解析:了解域名系统(DNS)的作用和工作原理,包括域名解析过程、DNS缓存等。掌握如何配置和管理域名。 4. 网络安全:了解网络安全的基本概念,包括跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、SQL注入等常见的网络安全问题。学习如何防范和处理这些安全漏洞。 5. WebSocket:了解WebSocket协议的基本原理和特点,能够使用WebSocket实现实时通信功能。 6. 前后端交互:掌握AJAX技术,了解JSON、XML等数据格式的基本概念。能够使用XMLHttpRequest对象向服务器发送异步请求,获取并处理服务器返回的数据。 7. 网络调试工具:掌握常用的网络调试工具,如浏览器开发者工具、Postman等,能够利用这些工具进行网络请求的调试和分析。 8. 前端性能优化:了解前端性能优化的基本原则和常用方法,如压缩资源、合并文件、使用CDN等。能够通过优化网络请求和渲染流程来提升网页的加载速度和响应性能。 总之,掌握了这些网络基础知识,能够更好地理解Web前端开发中的网络交互过程,解决常见的网络问题,并进行性能优化,从而提供更好的用户体验。 ### 回答3: Web前端开发需要掌握以下网络基础知识: 1. HTTP协议:了解HTTP协议的工作原理和常见的请求方法(GET、POST等),了解HTTP头部信息和状态码的含义,以及HTTP的持久连接和缓存等相关概念。 2. HTML和CSS:熟悉HTML和CSS的基本语法和常用标签,了解HTML文档的结构和CSS样式的应用方式,能够根据设计稿实现页面的布局和样式。 3. JavaScript:熟悉JavaScript的基本语法和常用的DOM操作,了解事件处理、Ajax和跨域请求等基本概念,能够编写简单的交互逻辑和动态网页。 4. 网络安全:了解常见的网络攻击方式(如XSS和CSRF)以及相应的防御方法,熟悉HTTPS协议的工作原理和使用方式,能够编写安全性较高的前端代码。 5. 前端性能优化:了解前端页面加载的过程和性能优化的方法,包括减少HTTP请求、压缩和合并静态资源、使用缓存、异步加载等。 6. 浏览器原理:了解浏览器的工作原理,包括渲染引擎的处理流程、页面解析和布局、渲染性能优化等,能够针对不同浏览器进行兼容性处理。 7. 前端框架和工具:熟悉常用的前端框架和工具(如React、Vue、Webpack等),了解它们的工作原理和使用方式,能够快速搭建和优化项目。 综上所述,掌握以上网络基础知识能够使前端开发者更好地理解和应用Web技术,提高开发效率和网页性能,并且能够处理一些网络安全和兼容性问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值