http

217 阅读26分钟

一、为什么要有http

最初CERN(欧洲核子研究组织)的蒂姆.伯纳斯-李(Tim Berners-Lee)博士提出一种能让远隔两地的研究者们共享知识的设想

最初设计的基本理念是:借助多文档之相互关联形成的超文本(HyperText),连成可相互参阅的www(world wide web 万维网)

提出了3项www构建技术:

1、把SGML(standard generalized markup language,标准通用标记语言)作为页面的文本标记语言的HTML(HyperText markup language超文本标记语言)

2、指定文档所在地址的URL(Uniform resource locator 统一资源定位符)

3、作为文档传输协议的HTTP

二、http是什么

HyperText Transfer Protocol 超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW(万维网World Wide Web) 文件都必须遵守这个标准。这套协议用于浏览器和服务器之间传输文本。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

(ftp是基于文件传输协议提供互联网双向传输服务的工具。常用于局域网上传文件下载文件,ftp可以管理多个ftp站点,使用拖拉即可完成文件或文件夹的上传、下载查看、编辑、删除,移动文件等操作。1973年前后制定,在1995年被http的流量超越,但时至今日仍被广泛使用)

三、http解决了什么问题

解决万维网文档传输相关问题的协议

四、http的使用

HTTP协议工作于客户端-服务端架构上。

客户端:浏览器

Web服务器有:Apache服务器,Nginx 等。

浏览器作为HTTP客户端通过URL向HTTP服务端WEB服务器发送所有请求。(我们通过浏览器打开一个网站,加载资源。发送ajax请求,都是发送http请求)

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口。 (通过域名访问网站默认是80端口,后台接口可以设置成其他端口)

image.png

(1)客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

(2) 服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。


(3)、根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

(4)、content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件

表示后面的文档属于什么MIME(Multipurpose Internet Mail Extensions是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据)类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType

Content-Type 标头告诉客户端实际返回的内容的内容类型。

语法格式:

Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something

实例:

常见的媒体格式类型如下:

  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :jpg图片格式
  • image/png:png图片格式

以application开头的媒体格式类型:

  • application/xhtml+xml :XHTML格式
  • application/xml: XML数据格式
  • application/atom+xml :Atom XML聚合格式
  • application/json: JSON数据格式
  • application/pdf:pdf格式
  • application/msword : Word文档格式
  • application/octet-stream : 二进制流数据(如常见的文件下载)
  • application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

另外一种常见的媒体格式是上传文件之时使用的:

  • multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

五、http传输

web服务器是基于tcp的,因此为了能及时响应客户端的请求,web服务器需要监听80或者tcp端口,这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了

(tcp三次握手连接 四次挥手断开。tcp不可靠传输上建立可靠的发送办法)

HTTP 报文被打包在tcp报文段中,又被放到ip层数据报中,最后形成链路层的帧,通过网卡发出去 image.png

HTTP三点注意事项:

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。可以用cookie做状态管理

以下图表展示了HTTP协议通信流程:

cgiarch

六、http的发展

image.png

1、http/0.9

http于1990年问世。那时的http并没有作为正式的标准被建立,这时的http其实含有http/1.0之前的版本的意思,因此被称为http/0.9

只支持GET方法;没有首部;只能获取纯文本。

短连接:一个tcp连接发送一个http请求,http请求结束,tcp断开

以当年的通信情况来说,因为都是些容量很小的文本传输,这样已经满足需求。但是随着http的普及,文档中包含大量图片以及其他资源,如果这些图片和资源不能在一个tcp连接中全部取过来,会增加通信量的开销

2、http1.0

Http正式作为标准被公布是在1996年的5月,版本被命名为http/1.0。1.0版本增加了首部、状态码、权限、缓存、长连接(默认短连接)等规范,可以说搭建了协议的基本框架

持久连接(长连接) :一个tcp连接发送多个http请求,请求-响应 依次执行,多个http请求结束,tcp断开,对一个服务器最多建6个tcp(不同浏览器不同,资源部署到多个服务器上)

http1.0并未标准化keep-alive,一部分服务器端和客户端支持

http1.1默认keep-alive

持久连接的好处在一减少了tcp连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,是http的请求和响应能更早的结束,这样web页面的显示速度也就相应提高了

3、http/1.1

1997年1月公布的http/1.1是目前主流的http协议版本

进一步完善,1.1版本的重大改进在于默认长连接;强制客户端提供Host首部;管线化;Cache-Control、ETag等缓存的相关扩展。

管线化: 同时并发多个http请求,不需要一个一个的等待响应了

虽然是主流但 http1.1仍存在很多问题

(1)、线头阻塞:TCP连接上只能发送一个请求,前面的请求未完成前,后续的请求都在排队等待。(虽然HTTP/1.1管线化可以支持请求并发,但是浏览器很难实现,chrome、firefox等都禁用了管线化。所以1.1版本请求并发依赖于多个TCP连接,建立TCP连接成本很高,还会存在慢启动的问题。)

(2)、 头部冗余,采用文本格式

HTTP/1.X版本是采用文本格式,首部未压缩,而且每一个请求都会带上cookie、user-agent等完全相同的首部。

(3)、 请求只能从客户端开始。客户端不可以接受除响应以外的指令

4、spdy(speedy)

2009年 消除http的一些瓶颈

原理是在SSL层上增加一个SPDY会话层,以在一个TCP连接中实现并发流。通常的HTTP GET和POST格式仍然是一样的,然而SPDY为编码和传输数据设计了一个新的帧格式。因为流是双向的,所以可以在客户端和服务端启动

(SSL(Secure Sockets Layer 安全套接层协议)。用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,可确保数据在网络上的传输过程中不会被截取及窃听。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持)

主要通过多路复用、请求优先级、HTTP报头压缩、服务器推送以最小化网络延迟,提升网络速度,优化用户的网络使用体验

虽然诞生后很快被所有主流浏览器所采用,并且服务器和代理也提供了支持,但是SPDY核心人员后来都参加到HTTP 2.0开发中去了,自HTTP2.0开发完成就不再支持SPDY协议了,并在Chrome 51中删掉了SPDY的支持

5、websocket协议

websocket是一种在单个TCP连接上进行全双工通信的协议

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输

首先Websocket借用了HTTP的协议来完成一部分握手

6、http/2.0

2015年

(1)二进制分帧层

HTTP2性能提升的核心就在于二进制分帧层。HTTP2是二进制协议,他采用二进制格式传输数据而不是1.x的文本格式。

HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮

流(Stream):已建立的TCP连接上的双向字节流,可以承载一个或多个消息。

消息(Message):一个完整的HTTP请求或响应,由一个或多个帧组成。特定消息的帧在同一个流上发送,这意味着一个HTTP请求或响应只能在一个流上发送。

帧(Frame):通信的基本单位。

一个TCP连接上可以有任意数量的流。

1.1响应是文本格式,而2.0把响应划分成了两个帧,图中的HEADERS(首部)和DATA(消息负载) 是帧的类型。也就是说一条HTTP响应,划分成了两个帧来传输,并且采用二进制来编码。

(2)、多路复用

上面提到HTTP/1.1的线头阻塞和多个TCP连接的问题,HTTP2的多路复用完美解决。HTTP2让所有的通信都在一个TCP连接上完成,真正实现了请求的并发。我们来看一下HTTP2具体是怎么实现的:

HTTP2建立一个TCP连接,一个连接上面可以有任意多个流(stream),消息分割成一个或多个帧在流里面传输。帧传输过去以后,再进行重组,形成一个完整的请求或响应。这使得所有的请求或响应都无法阻塞。

打开控制台可以看到,HTTP/1.1的方式,后面文件的加载时间主要耗时在stalled,stalled的意思是从TCP连接建立完成,到真正可以传输数据之间的时间差。这就是队头阻塞,前面的请求没有处理,后面的请求都在排队等待。

这里例子我们能很直观的看到就是多路复用起到的优化作用。因为HTTP2 实现了请求并发,后面的请求不用再等待,加载时长当然少了很多。截一张HTTP2的图片加载耗时详情来看看(要看比较靠后的请求):

我们发现后面的很多请求依旧有在排队哎,只是排队的时间相对1.1少了很多。一个TCP连接可以有任意数量的流,也就是同时可以并发任意数量的请求啊,为啥还会排队呢?原因就是请求太多时,浏览器或服务器会受不了,这超出了它的处理能力。流控制帮我们解决了这个问题,流控制会管理数据的传输,允许接收者停止或减少发送的数据量,免得接收方不堪重负。所以请求太多时,还是会存在排队等待的问题,因为不管是客户端或服务器端,能同时处理请求或响应都是有限的

(3)头部压缩

头部压缩也是HTTP2的一大亮点。在1.X版本中,首部用文本格式传输,通常会给每个传输增加500-800字节的开销。现在打开一个网页上百个请求已是常态,而每个请求带的一些首部字段都是相同的,例如cookie、user-agent等。HTTP2为此采用HPACK压缩格式来压缩首部。头部压缩需要在浏览器和服务器端之间:

维护一份相同的静态字典,包含常见的头部名称,以及常见的头部名称和值的组合

维护一份相同的动态字典,可以动态的添加内容

通过静态Huffman编码对传输的首部字段进行编码

HTTP2的静态字典是长这个样子的(只截取了部分,完整表格在这里):

所以我们在传输首部字段的时候,例如要传输method:GET,那我们只需要传输静态字典里面method:GET对应的索引值就可以了,一个字节搞定。像user-agent、cookie这种静态字典里面只有首部名称而没有值的首部,第一次传输需要user-agent在静态字典中的索引以及他的值,值会采用静态Huffman编码来减小体积。

第一次传输过user-agent 之后呢,浏览器和服务器端就会把它添加到自己的动态字典中。后续传输就可以传输索引了,一个字节搞定。

我们用WireShark来抓包验证一下:

HTTP2目前都是HTTPS的请求,WireShark对HTTPS网站抓包解密请参考这里

首次传输user-agent和第二次传输user-agent

由于第一次传输的时候,字典里面并没有user-agent的值,这时候user-agent是63字节,第二次传输时,他已经在动态字典里面了,只传索引,一个字节搞定。

HPACK的首部压缩力度

Header解码后的长度有471个字节,而HEADERS流只有246个字节。这只是第一个请求,后续的请求压缩力度会更大,因为前面请求用到的首部(静态字典中没有的)会添加到动态字典中,使得后续请求只需要传输字典里面的索引。

(4)允许服务端主动推送数据给客户端

服务器端推送使得服务器可以预测客户端需要的资源,主动推送到客户端。

例如:客户端请求index.html,服务器端能够额外推送script.js和style.css。 实现原理就是客户端发出页面请求时,服务器端能够分析这个页面所依赖的其他资源,主动推送到客户端的缓存,当客户端收到原始网页的请求时,它需要的资源已经位于缓存。

针对每一个希望发送的资源,服务器会发送一个PUSH_PROMISE帧,客户端可以通过发送RST_STREAM帧来拒绝推送(当资源已经位于缓存)。这一步的操作先于父响应(index.html),客户端了解到服务器端打算推送哪些资源,就不会再为这些资源创建重复请求。当客户端收到index.html的响应时,script.js和style.css已经位于缓存。

在开放互联网上HTTP 2.0将只用于https://网址,而 http://网址将继续使用HTTP/1,目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击

(Https (http over ssl)加密通信会消耗更多的cpu和内存资源,购买证书也需要开销)

(由于目前主流浏览器,chrome、火狐等都已经公开宣布只支持加密的HTTP2,所以HTTP2基本都是基于HTTPS协议的,HTTP升级成HTTPS需要SSL证书,可以到阿里云免费申请

nginx 添加支持 https和http2.0的模块,需要做些配置

server {

#这里配置https和http2协议

listen 443 ssl http2;

server_name blog.reviosky.com;

ssl on;

root /data/blog/admin/dist/;

try_files $uri /index.html;

#下面配置ssl证书路径

ssl_certificate /etc/nginx/conf.d/cert/7218208_blog.reviosky.com.pem;

ssl_certificate_key /etc/nginx/conf.d/cert/7218208_blog.reviosky.com.key;

ssl_session_timeout 5m;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

})

缺点

  • TCP以及TCP+TLS建立连接的延时,HTTP2使用TCP协议来传输的,而如果使用HTTPS的话,还需要TLS协议进行安全传输,而使用TLS也需要一个握手过程,在传输数据之前,导致我们花掉3~4个RTT (TLS:(Transport Layer Security,安全传输层协议)。一种安全协议。在SSL更新到3.0时,IETF互联网工程任务组对SSL3.0进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异),标准化后F更名为TLS1.0)

(RTT(Round-Trip Time):往返时延。是指数据从网络一端传到另一端所需的时间。通常,时延由发送时延、传播时延、排队时延、处理时延四个部分组成)

  • TCP的队头阻塞并没有彻底解决。在HTTP2中,多个请求跑在一个TCP管道中,但当HTTP2出现丢包时,整个TCP都要开始等待重传,那么就会阻塞该TCP连接中的所有请求
https

1、https介绍

https是http的安全版,其安全基础是ssl,https协议的主要作用有2个,一种是建立一个信息安全通道,来保证数据传输的安全;另一种是确认网站的真实性。

2、https和http的区别

(1)、https协议需要申请证书(免费证书较少,需购买)

(2)、http是超文本传输协议,信息明文传输,https则是具有安全性的ssl加密传输协议

(3)、http和https使用完全不同的连接方式,端口也不一样,前者是80,后者是443;

(4)、http连接简单,是无状态的,https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

3、https证书使用过程

(1)、购买证书并合并证书 购买证书后将.crt和.ca-bundle文件合并到一个文件.crt中;

(2)、上传证书 将crt文件和key文件上传网站服务器目录中(位置自己定);

(3)、添加证书到Nginx配置文件(nginx.conf) server {

listen 443; server_name www.domain.com; #填写绑定证书的域名

ssl on;

ssl_certificate /usr/local/nginx/conf/ssl/www.domain.com.crt;

ssl_certificate_key /usr/local/nginx/conf/ssl/www.domain.com.key;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_timeout 5m;

ssl_session_cache builtin:1000 shared:SSL:10m; ssl_buffer_size 1400; add_header Strict-Transport-Security max-age=15768000; ssl_stapling on; ssl_stapling_verify on; location / {

root html; #站点目录

index index.html index.htm;

}

}

(4)、检查ssl是否生效并重启Nginx nginx -t service nginx reload

(5)、浏览器中会有各种认证机构证书的信息,会对目标网站返回的证书信息进行校验,不过不通过会提示该网站是不受信任的网站,打不开

image.png

image.png

7、http/3.0

由于HTTP 2.0依赖于TCP,TCP有什么问题那HTTP2就会有什么问题。最主要的还是队头阻塞,在应用层的问题解决了,可是在TCP协议层的队头阻塞还没有解决。

TCP在丢包的时候会进行重传,前面有一个包没收到,就只能把后面的包放到缓冲区,应用层是无法取数据的,也就是说HTTP2的多路复用并行性对于TCP的丢失恢复机制不管用,因此丢失或重新排序的数据都会导致交互挂掉

为了解决这个问题,Google又发明了QUIC``协议

(QUIC(Quick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议)

并在2018年11月将QUIC正式改名为HTTP 3.0

特点

  • 在传输层直接干掉TCP,用UDP替代

(Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。RFC 768 [1] 描述了 UDP。它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。不可靠。)

  • 实现了一套新的拥塞控制算法,彻底解决TCP中队头阻塞的问题
  • 实现了类似TCP的流量控制、传输可靠性的功能。虽然UDP不提供可靠性的传输,但QUIC在UDP的基础之上增加了一层来保证数据可靠性传输。它提供了数据包重传、拥塞控制以及其他一些TCP中存在的特性
  • 实现了快速握手功能。由于QUIC是基于UDP的,所以QUIC可以实现使用0-RTT或者1-RTT来建立连接,这意味着QUIC可以用最快的速度来发送和接收数据。
  • 集成了TLS加密功能。目前QUIC使用的是TLS1.3
https

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1]  。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面

前端发送请求的url地址写成https://xxxxxx即可, web服务监听443

优点

  1. 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器 
  2. HTTPS 协议是由 SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性
  3. HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本 

缺点

  1. 相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗 
  2. HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用 。
  3. 最关键的是,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行 
  4. 成本增加。购买证书需要成本,部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。随着云计算技术的发展,数据中心部署的服务器使用成本在规模增加后逐步下降,相对于用户访问的安全提升,其投入成本已经下降到可接受程度

参考 ye11ow.gitbooks.io/http2-expla…

XMLHttpRequest(XHR)

对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。XMLHttpRequest 在 AJAX 编程中被大量使用。

尽管名称如此,XMLHttpRequest 可以用于获取任何类型的数据,而不仅仅是 XML。它甚至支持 HTTP 以外的协议(包括 file:// 和 FTP),尽管可能受到更多出于安全等原因的限制

ajax

Ajax是一种异步请求数据的web开发技术,有效利用js和dom的操作,对于改善用户的体验和页面性能很有帮助。简单地说,在不需要重新刷新页面的情况下,Ajax 通过异步请求加载后台数据,并在网页上呈现出来。常见运用场景有表单验证是否登入成功、百度搜索下拉框提示和快递单号查询等等。Ajax的目的是提高用户体验,较少网络数据的传输量。同时,由于AJAX请求获取的是数据而不是HTML文档,因此它也节省了网络带宽,让互联网用户的网络冲浪体验变得更加顺畅

image.png

image.png

ajax的核心技术是名为XMLHttpRequest的API,通过js脚本语言的调用就能和服务器进行http通信。借由这种手段,就能从已经加载完毕的web页面上发起请求,只更新局部页面

1.创建Ajax核心对象XMLHttpRequest(记得考虑兼容性)

	1. var xhr=null;  
	2. if (window.XMLHttpRequest)  
	3.   {// 兼容 IE7+, Firefox, Chrome, Opera, Safari  
	4.   xhr=new XMLHttpRequest();  
	5.   } else{// 兼容 IE6, IE5 
	6.     xhr=new ActiveXObject("Microsoft.XMLHTTP");  
	7.   } 

tip:

(1)、超文本 世界杯 是一段普通文本,世界杯 可以有语义就是 超文本 hyperText (2)、域名 = ip地址

(3)、 以太网(ethernet)-局域网: 以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是应用最普遍的局域网技术,取代了其他局域网技术如令牌

因特网(internet)- 互联网:因特网(Internet)是一组全球信息资源的总汇。有一种粗略的说法,认为INTERNET是由于许多小的网络(子网)互联而成的一个逻辑网,每个子网中连接着若干台计算机(主机)。Internet以相互交流信息资源为目的,基于一些共同的协议,并通过许多路由器和公共互联网而成,它是一个信息资源和资源共享的集合。

但如果作为普通名词使用,即开头字母小写的“internet”,则泛指由多个计算机网络相互连接而成一个大型网络,因特网(Internet)只是互联网中最大的一个

Internet提供的主要服务有万维网(WWW)、文件传输(FTP)、电子邮件(E-mail)、远程登录(Telnet)、手机 (3GHZ)

WWW (World Wide Web,万维网)是存储在Internet计算机中、数量巨大的文档的集合。这些文档称为页面,它是一种超文本(Hypertext)信息,可以用于描述超媒体文本图形视频音频多媒体,称为超媒体(Hypermedia)。Web上的信息是由彼此关联的文档组成的,而使其连接在一起的是超链接(Hyperlink)

(4)、http端口号对应的就是tcp端口号。

写域名不加端口号 默认端口号 https 443 服务端监听443端口

  1. Request URL: https://gateway.llllll.com/codemgr/api/code/projectReviews?project_id=2021102811395797
  2. Request Method: OPTIONS
  3. Status Code:200 OK
  4. Remote Address:115.238.30.69:443 写域名不加端口号 默认端口号 https 443 服务端监听443端口
  5. Request URL:https://hooyi-autotest-aly.lllllll.com/report/reports/1/10?type=BASIC&pId=2021102811395797
  6. Request Method:OPTIONS
  7. Status Code:200
  8. Remote Address:47.111.186.223:443 指定端口号 8081 服务端监听8081端口
  9. Request URL: http://192.168.162.111:8081/role/getUserDefaultRole/mahong?type=project
  10. Request Method:GET
  11. Status Code: 200
  12. Remote Address:192.168.162.167:8081

(5)、 web服务器 我们有时候会遇到这种情况,一个html文件在本地打开时,测试平常的功能还行, 但是,一涉及到ajax请求,就算你是请求本地的json文件,他都会涉及到跨域的问题, 浏览器本身就限制了本地打开时,不允许跨域请求的设定, 所以,我们就需要在本地跑起一个服务来,然后通过本地ip+端口号, 或者localhost+端口号,或者127.0.0.1 + 端口号的形式来访问我们的页面,在本地跑服务,我知道的有四种 1、电脑本身自带的IIS 2、Apache组件 3、nginx 3、nodejs 的http-server

以前,我们开发一个node后端服务时,每次更改文件,均需重启一下,服务才能生效。 这使我们的开发效率降低了很多。nodemon的出现,可以随时监听文件的变更,自动重启服务, 我们开发时只需关注代码即可,不再需要手动重启服务。