HTTP杂谈

HTTP 协议

HTTP请求和响应步骤

HTTP杂谈_第1张图片

以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的。

TCP/IP协议

TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目前已成为事实上的国际标准。TCP/IP协议簇是一组不同层次上的多个协议的组合,通常被认为是一个四层协议系统,与OSI的七层模型相对应。

HTTP协议就是基于TCP/IP协议模型来传输信息的。
HTTP杂谈_第2张图片

(1). 链路层

也称作数据链路层或网络接口层(在第一个图中为网络接口层和硬件层),通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。

(2). 网络层

也称作互联网层(在第一个图中为网际层),处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。

IP是一种网络层协议,提供的是一种不可靠的服务,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。

ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。

IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。

(3). 传输层

主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。为了提供可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组等机制。

UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。UDP协议任何必需的可靠性必须由应用层来提供。

(4). 应用层

应用层决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。包括 HTTP,FTP(File Transfer Protocol,文件传输协议),DNS(Domain Name System,域名系统)服务。

HTTP杂谈_第3张图片

当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图所示。

HTTP杂谈_第4张图片

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)。协议是通过目的端口号、源I P地址和源端口号进行解包的。

通过以上步骤我们从TCP/IP模型的角度来理解了一次HTTP请求与响应的过程。

下面这张图更清楚明白:
HTTP杂谈_第5张图片

下面具体来看如何进行一步步操作的。

Http是什么?

通俗来讲,他就是计算机通过网络进行通信的规则,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据。目前任何终端(手机,笔记本电脑。。)之间进行任何一种通信都必须按照Http协议进行,否则无法连接。

1、四个基于

请求与响应: 客户端发送请求,服务器端响应数据

无状态的: 协议对于事务处理没有记忆能力,客户端第一次与服务器建立连接发送请求时需要进行一系列的安全认证匹配等,因此增加页面等待时间,当客户端向服务器端发送请求,服务器端响应完毕后,两者断开连接,也不保存连接状态,一刀两断!恩断义绝!从此路人!下一次客户端向同样的服务器发送请求时,由于他们之前已经遗忘了彼此,所以需要重新建立连接。HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态功能,于 是引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管 理状态了。有关 Cookie 的详细内容稍后讲解。

应用层: Http是属于应用层的协议,配合TCP/IP使用。

TCP/IP: Http使用TCP作为它的支撑运输协议。HTTP客户机发起一个与服务器的TCP连接,一旦连接建立,浏览器(客户机)和服务器进程就可以通过套接字接口访问TCP。

针对无状态的一些解决策略:

有时需要对用户之前的HTTP通信状态进行保存,比如执行一次登陆操作,在30分钟内所有的请求都不需要再次登陆。于是引入了Cookie技术。

HTTP/1.1想出了持久连接(HTTP keep-alive)方法。其特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态,在请求首部字段中的Connection: keep-alive即为表明使用了持久连接。等等还有很多……

2、持久连接

持久连接的特点是,只要任意一端 没有明确提出断开连接,则保持 TCP 连接状态。在 HTTP/1.1 中,所有的连接认都是持久连接,但在 HTTP/1.0 并未标准化。
持久连接使得多数请求以管线化(pipelinin)方式发送成为可能。从发送请求后需待并到响应,才能发送下一请求。管线化技出现后,不用等待响应亦可直接发送下一个请求。这样就能够做到同时并行发送多个请求,而不需要用途一个接一个地等待响应。

3、 Cookie技术

Cookie 根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 部段信,通知客户端存 Cookie。当下次客户端再往该服送请求时,客户端自动在请求报文中加入 Cookie 值后发送出去,
服务器端发现客户端发送过来的 Cookie 后,去检查究竟是从哪客户端发的请求,然后对比服器上的记录,最后得到之前的状态信息。

HTTP/1.0 和 HTTP/1.1 支持的主要方法

PUT:传输文件
PUT 方法用来传输文件。就像 FTP 协议的文件上传一样,要求在请 求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。 但是,鉴于 HTTP/1.1 的 PUT 方法自身不带验证机制,任何人都可以 上传文件 , 存在安全性问题,因此一般的 Web 网站不使用该方法。若 配合 Web 应用程序的验证机制,或架构设计采用 REST(REpresentational State Transfer,表征状态转移)标准的同类 Web 网站,就可能会开放使用 PUT 方法。

使用PUT 方法的请求、响应例子

说明 说明
请求 PUT/example.html HTTP/1.1 Host:www.hackr.jp Content_Type:text/html Content-Length: 1560
响应 1 响应返回状态码 204 No Content(比如 :该 html 已存在于服务器上)

响应1的意思其实是请求行成功了,但无返回

**HEAD:获得报文首部 **
HEAD 方法和 GET 方法一样,只是不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等。

使用 HEAD 方法的请求·响应的例子

说明 说明
请求 HEAD /index.html HTTP/1.1 Host: www.hackr.jp
响应 返回index.html有关的响应首部

**DELETE:删除文件 **
DELETE 方法用来删除文件,是与 PUT 相反的方法。DELETE 方法按 请求 URI 删除指定的资源。 但是,HTTP/1.1 的 DELETE 方法本身和 PUT 方法一样不带验证机 制,所以一般的 Web 网站也不使用 DELETE 方法。当配合 Web 应用 程序的验证机制,或遵守 REST 标准时还是有可能会开放使用的。

使用 DELETE 方法的请求·响应的例子

说明 说明
请求 DELETE /example.html HTTP/1.1 Host: www.hackr.jp
响应 响应返回状态码 204 No Content(比如 :该 html 已从该服务器上删除)

TRACE:追踪路径

TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方 法。发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服 务器端就将该数字减 1,当数值刚好减到 0 时,就停止继续传输,最 后接收到请求的服务器端则返回状态码 200 OK 的响应。 客户端通过 TRACE 方法可以查询发送出去的请求是怎样被加工修改 / 篡改的。这是因为,请求想要连接到源目标服务器可能会通过代理 中转,TRACE 方法就是用来确认连接过程中发生的一系列操作。 但是,TRACE 方法本来就不怎么常用,再加上它容易引发 XST(Cross-Site Tracing,跨站追踪)攻击,通常就更不会用到了。

使用 TRACE 方法的请求·响应的例子

说明 说明
请求 TRACE / HTTP/1.1 Host: hackr.jp Max-Forwards: 2 HTTP/1.1 200 OK Content-Type: message/http 39
响应 Content-Length: 1024 TRACE / HTTP/1.1 Host: hackr.jp Max-Forwards: 2(返回响应包含请求内容)

**CONNECT:要求用隧道协议连接代理 **
CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协 议进行 TCP 通信。主要使用 SSL(Secure Sockets Layer,安全套接 层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容 加 密后经网络隧道传输。
CONNECT 方法的格式如下所示:
CONNECT 代理服务器名:端口号 HTTP版本

使用 CONNECT 方法的请求·响应的例子

说明 说明
请求 CONNECT proxy.hackr.jp:8080 HTTP/1.1 Host: proxy.hackr.jp
响应 HTTP/1.1 200 OK(之后进入网络隧道)

HTTP杂谈_第6张图片

HTTP请求报文

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。

HTTP杂谈_第7张图片
在请求首部和响应首部后或许还有 其他非标准首部字段(X-Frame-Options、DNT、P3P)更多内容见《图解HTTP》

1.请求行

请求行分为三个部分:请求方法、请求地址和协议版本

请求方法

HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。

最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。

请求地址

URL:统一资源定位符,是一种自愿位置的抽象唯一识别方法。

组成:<协议>://<主机>:<端口>/<路径>

端口和路径有时可以省略(HTTP默认端口号是80)

如下例:

HTTP杂谈_第8张图片

有时会带参数,GET请求

协议版本

协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

2.请求首部

HTTP/1.1 首部分为四大类
1、通用首部
HTTP杂谈_第9张图片

2、请求首部
HTTP杂谈_第10张图片

实体首部
HTTP杂谈_第11张图片

响应首部
HTTP杂谈_第12张图片

HTTP 首部字段重复了会如何:当 HTTP 报文首部中出现了两或两以上具有相同首部段名怎么样?这种情况在规范内尚未明确,根据浏览器内部处理逻的不同,结果可能并不一致。有些浏览器优先处理第一次出现的首部段,而有些则优先处理最后出现的首部段。

3.请求数据

可选部分,比如GET请求就没有请求数据。

下面是一个POST方法的请求报文:

POST  /index.php HTTP/1.1    请求行
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  请求头
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer:http://localhost/
Content-Length:25
Content-Type:application/x-www-form-urlencoded
  空行
username=aa&password=1234  请求数据

HTTP响应报文

HTTP杂谈_第13张图片

HTTP响应报文主要由状态行、响应头部、空行以及响应数据组成。

1.状态行

由3部分组成,分别为:协议版本,状态码,状态码描述。

其中协议版本与请求报文一致,状态码描述是对状态码的简单描述,所以这里就只介绍状态码。

状态码

状态代码为3位数字。

  • 1xx:指示信息——表示请求已接收,继续处理。
  • 2xx:成功——表示请求已被成功接收、理解、接受。
  • 3xx:重定向——需要进行附加操作以完成请求。
  • 4xx:客户端错误——服务器无法处理请求。
  • 5xx:服务器端错误——服务器处理请求出错。

下面列举几个常见的:

HTTP杂谈_第14张图片
更多内容见《图解HTTP》

2.响应首部

HTTP杂谈_第15张图片

3.响应数据

用于存放需要返回给客户端的数据信息。

下面是一个响应报文的实例:

HTTP/1.1 200 OK  状态行
Date: Sun, 17 Mar 2013 08:12:54 GMT  响应头部
Server: Apache/2.2.8 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4393
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
  空行

  响应数据 HTTP响应示例 Hello HTTP! </blockquote> <p>关于请求头部和响应头部的知识点很多,这里只是简单介绍。</p> <p>通过以上步骤,数据已经传递完毕,HTTP/1.1会维持持久连接,但持续一段时间总会有关闭连接的时候,这时候据需要断开TCP连接。</p> <h2>HTTPS 原理</h2> <h3>HTTP 缺点</h3> <ul> <li>通信使用明文(不加密),内容可能被窃听。</li> <li>不验证通信方的份,因此有可能遭遇伪装(DOS攻击)。</li> <li>无法证明报文的完整性,所以有可能已遭篡改(中间人攻击)。</li> </ul> <h3>HTTP+加密+认证+完整性保护=HTTPS</h3> <p>0</p> <h4>1、加密</h4> <p><strong>1、共享密钥加密</strong></p> <p>加密和解密同用一个密钥的方式称为共享密钥加密(Common keycrypto system),也被叫做对称密钥加密。以共享密钥方式加密时必须将密钥也发给对方。可究竟怎样才能安全地转交?在互联网上转发密钥时,如果通信被监听那么密钥就可能会落入攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。<br> <strong>2、公开密钥加密</strong></p> <ul> <li>公开密钥加密使用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥(public key)。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。用公开密钥密方式,发送密文的一方用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用解密的私有密钥,不必担心密钥被攻击者窃听而盗走。另外,要想根据密文和公开密钥,恢复到息原文是常困难,因为解密过程就是在对离散对数进行求值,这并非轻而易举就能做到。退一步讲,如果能对一非常大的整数做到快速地因式分解,那么密码破解还是存在希望的。但就目前的技术看不太现实的。<br> <strong>HTTPS采用混合加密机制:在交换密钥环节用公开密钥加密方式,之后的建立通信文阶段则用共享密钥加密方式</strong></li> <li>公开密钥加密缺点及改正<br> 缺点:遗憾的是,公开密钥加密方式还是存在一些问题的。那就是无法证明公开密钥本身就是货真价实的公开密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。<br> 改正:使用数字证书认证机构和七相关机关颁发的公开密钥证书;步骤如下:<br> <a href="http://img.e-com-net.com/image/info8/beca144375c149ac9eeb4c2f4648b3de.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/beca144375c149ac9eeb4c2f4648b3de.jpg" alt="HTTP杂谈_第16张图片" width="650" height="485" style="border:1px solid black;"></a></li> </ul> <h4>2、 认证</h4> <p><strong>SSL客户端认证步骤:</strong><br> 为达到 SSL客户端认证的目的,需要事先将客户端证书分发给客户端,且客户端必须安装此证书。<br> 步骤 1: 接收到需要认证资源的请求,服务器会发送 CertificateRequest 报文,要求客户端提供客户端证书。<br> 步骤 2: 用户选择将发送的客户端证书后,客户端会把客户端证书信息以 Client Certificate 报文方式发送给服务器。<br> 步骤3:服务器验证客户端证书通过后方可领取证书内客户端的公开密钥,然后开始HTTPS加密通信。</p> <h4>3、HTTPS的安全通信机制</h4> <p><a href="http://img.e-com-net.com/image/info8/2c3d967741db4cc39f302cd49db57242.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/2c3d967741db4cc39f302cd49db57242.jpg" alt="HTTP杂谈_第17张图片" width="649" height="433" style="border:1px solid black;"></a></p> <h2>消除HTTP瓶颈的SPDY</h2> <h3>1、HTTP的瓶颈</h3> <p>有些网站有实时更新内容的需求,HTTP却无法妥善地处理好这项任务。因为以下的HTTP标准会成为瓶颈。<br> 1、一条连接上只可发送一个请求<br> 2、 请求只能从客户端开始。客户端不可以接收除响应以外的指令<br> 3、请求 / 响应首部未经压缩就发送。首部信息越多延迟越大。<br> 4、 发送冗长的首部。每次互相发送相同的首部造成的浪费较多<br> 5、可任意选择数据压缩格式。非强制压缩发送。</p> <h3>2、SPDY的目标</h3> <p>陆续出现的 Ajax 和 Comet 等提高易用性的技术(详情见图解HTTP),一定程度上使 HTTP得到了改善,但 HTTP 协议本身的限制也令人有些束手无策。为了进行根本性的改善,需要有一些协议层面上的改动。处于持续开发状态中的 SPDY 协议,正是为了在协议级别消除 HTTP所遭遇的瓶颈。</p> <h3>3、SPDY 的设计与功能</h3> <h4>1、设计:</h4> <p>SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输层之间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY 规定通信中使用 SSL。SPDY 以会话层的形式加入,控制对数据的流动,但还是采用 HTTP建立通信连接。因此,可照常使用 HTTP 的 GET 和 POST 等方 法、Cookie 以及 HTTP 报文等。</p> <h4>2、使用 SPDY 后,HTTP 协议额外获得以下功能。</h4> <p><strong>多路复用流</strong>:通过单一的 TCP 连接,可以无限制处理多个 HTTP 请求。所有请求的处理都在一条 TCP 连接上完成,因此 TCP 的处理效率得到提高。<br> <strong>赋予请求优先级</strong>:SPDY 不仅可以无限制地并发处理请求,还可以给请求逐个分配优先级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响应变慢的问题。<br> <strong>压缩 HTTP 首部</strong>:压缩 HTTP 请求和响应的首部。这样一来,通信产生的数据包数量和发送的字节数就更少了。<br> <strong>推送功能</strong>:支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求。<br> <strong>服务器提示功能</strong>:服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求。</p> <h2>使浏览器进行全双工通信的WebSocket</h2> <h3>1、WebSocket协议的主要特点</h3> <p><strong>1、推送功能</strong><br> 支持由服务器向客户端推送数据的推送功能。这样,服务器可直接发送数据,而不必等待客户端的请求。</p> <p>**2、减少通信量 **<br> 只要建立起 WebSocket 连接,就希望一直保持连接状态。和 HTTP 相比,不但每次连接时的总开销减少,而且由于 WebSocket 的首部信息很小,通信量也相应减少了。</p> <h3>3、WebSocket通信步骤</h3> <p><a href="http://img.e-com-net.com/image/info8/47bdfb92c76d42afa4bd7cd6210f9bc1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/47bdfb92c76d42afa4bd7cd6210f9bc1.jpg" alt="HTTP杂谈_第18张图片" width="607" height="396" style="border:1px solid black;"></a></p> <p><strong>1、握手、请求</strong><br> 为了实现 WebSocket 通信,需要用到 HTTP 的 Upgrade 首部字段,告知服务器通信协议发生改变,以达到握手的目的。</p> <blockquote> <p>GET /chat HTTP/1.1<br> Host: server.example.com<br> Upgrade: websocket<br> Connection: Upgrade<br> Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==<br> Origin: http://example.com<br> Sec-WebSocket-Protocol: chat, superchat<br> Sec-WebSocket-Version: 13</p> </blockquote> <p>Sec-WebSocket-Key 字段内记录着握手过程中必不可少的键值。Sec-WebSocket-Protocol 字段内记录使用的子协议子协议按 WebSocket 协议标准在连接分开使用时,定义那些连接的名称。</p> <p><strong>2. 握手、响应</strong></p> <blockquote> <p>对于之前的请求,返回状态码 101 Switching Protocols 的响应。<br> HTTP/1.1 101 Switching Protocols<br> Upgrade: websocke<br> Connection: Upgrade<br> Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=<br> Sec-WebSocket-Protocol: chat</p> </blockquote> <p>Sec-WebSocket-Accept 的字段值是由握手请求中的 Sec- WebSocket-Key 的字段值生成的。 成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数 据帧,<strong>而采用 WebSocket 独立的数据帧</strong></p> <h3>3、WebSocket与Socket 的关系</h3> <p>Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议<br> WebSocket是应用层协议。</p> <h2>HTTP0.9、HTTP1.0、HTTP1.1与HTTP2.0区别</h2> <h3>1、HTTP0.9</h3> <p>HTTP/0.9是第一个版本的HTTP协议,已过时。它的组成极其简单,只允许客户端发送GET这一种请求,且不支持请求头。由于没有协议头,造成了HTTP/0.9协议只支持一种内容,即纯文本。不过网页仍然支持用HTML语言格式化,同时无法插入图片。</p> <p>HTTP/0.9具有典型的无状态性,每个事务独立进行处理,事务结束时就释放这个连接。由此可见,HTTP协议的无状态特点在其第一个版本0.9中已经成型。一次HTTP/0.9的传输首先要建立一个由客户端到Web服务器的TCP连接,由客户端发起一个请求,然后由Web服务器返回页面内容,然后连接会关闭。如果请求的页面不存在,也不会返回任何错误码</p> <h3>2、HTTP1.0</h3> <p>HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用。相对于HTTP/0.9增加了如下主要特性:</p> <ul> <li>请求与响应支持头域</li> <li>响应对象以一个响应状态行开始</li> <li>响应对象不只限于超文本</li> <li>开始支持客户端通过POST方法向Web服务器提交数据,支持GET、HEAD、POST方法</li> <li>支持长连接(但默认还是使用短连接),缓存机制,以及身份认证</li> </ul> <h3>3、HTTP1.1</h3> <p>HTTP协议的第三个版本是HTTP/1.1,是目前使用最广泛的协议版本。HTTP/1.1是目前主流的HTTP协议版本,相对于HTTP/1.0新增了以下内容:</p> <ol> <li>默认为长连接</li> </ol> <p>HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection:keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。</p> <ol start="2"> <li>提供了范围请求功能(宽带优化)</li> </ol> <p>HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。这是支持文件断点续传的基础。</p> <ol start="3"> <li>提供了虚拟主机的功能(HOST域)</li> </ol> <p>在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。</p> <ol start="4"> <li>多了一些缓存处理字段</li> </ol> <p>HTTP/1.1在1.0的基础上加入了一些cache的新特性,引入了实体标签,一般被称为e-tags,新增更为强大的Cache-Control头。</p> <ol start="5"> <li>错误通知的管理</li> </ol> <p>在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。</p> <h3>4、HTTP2.0:SPDY的升级版</h3> <p><strong>HTTP/2 是如何提高效率呢?</strong></p> <p><strong>二进制分帧:HTTP 2.0 的所有帧都采用二进制编码</strong></p> <ul> <li> <p><strong>帧</strong>:客户端与服务器通过交换帧来通信,帧是基于这个新协议通信的最小单位。</p> </li> <li> <p><strong>消息</strong>:是指逻辑上的 HTTP 消息,比如请求、响应等,由一或多个帧组成。</p> </li> <li> <p><strong>流</strong>:流是连接中的一个虚拟信道,可以承载双向的消息;每个流都有一个唯一的整数标识符(1、2…N);</p> </li> </ul> <p><strong>多路复用 (Multiplexing)</strong></p> <p>多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。有了新的分帧机制后,HTTP/2 不再依赖多个TCP 连接去实现多流并行了。每个数据流都拆分成很多互不依赖的帧,而这些帧可以交错(乱序发送),还可以分优先级。最后再在另一端把它们重新组合起来。HTTP 2.0 连接都是持久化的,而且客户端与服务器之间也只需要一个连接(<strong>每个域名一个连接</strong>)即可。</p> <p><strong>请求优先级</strong></p> <ul> <li> <p>把HTTP 消息分解为很多独立的帧之后,就可以通过优化这些帧的交错和传输顺序,每个流都可以带有一个31 比特的优先值:0 表示最高优先级;2的31次方-1 表示最低优先级。</p> </li> <li> <p>服务器可以根据流的优先级,控制资源分配(CPU、内存、带宽),而在响应数据准备好之后,优先将最高优先级的帧发送给客户端。</p> </li> <li> <p>HTTP 2.0 一举解决了所有这些低效的问题:浏览器可以在发现资源时立即分派请求,指定每个流的优先级,让服务器决定最优的响应次序。这样请求就不必排队了,既节省了时间,也最大限度地利用了每个连接。</p> </li> </ul> <p><strong>header压缩</strong></p> <p>HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP/2使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。</p> <p><strong>服务端推送</strong></p> <ul> <li> <p>服务器可以对一个客户端请求发送多个响应。服务器向客户端推送资源无需客户端明确地请求。</p> </li> <li> <p>HTTP 2.0 连接后,客户端与服务器交换SETTINGS 帧,借此可以限定双向并发的流的最大数量。</p> </li> <li> <p>所有推送的资源都遵守同源策略。换句话说,服务器不能随便将第三方资源推送给客户端,而必须是经过双方确认才行。</p> </li> <li> <p>服务器必须遵循请求 - 响应的循环,只能借着对请求的响应推送资源</p> </li> </ul> <p>参考:《图解HTTP》<br> 参考链接:HTTP</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1686774771435515904"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(计算机网络)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950131322404007936.htm" title="【计算机网络】细说IP" target="_blank">【计算机网络】细说IP</a> <span class="text-muted">问道飞鱼</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a> <div>文章目录概述IP地址的组成IP地址的分类IP地址的作用分类一、A类IP地址二、B类IP地址三、C类IP地址四、D类IP地址五、E类IP地址协议报文子网掩码一、定义与功能二、表示方法三、子网掩码与IP地址的关系四、子网掩码的设置与配置五、实例说明IPv6一、定义与背景二、地址格式与特点三、优势与功能四、过渡与部署五、应用与发展IPv6协议报文有了IPv6还需要子网掩码吗概述IP,全称Internet</div> </li> <li><a href="/article/1949900214068375552.htm" title="计算机三级网络技术(一、二)" target="_blank">计算机三级网络技术(一、二)</a> <span class="text-muted">lovewangyihui</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%B7%A5%E7%A8%8B%E5%B8%88/1.htm">网络工程师</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%AD%89%E7%BA%A7%E8%80%83%E8%AF%95/1.htm">计算机等级考试</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a> <div>第1章:网络系统结构与设计的基本原则1、计算机网络的分类网络的覆盖范围:局域网、城域网、广域网、个人区域网局域网局域网覆盖有限的地理范围,它适应于机关、校园、工厂等有限范围内的计算机、终端与各类信息处理设备连网的需求。局域网提供高数据传输效率(10Mbps~10Gbps)、底误码率的高质量数据传输环境。局域网一般属于一个单位所有**,易于建立、维护与扩展**。介质控制访问方法:共享式介质、交换式介</div> </li> <li><a href="/article/1949722040701349888.htm" title="【系统架构设计】计算机网络" target="_blank">【系统架构设计】计算机网络</a> <span class="text-muted">傻傻虎虎</span> <a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E7%B2%BE%E7%BC%96/1.htm">系统架构设计精编</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a> <div>【系统架构设计】计算机网络网络架构与协议网络互联模型OSI/RM结构模型TCP/IP结构模型IPv6局域网与广域网局域网特点网络互连与常用设备网络互联设备交换技术路由技术网络存储技术网络架构与协议网络互联模型OSI/RM结构模型1977年,国际标准化组织为适应网络标准化发展的需求,制定了开放系统互联参考模型(OpenSystemInterconnection/ReferenceModel,OSI/</div> </li> <li><a href="/article/1949701611186089984.htm" title="代码随想录八股训练营学习总结" target="_blank">代码随想录八股训练营学习总结</a> <span class="text-muted">Fight___</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>一、核心知识模块梳理1.计算机网络体系围绕OSI七层模型逐层突破,重点掌握TCP三次握手/四次挥手的底层状态转换深入理解HTTP与HTTPS的差异(如SSL/TLS握手流程、对称加密与非对称加密混合机制)实战DNS解析全流程(递归查询与迭代查询的配合机制),记忆常见HTTP缓存头字段的应用场景2.操作系统内核原理从Linux基础命令(grep/awk/sed高级用法)到进程线程的本质区别(资源分配</div> </li> <li><a href="/article/1949646145076654080.htm" title="编程与数学 03-002 计算机网络 10_应用层协议" target="_blank">编程与数学 03-002 计算机网络 10_应用层协议</a> <span class="text-muted">明月看潮生</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E7%AC%AC03%E9%98%B6%E6%AE%B5/1.htm">第03阶段</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a> <div>编程与数学03-002计算机网络10_应用层协议一、常见的网络应用(一)Web应用(二)电子邮件(三)文件传输二、Web应用协议(HTTP/HTTPS)(一)HTTP协议的请求与响应格式(二)HTTPS的安全机制三、电子邮件协议(SMTP、POP3、IMAP)(一)邮件发送与接收的协议工作原理(二)各协议的功能特点四、总结摘要:本文是计算机网络课程中关于应用层协议的学习笔记。应用层协议是计算机网络</div> </li> <li><a href="/article/1949636437980803072.htm" title="编程与数学 03-002 计算机网络 07_路由算法" target="_blank">编程与数学 03-002 计算机网络 07_路由算法</a> <span class="text-muted">明月看潮生</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E7%AC%AC03%E9%98%B6%E6%AE%B5/1.htm">第03阶段</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E8%B7%AF%E7%94%B1%E5%99%A8/1.htm">智能路由器</a><a class="tag" taget="_blank" href="/search/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a> <div>编程与数学03-002计算机网络07_路由算法一、静态路由算法(一)手工配置路由表的方法(二)静态路由的优缺点二、动态路由算法原理(一)距离矢量算法(如贝尔曼-福特算法)(二)链路状态算法(如迪杰斯特拉算法)三、路由算法的性能比较(一)收敛速度(二)开销(三)适用场景四、总结摘要:本文是计算机网络课程中关于路由算法的学习笔记。路由算法是网络层的重要组成部分,用于选择最佳路径将数据包从源节点传输到目</div> </li> <li><a href="/article/1949611724487323648.htm" title="编程与数学 03-002 计算机网络 08_网络层的IP地址" target="_blank">编程与数学 03-002 计算机网络 08_网络层的IP地址</a> <span class="text-muted"></span> <div>编程与数学03-002计算机网络08_网络层的IP地址一、IP地址的分类与特点(一)IPv4地址的分类(A、B、C、D、E类)(二)各类地址的范围与用途二、子网划分与超网划分(一)子网划分的方法与目的(二)超网划分的原理与应用三、特殊IP地址(一)广播地址(二)回环地址(三)网络地址(四)私有地址(五)多播地址四、总结摘要:本文是计算机网络课程中关于网络层IP地址的学习笔记。IP地址是网络层的核心</div> </li> <li><a href="/article/1949583353531396096.htm" title="计算机网络实验" target="_blank">计算机网络实验</a> <span class="text-muted">木子杳衫</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a> <div>实验一VLAN配置1、VLAN即虚拟局域网,是在物理局域网上通过虚拟配置建立逻辑上独立的虚拟网络,相同的VLAN之间可以直接通信,不同的VLAN之间通信需要通过路由器设备进行转发。2、一般步骤:PacketTracer拓扑图VLAN划分+IP地址VLAN10:VLAN20:交换机间相连的端口:PC0(Fa0/1):192.168.1.1PC1(Fa0/2):192.168.1.2Fa0/3PC3(</div> </li> <li><a href="/article/1949493062585610240.htm" title="0基础纯新手小白也能成大神 之 计算机网络概论" target="_blank">0基础纯新手小白也能成大神 之 计算机网络概论</a> <span class="text-muted"></span> <div>目录计算机网络概论一、概述1、概念2、网络发展史3、网络的四要素4、网络的功能5、网络的类型6、网络协议与标准7、常见概念8、网络拓扑结构二、网络模型1、分层思想2、OSI七层模型1、物理层(最底层)2、数据链路层3、网络层4、传输层5、会话层6、表示层7、应用层(最高层)3、TCP/IP五层模型1物理层2数据链路层3、网络层4、传输层5、应用层4、数据的封装与解封过程4.1PUD4.2数据封装与</div> </li> <li><a href="/article/1949475797899210752.htm" title="深入分析计算机网络数据链路层和网络层面试题" target="_blank">深入分析计算机网络数据链路层和网络层面试题</a> <span class="text-muted"></span> <div>计算机网络体系结构1.请简述OSI七层模型和TCP/IP四层模型,并比较它们的异同。OSI七层模型:应用层:直接为用户的应用进程提供服务,如HTTP(超文本传输协议,用于Web浏览器与服务器通信)、FTP(文件传输协议,用于文件的上传和下载)、SMTP(简单邮件传输协议,用于发送电子邮件)等。表示层:负责处理在两个通信系统中交换信息的表示方式。包括数据格式转换(如将ASCII码转换为EBCDIC码</div> </li> <li><a href="/article/1949469492719448064.htm" title="深入分析计算机网络传输层和应用层面试题" target="_blank">深入分析计算机网络传输层和应用层面试题</a> <span class="text-muted">IsPrisoner</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>三、传输层面试题(TransmissionLayer)传输层位于OSI七层模型的第四层,它的核心任务是为两个主机之间的应用层提供可靠的数据传输服务。它不仅承担了数据的端到端传输,而且还实现了诸如差错检测、数据流控制、拥塞控制等机制,是网络面试中非常关键的一层。1.TCP和UDP的区别详解及应用场景分析概述:TCP和UDP是传输层的两种协议,各有优缺点,使用场景不同。特性TCP(Transmissi</div> </li> <li><a href="/article/1949427884657537024.htm" title="计算机网络:应用层知识点汇总" target="_blank">计算机网络:应用层知识点汇总</a> <span class="text-muted">劲夫学编程</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E5%B1%82/1.htm">应用层</a> <div>文章目录一、网络应用模型二、域名系统(DNS)三、文本传输协议(FTP)四、电子邮件五、万维网和HTTP协议一、网络应用模型p2p也就是对等模型二、域名系统(DNS)我们知道,随着人们建立一个网站的成本降低以及技能的提高,越来越多的网站出现,并且也会有千万计的人们去访问这些网站。而网民在访问网站的过程中,其实就是主机和另一台主机进行一个远程之间的通信,以及资源交换的过程。我们的主机怎么找到对方的主</div> </li> <li><a href="/article/1949233206310006784.htm" title="计算机网络谢希仁第六章课后题【背诵版本】" target="_blank">计算机网络谢希仁第六章课后题【背诵版本】</a> <span class="text-muted">sponge'</span> <a class="tag" taget="_blank" href="/search/%E9%87%8D%E5%BA%86%E9%82%AE%E7%94%B5%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C803/1.htm">重庆邮电计算机网络803</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>互联网的域名结构是怎样的?它与目前的电话网的号码结构有何异同之处?互联网的域名结构采用层次树状结构(采用这种命名方法,任何一个连接在互联网上的主机或路由器都有一个唯一的层次结构的名字,即域名)名字为什么分布授权:将名字空间分成若干子空间,每个机构负责管理一个子空间。子空间可进一步划分授权给下一级机构管理。通过层次化的名字结构,减轻了单个机构的管理工作量,提高了效率。相同点:(1)互联网的域名结构与</div> </li> <li><a href="/article/1949213278123126784.htm" title="3步掌握JMeter与Jenkins自动化性能测试!" target="_blank">3步掌握JMeter与Jenkins自动化性能测试!</a> <span class="text-muted">爱吃 香菜</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/1.htm">软件测试</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/1.htm">自动化测试</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E7%BB%8F%E9%AA%8C/1.htm">职场经验</a><a class="tag" taget="_blank" href="/search/jmeter/1.htm">jmeter</a><a class="tag" taget="_blank" href="/search/jenkins/1.htm">jenkins</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/1.htm">自动化测试</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E7%BB%8F%E9%AA%8C/1.htm">职场经验</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/1.htm">软件测试</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a> <div>面试求职:「面试试题小程序」,内容涵盖测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)职场经验干货:软件测试工程师简历上如何编写个人信息(一周8个面试)软件测试工程师简历上如何编写专业技能(一周8个面试)软件测</div> </li> <li><a href="/article/1949097645356150784.htm" title="Java面试题(中等)" target="_blank">Java面试题(中等)</a> <span class="text-muted">躲在云朵里`</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>1.计算机网络传输层有哪些协议?分别适用于什么场景?TCP协议(传输控制协议):面向连接、可靠传输,流量控制、拥塞控制。适用于要求数据完整性的场景,如文件传输、网页浏览、电子邮件等。UDP协议(用户数据报协议):无连接,不可靠但高效,无流量控制、无拥塞控制、开销小、延迟低。适用于实时性要求高的场景,如视频会议、在线游戏、DNS查询等。2.多线程的使用场景有哪些?线程开启多少个合适?判断标准有哪些?</div> </li> <li><a href="/article/1949045691410083840.htm" title="计算机网络简答题(大雪圣期末参考资料)" target="_blank">计算机网络简答题(大雪圣期末参考资料)</a> <span class="text-muted">yc_hu</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/408/1.htm">408</a><a class="tag" taget="_blank" href="/search/%E7%AE%80%E7%AD%94%E9%A2%98/1.htm">简答题</a> <div>1、网络性能指标/计算机网络有哪些常用的性能指标?答:速率,带宽,吞吐量,时延(发送时延、传播时延、处理时延、排队时延),时延带宽积,往返时间RTT和信道(或网络)利用率。2、网络协议的三个要素是什么?各有什么含义?答:网络协议:为进行网络中的数据交换而建立的规则、标准或约定。由以下三个要素组成:(1)语法:即数据与控制信息的结构或格式。(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种</div> </li> <li><a href="/article/1948999425577775104.htm" title="前端基础知识HTTP系列 - 04(OSI七层模型)" target="_blank">前端基础知识HTTP系列 - 04(OSI七层模型)</a> <span class="text-muted">前端小白从0开始</span> <a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>一、是什么OSI(OpenSystemInterconnect)模型全称为开放式通信系统互连参考模型,是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架OSI将计算机网络体系结构划分为七层,每一层实现各自的功能和协议,并完成与相邻层的接口通信。即每一层扮演固定的角色,互不打扰二、划分OSI主要划分了七层,如下所示:应用层应用层位于OSI参考模型的第七层,其作用是通</div> </li> <li><a href="/article/1948890507727925248.htm" title="编程与数学 03-002 计算机网络 05_以太网技术" target="_blank">编程与数学 03-002 计算机网络 05_以太网技术</a> <span class="text-muted">明月看潮生</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E7%AC%AC03%E9%98%B6%E6%AE%B5/1.htm">第03阶段</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/1.htm">计算机组成原理</a> <div>编程与数学03-002计算机网络05_以太网技术一、以太网的基本原理(一)CSMA/CD协议的工作原理(二)以太网的帧结构二、以太网的拓扑结构与设备(一)传统以太网的拓扑结构(二)交换机的工作原理与功能三、高速以太网技术(一)千兆以太网、万兆以太网的特点(二)以太网的演进方向四、总结摘要:本文是计算机网络课程中以太网技术的学习笔记。以太网采用CSMA/CD协议管理共享介质访问,通过帧结构实现数据可</div> </li> <li><a href="/article/1948771619400904704.htm" title="2025.7.5暑假hcia第一次作业" target="_blank">2025.7.5暑假hcia第一次作业</a> <span class="text-muted">wc_xue_fei_le</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>2025.7.5暑假hcia第一章一、计算机网络概述计算机网络规模延长传输距离同轴电缆:优点:抗电磁干扰强、不易弯折缺点:网速慢155Mb/s、成本高双绞线:8根线,两两相绞T568A:白绿、绿白橙、蓝白蓝、橙白棕、棕T568B:白橙、橙白绿、蓝白蓝、绿白棕、棕RJ45、RJ11双绞线的分类:屏蔽双绞线:非屏蔽双绞线:优点:造价成本低缺点:传输距离只有100米光纤:单模光纤:纤芯较细,可传递单一光</div> </li> <li><a href="/article/1948620350443024384.htm" title="计算机网络采用分层有哪些好处,网络协议分层的优点" target="_blank">计算机网络采用分层有哪些好处,网络协议分层的优点</a> <span class="text-muted">温卡龙</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E9%87%87%E7%94%A8%E5%88%86%E5%B1%82%E6%9C%89%E5%93%AA%E4%BA%9B%E5%A5%BD%E5%A4%84/1.htm">计算机网络采用分层有哪些好处</a> <div>分层网络协议是计算机术语。网络协议分层的优点你知道吗?计算机网络安全有哪些基本注意事项,一起和佰佰安全网看看吧。网络安全是一个关系国家安全和主权、社会的稳定、民族文化的继承和发扬的重要问题。其重要性,正随着全球信息化步伐的加快而变到越来越重要。“家门就是国门”,安全问题刻不容缓。网络安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。</div> </li> <li><a href="/article/1948618460124737536.htm" title="编程与数学 03-002 计算机网络 03_物理层基础" target="_blank">编程与数学 03-002 计算机网络 03_物理层基础</a> <span class="text-muted">明月看潮生</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E7%AC%AC03%E9%98%B6%E6%AE%B5/1.htm">第03阶段</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a> <div>编程与数学03-002计算机网络03_物理层基础一、物理层的作用与任务(一)传输媒体的类型(二)信号的传输方式二、数据编码技术(一)数字数据的数字信号编码(二)模拟数据的数字信号编码三、物理层的设备(一)中继器(Repeater)(二)集线器(Hub)四、总结摘要:本文为计算机网络课程中关于物理层基础的学习笔记。物理层负责在物理媒体上传输原始比特流,涉及选择合适的传输媒体如双绞线、同轴电缆和光纤,</div> </li> <li><a href="/article/1948608876538556416.htm" title="编程与数学 03-002 计算机网络 02_网络体系结构与协议" target="_blank">编程与数学 03-002 计算机网络 02_网络体系结构与协议</a> <span class="text-muted">明月看潮生</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E7%AC%AC03%E9%98%B6%E6%AE%B5/1.htm">第03阶段</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a> <div>编程与数学03-002计算机网络02_网络体系结构与协议一、网络体系结构的基本概念(一)分层体系结构的优点(二)协议、接口与服务的概念二、OSI参考模型(一)七层模型的层次划分及功能(二)与各层相关的协议与设备三、TCP/IP协议体系(一)四层模型的层次划分及功能(二)与OSI模型的对比四、总结摘要:本文是计算机网络课程中关于计算机网络体系结构与协议的学习笔记。文章首先介绍了网络体系结构的基本概念</div> </li> <li><a href="/article/1948605093716750336.htm" title="计算机网络-深入浅出 TCP三次握手和四次挥手" target="_blank">计算机网络-深入浅出 TCP三次握手和四次挥手</a> <span class="text-muted">世纪摆渡人</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/TCP%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%92%8C%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B/1.htm">TCP三次握手和四次挥手</a> <div>TCP三次握手和四次挥手详解(Java视角)TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。在建立和终止TCP连接时,分别需要进行三次握手和四次挥手过程。三次握手(Three-wayHandshake)过程详解客户端服务器|||----SYN(seq=x)---->|1.客户端发送连接请求||3.客户端确认连接建立|(连接已建立)|各步骤说明第一次握手:客户端发送SYN包(同步序列编号)</div> </li> <li><a href="/article/1948533526714445824.htm" title="计算机网络学习笔记(二)" target="_blank">计算机网络学习笔记(二)</a> <span class="text-muted">oceanLong</span> <div>HTTP的请求流程客户端在特定端口发起一个到服务器指定域名的TCP连接,该端口是HTTP默认端口。客户端经它向服务端发送一个HTTP请求报文,报文包含了路径HTTP服务器接收请求报文,从存储器中检索出对象,在HTTP响应报文中封装对象,并发送给客户端服务端通知TCP断开连接,客户端完整收到报文后,TCP实际中断cookiecookie的本质是服务端在接收客户端请求时,会为用户生成一个id。将id随</div> </li> <li><a href="/article/1948014720015462400.htm" title="计算机网络" target="_blank">计算机网络</a> <span class="text-muted">哪里不会点哪里.</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>目录一、OSI与TCP/IP各层的结构与功能二、三次握手和四次挥手1.三次握手2.为什么要三次握手3.第二次握手回传了ACK,为什么还要回传SYN4.四次挥手三、TCP协议如何保证可靠传输四、状态码五、Cookie和Session六、HTTP1.0和HTTP1.1七、URI和URL八、HTTP和HTTPS一、OSI与TCP/IP各层的结构与功能应用层应用层(application-layer)的任</div> </li> <li><a href="/article/1947986116195971072.htm" title="计算机网络学习----Https协议" target="_blank">计算机网络学习----Https协议</a> <span class="text-muted">典孝赢麻崩乐急</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a> <div>在互联网通信中,数据安全始终是核心需求。当用户在浏览器中输入https://访问网站时,背后隐藏着一套复杂的安全机制——HTTPS(HypertextTransferProtocolSecure)。它通过TLS/SSL协议对HTTP通信加密,而支撑这一加密体系的核心正是证书体系。本文将详细解析HTTPS的证书体系、加密通信流程、核心作用、优缺点,并结合代码示例说明其实现逻辑。HTTPS是什么?HT</div> </li> <li><a href="/article/1947898504835821568.htm" title="socket网络通信TCP与UDP原理及代码实现(c++、python)" target="_blank">socket网络通信TCP与UDP原理及代码实现(c++、python)</a> <span class="text-muted"></span> <div>目录Socket原理通信协议原理TCPUDP代码实现TCPC++pythonUDPC++pythonSocket原理Socket(套接字)是计算机网络中用于实现进程间通信的一种机制,特别是在不同主机之间通过网络进行数据传输时。它是网络编程的核心概念之一,为应用程序提供了统一的接口,使得开发者可以通过网络发送和接收数据。可以将Socket类比为电话系统中的“电话机”。两台设备通过Socket建立连接</div> </li> <li><a href="/article/1947883382683791360.htm" title="IPv6的创新与演进:从IP地址耗尽到下一代网络协议" target="_blank">IPv6的创新与演进:从IP地址耗尽到下一代网络协议</a> <span class="text-muted"></span> <div>IPv6的创新与演进:从IP地址耗尽到下一代网络协议背景简介随着计算机网络技术的飞速发展,互联网连接的设备数量呈指数级增长。在1984年,主机数量首次突破1000台大关,此时使用的IPv4协议凭借32位地址空间,还能应对网络的需求。然而,随着互联网的普及,越来越多的设备接入网络,IP地址耗尽成为了一个迫在眉睫的问题。为了解决这一危机,业界开始寻求新的解决方案,最终促成了IPv6(下一代互联网协议)</div> </li> <li><a href="/article/1947631397472628736.htm" title="计算机网络中:传输层和网络层之间是如何配合的" target="_blank">计算机网络中:传输层和网络层之间是如何配合的</a> <span class="text-muted">woainizhongguo.</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>可以把网络层和传输层想成一个“快递系统”:网络层(IP层)=邮政系统:只负责把“包裹”(IP数据报)从A地搬到B地,不保证顺序、不保证不丢、不保证不重复。传输层(TCP/UDP层)=快递公司:在邮政系统之上提供“增值服务”——对TCP来说,就是可靠、按序、不重复、流量受控的端到端运输;对UDP来说,就是“无连接、尽力而为”的快送。下面用一次典型的TCP通信说明两者如何“接力配合”。1.建立连接(三</div> </li> <li><a href="/article/1947517195252723712.htm" title="大学专业科普 | 计算智能、信息学与大数据" target="_blank">大学专业科普 | 计算智能、信息学与大数据</a> <span class="text-muted">鸭鸭鸭进京赶烤</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>一、专业背景随着信息技术的飞速发展,数据的产生速度呈爆炸式增长,传统数据处理技术已经无法满足如此庞大的数据量和复杂的数据类型,大数据专业应运而生,旨在培养能够应对大数据挑战的专业人才。二、主要课程内容数学基础课程高等数学、概率论与数理统计、线性代数是大数据分析的核心数学基础,为数据处理、算法优化和模型构建提供必要的理论支持。计算机基础课程数据结构与算法、计算机网络、操作系统是大数据技术的重要支撑,</div> </li> <li><a href="/article/71.htm" title="Linux的Initrd机制" target="_blank">Linux的Initrd机制</a> <span class="text-muted">被触发</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>Linux 的 initrd 技术是一个非常普遍使用的机制,linux2.6 内核的 initrd 的文件格式由原来的文件系统镜像文件转变成了 cpio 格式,变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然的不同。本文首先介绍了什么是 initrd 技术,然后分别介绍了 Linux2.4 内核和 2.6 内核的 initrd 的处理流程。最后通过对 Lin</div> </li> <li><a href="/article/198.htm" title="maven本地仓库路径修改" target="_blank">maven本地仓库路径修改</a> <span class="text-muted">bitcarter</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>默认maven本地仓库路径:C:\Users\Administrator\.m2 修改maven本地仓库路径方法:     1.打开E:\maven\apache-maven-2.2.1\conf\settings.xml     2.找到        </div> </li> <li><a href="/article/325.htm" title="XSD和XML中的命名空间" target="_blank">XSD和XML中的命名空间</a> <span class="text-muted">darrenzhu</span> <a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/xsd/1.htm">xsd</a><a class="tag" taget="_blank" href="/search/schema/1.htm">schema</a><a class="tag" taget="_blank" href="/search/namespace/1.htm">namespace</a><a class="tag" taget="_blank" href="/search/%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4/1.htm">命名空间</a> <div>http://www.360doc.com/content/12/0418/10/9437165_204585479.shtml http://blog.csdn.net/wanghuan203/article/details/9203621 http://blog.csdn.net/wanghuan203/article/details/9204337 http://www.cn</div> </li> <li><a href="/article/452.htm" title="Java 求素数运算" target="_blank">Java 求素数运算</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%B4%A0%E6%95%B0/1.htm">素数</a> <div>网络上对求素数之解数不胜数,我在此总结归纳一下,同时对一些编码,加以改进,效率有成倍热提高。 第一种:   原理: 6N(+-)1法         任何一个自然数,总可以表示成为如下的形式之一: 6N,6N+1,6N+2,6N+3,6N+4,6N+5 (N=0,1,2,…)   </div> </li> <li><a href="/article/579.htm" title="java 单例模式" target="_blank">java 单例模式</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>想必单例模式大家都不会陌生,有如下两种方式来实现单例模式:   class Singleton { private static Singleton instance=new Singleton(); private Singleton(){} static Singleton getInstance() { return instance; }</div> </li> <li><a href="/article/706.htm" title="Linux下Mysql源码安装" target="_blank">Linux下Mysql源码安装</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>1.假设已经有mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz (1)创建mysql的安装目录及数据库存放目录       解压缩下载的源码包,目录结构,特殊指定的目录除外:           </div> </li> <li><a href="/article/833.htm" title="32位和64位操作系统" target="_blank">32位和64位操作系统</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/32%E4%BD%8D%E5%92%8C64%E4%BD%8D%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">32位和64位操作系统</a> <div>32位和64位操作系统是指:CPU一次处理数据的能力是32位还是64位。现在市场上的CPU一般都是64位的,但是这些CPU并不是真正意义上的64 位CPU,里面依然保留了大部分32位的技术,只是进行了部分64位的改进。32位和64位的区别还涉及了内存的寻址方面,32位系统的最大寻址空间是2 的32次方= 4294967296(bit)= 4(GB)左右,而64位系统的最大寻址空间的寻址空间则达到了</div> </li> <li><a href="/article/960.htm" title="我的spring学习笔记10-轻量级_Spring框架" target="_blank">我的spring学习笔记10-轻量级_Spring框架</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/Spring+3/1.htm">Spring 3</a> <div>一、问题提问:     → 请简单介绍一下什么是轻量级?     轻量级(Leightweight)是相对于一些重量级的容器来说的,比如Spring的核心是一个轻量级的容器,Spring的核心包在文件容量上只有不到1M大小,使用Spring核心包所需要的资源也是很少的,您甚至可以在小型设备中使用Spring。  </div> </li> <li><a href="/article/1087.htm" title="mongodb 环境搭建及简单CURD" target="_blank">mongodb 环境搭建及简单CURD</a> <span class="text-muted">antlove</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/Install/1.htm">Install</a><a class="tag" taget="_blank" href="/search/curd/1.htm">curd</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a><a class="tag" taget="_blank" href="/search/mongo/1.htm">mongo</a> <div>一 搭建mongodb环境 1. 在mongo官网下载mongodb 2. 在本地创建目录 "D:\Program Files\mongodb-win32-i386-2.6.4\data\db" 3. 运行mongodb服务 [mongod.exe --dbpath "D:\Program Files\mongodb-win32-i386-2.6.4\data\</div> </li> <li><a href="/article/1214.htm" title="数据字典和动态视图" target="_blank">数据字典和动态视图</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%AD%97%E5%85%B8/1.htm">数据字典</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%86%E5%9B%BE/1.htm">动态视图</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E5%92%8C%E5%AF%B9%E8%B1%A1%E6%9D%83%E9%99%90/1.htm">系统和对象权限</a> <div>数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表。随着数据库的启动而启动,数据库关闭时数据字典也关闭   数据字典中包含   数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等) 数据库为一</div> </li> <li><a href="/article/1341.htm" title="多线程编程一般规则" target="_blank">多线程编程一般规则</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a> <div>       如果两个工两个以上的线程都修改一个对象,那么把执行修改的方法定义为被同步的,如果对象更新影响到只读方法,那么只读方法也要定义成同步的。        不要滥用同步。如果在一个对象内的不同的方法访问的不是同一个数据,就不要将方法设置为synchronized的。 </div> </li> <li><a href="/article/1468.htm" title="将文件或目录拷贝到另一个Linux系统的命令scp" target="_blank">将文件或目录拷贝到另一个Linux系统的命令scp</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a><a class="tag" taget="_blank" href="/search/scp/1.htm">scp</a> <div>一.功能说明        scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下:        scp 远程用户名@IP地址:文件的绝对路径</div> </li> <li><a href="/article/1595.htm" title="【持久化框架MyBatis3五】MyBatis3一对多关联查询" target="_blank">【持久化框架MyBatis3五】MyBatis3一对多关联查询</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Mybatis3/1.htm">Mybatis3</a> <div>以教员和课程为例介绍一对多关联关系,在这里认为一个教员可以叫多门课程,而一门课程只有1个教员教,这种关系在实际中不太常见,通过教员和课程是多对多的关系。   示例数据:   地址表:   CREATE TABLE ADDRESSES ( ADDR_ID INT(11) NOT NULL AUTO_INCREMENT, STREET VAR</div> </li> <li><a href="/article/1722.htm" title="cookie状态判断引发的查找问题" target="_blank">cookie状态判断引发的查找问题</a> <span class="text-muted">bitcarter</span> <a class="tag" taget="_blank" href="/search/form/1.htm">form</a><a class="tag" taget="_blank" href="/search/cgi/1.htm">cgi</a> <div>先说一下我们的业务背景: 1.前台将图片和文本通过form表单提交到后台,图片我们都做了base64的编码,并且前台图片进行了压缩 2.form中action是一个cgi服务 3.后台cgi服务同时供PC,H5,APP 4.后台cgi中调用公共的cookie状态判断方法(公共的,大家都用,几年了没有问题) 问题:(折腾两天。。。。) 1.PC端cgi服务正常调用,cookie判断没</div> </li> <li><a href="/article/1849.htm" title="通过Nginx,Tomcat访问日志(access log)记录请求耗时" target="_blank">通过Nginx,Tomcat访问日志(access log)记录请求耗时</a> <span class="text-muted">ronin47</span> <div>一、Nginx通过$upstream_response_time $request_time统计请求和后台服务响应时间 nginx.conf使用配置方式: log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_r</div> </li> <li><a href="/article/1976.htm" title="java-67- n个骰子的点数。 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。" target="_blank">java-67- n个骰子的点数。 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class ProbabilityOfDice { /** * Q67 n个骰子的点数 * 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。 * 在以下求解过程中,我们把骰子看作是有序的。 * 例如当n=2时,我们认为(1,2)和(2,1)是两种不同的情况 */ private stati</div> </li> <li><a href="/article/2103.htm" title="看别人的博客,觉得心情很好" target="_blank">看别人的博客,觉得心情很好</a> <span class="text-muted">Cb123456</span> <a class="tag" taget="_blank" href="/search/%E5%8D%9A%E5%AE%A2/1.htm">博客</a><a class="tag" taget="_blank" href="/search/%E5%BF%83%E6%83%85/1.htm">心情</a> <div>   以为写博客,就是总结,就和日记一样吧,同时也在督促自己。今天看了好长时间博客:    职业规划:    http://www.iteye.com/blogs/subjects/zhiyeguihua      android学习:    1.http://byandby.i</div> </li> <li><a href="/article/2230.htm" title="[JWFD开源工作流]尝试用原生代码引擎实现循环反馈拓扑分析" target="_blank">[JWFD开源工作流]尝试用原生代码引擎实现循环反馈拓扑分析</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C%E6%B5%81/1.htm">工作流</a> <div>     我们已经不满足于仅仅跳跃一次,通过对引擎的升级,今天我测试了一下循环反馈模式,大概跑了200圈,引擎报一个溢出错误      在一个流程图的结束节点中嵌入一段方程,每次引擎运行到这个节点的时候,通过实时编译器GM模块,计算这个方程,计算结果与预设值进行比较,符合条件则跳跃到开始节点,继续新一轮拓扑分析,直到遇到</div> </li> <li><a href="/article/2357.htm" title="JS常用的事件及方法" target="_blank">JS常用的事件及方法</a> <span class="text-muted">cwqcwqmax9</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a> <div>事件 描述 onactivate 当对象设置为活动元素时触发。 onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发。 onbeforeactivate 对象要被设置为当前元素前立即触发。 onbeforecut 当选中区从文档中删除之前在源对象触发。 onbeforedeactivate 在 activeElement 从当前对象变为父文档其它对象之前立即</div> </li> <li><a href="/article/2484.htm" title="正则表达式验证日期格式" target="_blank">正则表达式验证日期格式</a> <span class="text-muted">dashuaifu</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/IT%E5%85%B6%E5%AE%83/1.htm">IT其它</a><a class="tag" taget="_blank" href="/search/java%E5%85%B6%E5%AE%83/1.htm">java其它</a> <div> 正则表达式验证日期格式 function isDate(d){ var v = d.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/i); if(!v) { this.focus(); return false; } } <input value="2000-8-8" onblu</div> </li> <li><a href="/article/2611.htm" title="Yii CModel.rules() 方法 、validate预定义完整列表、以及说说验证" target="_blank">Yii CModel.rules() 方法 、validate预定义完整列表、以及说说验证</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a> <div>public array rules () {return} array 要调用 validate() 时应用的有效性规则。 返回属性的有效性规则。声明验证规则,应重写此方法。 每个规则是数组具有以下结构:array('attribute list', 'validator name', 'on'=>'scenario name', ...validation </div> </li> <li><a href="/article/2738.htm" title="UITextAttributeTextColor = deprecated in iOS 7.0" target="_blank">UITextAttributeTextColor = deprecated in iOS 7.0</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a> <div>In this lesson we used the key "UITextAttributeTextColor" to change the color of the UINavigationBar appearance to white. This prompts a warning "first deprecated in iOS 7.0." Ins</div> </li> <li><a href="/article/2865.htm" title="判断一个数是质数的几种方法" target="_blank">判断一个数是质数的几种方法</a> <span class="text-muted">EmmaZhao</span> <a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>质数也叫素数,是只能被1和它本身整除的正整数,最小的质数是2,目前发现的最大的质数是p=2^57885161-1【注1】。 判断一个数是质数的最简单的方法如下: def isPrime1(n): for i in range(2, n): if n % i == 0: return False return True 但是在上面的方法中有一些冗余的计算,所以</div> </li> <li><a href="/article/2992.htm" title="SpringSecurity工作原理小解读" target="_blank">SpringSecurity工作原理小解读</a> <span class="text-muted">坏我一锅粥</span> <a class="tag" taget="_blank" href="/search/SpringSecurity/1.htm">SpringSecurity</a> <div>   SecurityContextPersistenceFilter   ConcurrentSessionFilter   WebAsyncManagerIntegrationFilter   HeaderWriterFilter   CsrfFilter   LogoutFilter   Use</div> </li> <li><a href="/article/3119.htm" title="JS实现自适应宽度的Tag切换" target="_blank">JS实现自适应宽度的Tag切换</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>效果体验:http://hovertree.com/texiao/js/3.htm   该效果使用纯JavaScript代码,实现TAB页切换效果,TAB标签根据内容自适应宽度,点击TAB标签切换内容页。 HTML文件代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"</div> </li> <li><a href="/article/3246.htm" title="Hbase Rest API : 数据查询" target="_blank">Hbase Rest API : 数据查询</a> <span class="text-muted">kane_xie</span> <a class="tag" taget="_blank" href="/search/REST/1.htm">REST</a><a class="tag" taget="_blank" href="/search/hbase/1.htm">hbase</a> <div>hbase(hadoop)是用java编写的,有些语言(例如python)能够对它提供良好的支持,但也有很多语言使用起来并不是那么方便,比如c#只能通过thrift访问。Rest就能很好的解决这个问题。Hbase的org.apache.hadoop.hbase.rest包提供了rest接口,它内嵌了jetty作为servlet容器。   启动命令:./bin/hbase rest s</div> </li> <li><a href="/article/3373.htm" title="JQuery实现鼠标拖动元素移动位置(源码+注释)" target="_blank">JQuery实现鼠标拖动元素移动位置(源码+注释)</a> <span class="text-muted">明子健</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81/1.htm">源码</a><a class="tag" taget="_blank" href="/search/%E6%8B%96%E5%8A%A8/1.htm">拖动</a><a class="tag" taget="_blank" href="/search/%E9%BC%A0%E6%A0%87/1.htm">鼠标</a> <div>欢迎讨论指正!   print.html代码: <!DOCTYPE html> <html> <head> <meta http-equiv=Content-Type content="text/html;charset=utf-8"> <title>发票打印</title> &l</div> </li> <li><a href="/article/3500.htm" title="Postgresql 连表更新字段语法 update" target="_blank">Postgresql 连表更新字段语法 update</a> <span class="text-muted">qifeifei</span> <a class="tag" taget="_blank" href="/search/PostgreSQL/1.htm">PostgreSQL</a> <div>下面这段sql本来目的是想更新条件下的数据,可是这段sql却更新了整个表的数据。sql如下: UPDATE tops_visa.visa_order SET op_audit_abort_pass_date = now() FROM tops_visa.visa_order as t1 INNER JOIN tops_visa.visa_visitor as t2 ON t1. </div> </li> <li><a href="/article/3627.htm" title="将redis,memcache结合使用的方案?" target="_blank">将redis,memcache结合使用的方案?</a> <span class="text-muted">tcrct</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a> <div>公司架构上使用了阿里云的服务,由于阿里的kvstore收费相当高,打算自建,自建后就需要自己维护,所以就有了一个想法,针对kvstore(redis)及ocs(memcache)的特点,想自己开发一个cache层,将需要用到list,set,map等redis方法的继续使用redis来完成,将整条记录放在memcache下,即findbyid,save等时就memcache,其它就对应使用redi</div> </li> <li><a href="/article/3754.htm" title="开发中遇到的诡异的bug" target="_blank">开发中遇到的诡异的bug</a> <span class="text-muted">wudixiaotie</span> <a class="tag" taget="_blank" href="/search/bug/1.htm">bug</a> <div>今天我们服务器组遇到个问题: 我们的服务是从Kafka里面取出数据,然后把offset存储到ssdb中,每个topic和partition都对应ssdb中不同的key,服务启动之后,每次kafka数据更新我们这边收到消息,然后存储之后就发现ssdb的值偶尔是-2,这就奇怪了,最开始我们是在代码中打印存储的日志,发现没什么问题,后来去查看ssdb的日志,才发现里面每次set的时候都会对同一个key</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>