随笔 - 31  文章 - 0  评论 - 2  阅读 - 21312 

HTTP:

简介:

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

它是一个明文传输协议。何为明文?就是在整个传输过程中,不管是客户端的请求还是服务器的响应,都是明文的,这样就表示其他人可以窃取或篡改。
 
在层面上,HTTP是面向事务的应用层协议。什么是事务?所谓事务就是,一系列的信息交换,一系列信息交换是一个不可分割的整体,就是说要么全部交换完成,要么一次交换信息都不进行。
 
每个万维网的网点都有一个服务器进程,它不断的监听TCP的80端口,以便发现是否有浏览器向服务器发出连接建立请求。一旦监听到连接建立并建立TCP连接之后,客户端就会向服务器发出浏览某个页面的请求,服务器就会返回对于页面资源给客户端作为响应。最后,TCP连接释放断开了。这个过程中客户端的请求和服务器的响应之间的交互,必须按照规定的格式和遵循一定的规则,这些格式和规则就是超文本传输协议HTTP。
 

HTTP协议特点:
1.简单快速:客户端请求资源时,只需要请求路径和请求方法。
2.灵活:HTTP协议支持任意类型的数据对象,正在传输的类型使用Content-Type标记。
3.无连接的:无连接是,每次连接只能处理一个请求,服务器响应客户端,当服务器确认客户端拿到响应结果后,服务器就断开连接了,这样节省了传输效率。
4.无状态的:HTTP协议是无状态协议。无状态是指协议对事务处理没有记忆能力。缺少状态意味着,后续处理需要前面的信息时,它必须重传,这样就导致了请求中的数据量不断增大。再举一个具体的例子,就是客户端去访问一个服务器上的资源,当客户端再次第二次去访问同一个服务器上的同一个资源时,服务器给的响应与第一次相同。因为服务器不知道哪些客户端访问自己,也同时不知道同一个客户端访问过自己多少次。这样的设计简化了服务器的设计。
5.支持B/S、C/S端
6.B/S:Browser浏览器,负责显示内容;Server服务器,负责提供显示的内容。
7.C/S:Client客户端(通常是APP等),负责显示页面内容;Server服务器,负责提供显示的内容。
8.Browser和Client很像的,两者都是负责内容展示的。只是Client通常表示手机、平板、电脑等上的APP,Browser是指浏览器页面。

HTTP报文格式:
使用HTTP协议时,必定是一方是客户端,一方是服务端。客户端发送请求,服务端接收请求并响应客户端。其中请求有请求报文的格式,响应有响应报文的格式。

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

请求行:请求方法 请求地址 协议版本(注意 都是以一个空格隔开的)
请求头:请求行换行后的内容,有很多HTTP首部字段,比如,Connection、Content-Type等,采取键值对的方式,用冒号‘: ’隔开。(英文的冒号+空格)
请求体:请求头换两行后的内容。一般请求体用的不多,根据请求方式而变。

实例:

GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

服务器响应消息:

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

实例:

复制代码
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
复制代码

 

 

 

补充:

服务器的概念:
严格来说,服务器是一台计算机,只提供服务,不是用户用的。

通常我们所说的服务器,是服务容器。
服务容器:是一个程序(服务进程),它能监听端口,处理请求并返回请求内容。

我们通常说的搭建一个服务器,监听哪个端口,进而对请求做出响应,其实说的就是服务容器,只不过我们习惯叫它服务器。

什么是HTTPS:

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTP和HTTPS的区别:

  • HTTPS更加安全,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议的信息明文传输安全。
  • HTTPS 需要到 CA 申请证书,一般免费证书很少,需要交费。
  • 端口号不同:HTTP默认端口号80,HTTPS默认端口号443。
  • 状态不同:HTTP的连接很简单,是无状态的。而HTTPS协议是SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全;

HTTP请求方法:

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

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

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

  • GET:向指定的资源发出“显示”请求,使用 GET 方法应该只用在读取数据上,而不应该用于产生“副作用”的操作中。
  • HEAD:类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。
  • POST:指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求文本中。这个请求可能会创建新的资源或者修改现有资源,或两者皆有。
  • PUT:从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE:请求服务器删除 Request-URI 所标识的资源。
  • OPTIONS:使服务器传回该资源所支持的所有HTTP请求方法。用*来代替资源名称,向 Web 服务器发送 OPTIONS 请求,可以测试服务器功能是否正常运作。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。
  • PTATCH:是对 PUT 方法的补充,用来对已知资源进行局部更新 。
  • CONNECT:HTTP/1.1 中预留给能够将连接改为通道方式的代理服务器。通常用于 SSL 加密服务器的链接(经由非加密的 HTTP 代理服务器)。

GET和POST请求的区别:

  • GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连。 POST方法是把提交的数据放在HTTP包的Body中。
  • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  • GET请求会被浏览器主动cach,而POST不会,除非手动设置。
  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  • GET产生一个TCP数据包;POST产生两个TCP数据包。(但有些浏览器下post产生一个数据包)
  • GET请求时幂等的,POST请求是不幂等的。(HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用)。

http状态码:

1XX:提示信息—表示请求已接收,继续处理。

2XX:成功,操作被成功接收并处理。

3XX:重定向,需要进一步的操作以完成请求。

4XX:客户端错误,请求包含语法错误或无法完成请求。

5XX:服务器错误,服务器在处理请求的过程中发生了错误。

常用状态码:

  • 100:继续。客户端应继续其请求。
  • 101:切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议。
  • 200:请求成功。一般用于GET与POST请求。
  • 204:表示请求成功,但响应报文不含实体的主体部分。
  • 301:永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替。
  • 302:临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI。
  • 303:查看其它地址。与301类似。使用GET和POST请求查看。
  • 304:未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
  • 400:客户端请求的语法错误,服务器无法理解。
  • 403:服务器理解请求客户端的请求,但是拒绝执行此请求。
  • 404:服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面。
  • 405:客户端请求中的方法被禁止。
  • 500:服务器内部错误,无法完成请求。
  • 502:作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应。
  • 503:由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中。
  • 504:充当网关或代理的服务器,未及时从远端服务器获取请求。

TCP:

简介:

TCP(Transfer Control Protocol)传输控制协议,很明显就是五层网络结构或者ISO七层结构中的传输层协议。负责端到端的通信(这里的端指的是主机上的端口,也就是进程),是面向连接的,可靠的协议(后面会分别介绍这两个方面)。当然由于是面向连接的,因此一个TCP连接只能是一对一的连接。

为什么要有TCP?
大家都知道,传输层中有两个比较有名的协议,一个是TCP,另外一个是UDP。UDP(用户数据报协议)是无连接,尽最大能力交付的协议,不太可靠,当然存在即合理,UDP可以用在一些对信息的完整性要求不太高的场景,比如视频通话等。而如何去应对可靠性需求就需要TCP协议来完成了。

为什么说TCP是面向连接的?
由于TCP协议需要保证发送方知道自己发送出去的数据是否被接收方接收,那么意味着接收方必须要给接收方一个回应,即接收方也可以发送数据,这就是TCP是全双工的原因。知道了这个之后,发送端和接收端仍然需要确认的是:发送方和接收方的发送功能和接收功能都是正常的,只有这样发送端才可以得到接收端是否接收到信息的反馈。怎么来确认呢?下面就引出了,TCP的三次握手。

TCP三次握手:
在客户端和服务器通讯的过程中,客户端发出请求前必须建立TCP连接,也就是要通过三次握手来达到连接的目的。客户端:A,服务器:B。

用自己的话简明叙述三次握手的过程:

第一次:A向B发出建立连接的信息,表示A能发内容第二次:B接收到A信息,并响应给A结果,表示B能接收信息,B也能发送内容第三次:A接收到B给的响应结果,表示A能接收信息

复制代码
四次挥手:
客户端在完成所有请求后想要断开TCP连接,经历四步确保成功断开连接。
客户端:A,服务器:B。

第一次:A说我发完了,想断开连接,表示A想断开连接
第二次:B收到A断开连接的请求,并响应给A,表示B知道A想要断开连接,并告诉A自己知道了
第三次:A接收到B知道断开连接的消息,A告诉B我断开连接了
第四次:B接收到A已经断开连接了,B自己也断开连接了
复制代码

 
复制代码
原文链接:
https://www.jianshu.com/p/fe0ba6485726
https://blog.51cto.com/u_15297441/4004161
https://zhuanlan.zhihu.com/p/77373945
https://www.cnblogs.com/lavender0210/p/9341123.html
https://blog.csdn.net/baidu_31492511/article/details/107741706
关于TCP的理解可参考这位大佬的文章:https://blog.csdn.net/zhourui_1021/article/details/106752259
复制代码

 

IP:

什么是 IP?

IP 地址是一串由句点分隔的数字。IP 地址表示为一组四个数字,比如 192.158.1.38 就是一个例子。该组合中的每个数字都可以在 0 到 255 的范围内。因此,完整的 IP 寻址范围从 0.0.0.0 到 255.255.255.255。

 

IP 地址不是随机的。它们由互联网号码分配局 (IANA)(互联网名称与数字地址分配机构 (ICANN) 的一个部门)以数学方式生成和分配。ICANN 是一个非营利组织,于 1998 年在美国成立,旨在帮助维护互联网的安全性并使所有人都能使用互联网。每当有人在互联网上注册域名时,他们都要通过域名注册商注册,域名注册商向 ICANN 支付一小笔费用来注册域名。

 

IP地址定义?

IP 地址是一个唯一地址,用于标识互联网或本地网络上的设备。IP 代表“互联网协议”,它是控制通过互联网或本地网络发送的数据格式的一组规则。

本质上,IP 地址是允许在网络上的设备之间发送信息的标识符:它们包含位置信息,并使设备可进行通信。互联网需要一种区分不同计算机、路由器和网站的方法。IP 地址提供了一种实现此目标的方式,并且是互联网工作原理中的关键组成部分。

原文链接:https://segmentfault.com/a/1190000040775946
==================================================================================================================================
 
计算机相互之间的通信:
互联网的关键技术就是TCP/IP协议。两台计算机之间的通信是通过TCP/IP协议在因特网上进行的。实际上这个是两个协议:

TCP : Transmission Control Protocol传输控制协议    IP: Internet Protocol 网际协议

IP:计算机之间的通信

        IP协议是计算机用来相互识别的通信的一种机制,每台计算机都有一个IP用来在internet上标识这台计算机。  IP 负责在因特网上发送和接收数据包。通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP 负责将每个包路由至它的目的地。

        IP协议仅仅是允许计算机相互发消息,但它并不检查消息是否以发送的次序到达而且没有损坏(IP数据包,只检查关键的头数据)。为了提供消息检验功能,直接在IP协议上设计了传输控制协议TCP.

TCP : 应用程序之间的通信

      TCP确保数据包以正确的次序到达,并且尝试确认数据包的内容没有改变。TCP在IP地址之上引端口(port),它允许计算机通过网络提供各种服务。一些端口号为不同的服务保留,而且这些端口号是众所周知。

       服务或者守护进程:在提供服务的机器上,有程序监听特定端口上的通信流。例如大多数电子邮件通信流出现在端口25上,用于wwww的HTTP通信流出现在80端口上。

       当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信,占用两个计算机之间整个的通信线路。TCP 用于从应用程序到网络的数据传输控制。TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。

       TCP/IP 就是TCP 和 IP 两个协议在一起协同工作,有上下层次的关系。

       TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,IP 负责将包发送至接受者,传输过程要经IP路由器负责根据通信量、网络中的错误或者其他参数来进行正确地寻址,然后在它们到达的时候重新组合它们。

HTTP请求响应模型:

HTTP由请求和响应构成,是一个标准的客户端服务器模型(B/S)。HTTP协议永远都是客户端发起请求,服务器回送响应。见下图:

HTTP是一个无状态的协议。无状态是指客户机(Web浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息。HTTP遵循请求(Request)/应答(Response)模型。客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。

 =================================================================================================================================

一、网络的简单定义:

1、http:是www服务器传输超文本向本地浏览器的传输协议。(应用层)

2、IP:是计算机之间相互识别通信的机制。(网络层)

3、TCP:是应用层通信之间通信。(传输层)

IP是允许计算机相互传递消息的机制,在IP协议上加入TCP(传输控制协议)保证数据的正确性。

二、TCP 与 UDP区别:

1、TCP

优点:可靠、稳定,TCP传输数据之前会有TCP三次握手建立连接,而且在传递数据时会有确认、窗口、重传拥塞控制机制;传递数据后,会断开连接,来节约数据系统资源。

缺点:慢、效率低、占用资源、易被攻击。TCP建立连接之前要经过三次握手消耗时间,传递数据时,确认机制,重传机制,拥塞机制都需要消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

2、UDP

优点: 快,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的相关的机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击……

缺点: 不可靠,不稳定 因为UDP在数据传递时,如果网络质量不好,就会很容易丢包。

posted on   起风了~~~  阅读(289)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示