加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

每个前端都要了解点网络知识

发布时间:2019-04-01 10:24:20 所属栏目:教程 来源:cpp软件架构狮
导读:一、OSI 参考模型 与 TCP/IP 五层模型 我们主要关注于 TCP/IP 五层模型的应用层和传输层就足够了。 应用层: 作用:为应用程序提供服务。 常见协议:HTTP、HTTPS、FTP、POP3、SMTP等。 传输层: 作用:实现应用程序之间的数据传输。 协议:UDP、TCP 二、UD
副标题[/!--empirenews.page--]

一、OSI 参考模型 与 TCP/IP 五层模型

每个前端都要了解点网络知识

我们主要关注于 TCP/IP 五层模型的应用层和传输层就足够了。

应用层:

  • 作用:为应用程序提供服务。
  • 常见协议:HTTP、HTTPS、FTP、POP3、SMTP等。

传输层:

  • 作用:实现应用程序之间的数据传输。
  • 协议:UDP、TCP

二、UDP 与 TCP

1. UDP

UDP 是面向无连接的协议,它只会把数据传递给接收端,但不会关注接收端是否已经正确接收了数据,所以有时候 UDP 会被认为是不可靠的数据报协议。但这种特性反而适合多播,实时的视频和音频传输。

优点:

  • 无需建立连接(减少了延迟)
  • 实现简单(效率高)
  • 头部开销小( 8 字节)
  • 没有拥塞控制(更好的控制发送时间和速率)

缺点:

  • 没有建立连接(数据想发就发,不可靠)
  • 没有拥塞控制(网络条件不好时会导致丢包)

2. TCP

TCP 是面向有连接的协议,在使用 TCP 协议 传输数据之前一定需要在发送方和接收方之间建立连接。建立连接三次握手,断开连接四次挥手~

(1) TCP 建立连接三次握手

第一次握手:客户端向服务端发送一个 SYN(Seq=X) 包,客户端进入 SYN-SENT 状态,等待服务端的 ACK(Ack=X+1)回复。

ps::Seq 是序号,Ack 是确认序号。

第二次握手:服务端根据接收到客户端发来的 SYN(Seq=X) 包后返回一个 ACK(Ack=X+1) 以及 SYN(Seq=Y) 包给客户端,服务端进入 SYN-RECIVED 状态,等待客户端的 ACK(Ack=Y+1) 回复。

第三次握手:客户端接收到 ACK(X+1) 后,进入 ESTABLISHED 状态。根据服务端发来的 SYN(Y) 返回一个 ACK(Y+1) 包给服务端。

服务端 接收 ACK(Y+1)后进入 ESTABLISHED 状态。此时连接建立成功。

这个过程可以用以下三句形象表示:

  • (客户端):我想建立连接了,服务端你准备好没有呀?
  • (服务端):我准备好了,你准备好没有?
  • (客户端):我也准备好了,开始吧~

(2) TCP 关闭连接四次挥手

这个过程可以用以下四句句形象表示:

  • (客户端):我想关闭连接了。
  • (服务端):我知道了。
  • (服务端):我现在准备关闭连接了,ok 吗?
  • (客户端):ok,你关闭吧。

3. UDP 与 TCP 的区别

  • UDP 协议是面向无连接的,它不能保证数据有序且不丢失的传到对端,但是 UDP 比 TCP 更高效。
  • TCP 协议是面向有连接的,建立和断开连接都需要握手,,在传输数据的过程中,通过滑动窗口(流量控制)、拥塞处理(慢开始,拥塞避免,快速重传,快速恢复),能够正确处理丢包问题,保证接收方能够收到数据,与此同时还能够有效利用网络带宽。

三、HTTP

HTTP (HyperText Transfer Protocol) 超文本传输协议 是一个基于 TCP (传输层) 的应用层协议,是客户端与服务端之间请求和响应的标准。

主要特点:

  • 简单快速:客户端向服务器请求服务时,只需请求方法和请求路径。
  • 无状态:客户端再次向服务器请求服务时,服务器并不知道客户端之前是否请求过。
  • 无连接:每次请求都会建立一个 TCP 连接,请求处理完成后连接断开。

HTTP 报文:

(1)请求行:GET https://www.baidu.com/ HTTP/1.1 由请求方法、URL、协议版本组成

(2)响应行:

  • HTTP/1.1 200 OK
  • 协议版本、状态码、状态信息组成

HTTP 请求方法:

请求方法分为很多种,最常用的也就是 GET 和 POST 了。虽然请求方法很多,但更多的是为了传达语义。更多的方法的语义描述可以阅读 文档 。

四、GET 和 POST 的区别

GET:

  • 能缓存、请求长度限制、 有历史记录
  • GET 多用于 无副作用(不修改资源)、幂等(请求次数与资源无关)的场景。

POST:

  • POST 相对 GET 安全一点点,因为 GET 请求发送的数据包含在 URL 里。

两者详细对比:

  1. ![GET与POST](https://inknight.cn/pic/note/... 
  2.  

状态码:状态码表示了响应的状态,可以让我们知道这一次的请求是成功还是失败,如果失败,是什么原因导致的。

2XX 成功:

  • 200 OK ,请求成功并返回数据
  • 204 No Content ,成功但无内容
  • 206 Partial Content ,范围请求

3XX 重定向:

  • 301 永久重定向,表示资源已被分配了新的 URL
  • 302 临时重定向,资源临时被分配新的 URL
  • 304 资源未修改,可使用缓存

4XX 客户端错误:

  • 400 请求语法错误
  • 401 要求身份认证
  • 403 请求被服务器拒绝
  • 404 资源不存在

5XX 服务器错误:

  • 500 服务器错误
  • 503 服务器超负载或停机维护

五、HTTPS

更安全的网络传输协议:

  • 需要安装证书(公钥)
  • 经过 SSL/TLS 协议 加密,传输的内容是经过加密的
  • 使用 443 端口

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读