欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

TCP/IP笔记 四.应用层(3)——HTTP

程序员文章站 2022-03-14 08:33:12
TCP/IP笔记 四.应用层(3)——HTTP   1. URL URL(Uniform Resource Locator) 相当于一个文件名在网络范围...

TCP/IP笔记 四.应用层(3)——HTTP

 

1. URL

URL(Uniform Resource Locator) 相当于一个文件名在网络范围的扩展。

1.1 格式

schema://host[:port#]/path/.../[?query-string][#anchor]

scheme            指定低层使用的协议(例如:http, https, ftp)

host                   HTTP服务器的IP地址或者域名(存放资源的地方)

port#                 HTTP服务器的默认端口是80,这种情况下端口号可以省略。

path                   访问资源的路径

query-string       发送给http服务器的数据

anchor-             锚

 

2. HTTP

HTTP (HyperText Transfer Protocol),超文本传送协议 。HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。

 

TCP/IP笔记 四.应用层(3)——HTTP

 

2.1 工作过程

(1) 浏览器分析超链指向页面的 URL。

(2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。

(3) 域名系统 DNS 解析出清华大学服务器的 IP 地址。

(4) 浏览器与服务器建立 TCP 连接

(5) 浏览器发出取文件命令:

      GET /chn/yxsz/index.htm。

(6) 服务器 给出响应,把文件 index.htm 发给浏览器。

(7) TCP 连接释放。

(8) 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。

注:打开一个网页一般需要多次Request:

(1)首先浏览器获取到index.html页面,然后浏览器就会对index.html进行解析

(2)解析后发现其中还有很多信息,比如图片、css、js等其他引用信息,然后浏览器就会自动对这些信息发出Request请求

(3)当所有的数据都获取完毕后,浏览器就会把网页显示出来。(一般来说,当页面的大体框架获取完成后就会把页面显示出来)

 

TCP/IP笔记 四.应用层(3)——HTTP

 

2.2 特点

(1)面向事务的客户服务器协议。

(2)HTTP 1.0 协议是无状态的(stateless)。

同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.

(3)HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。

(4)万维网浏览器就是一个 HTTP 客户,而在万维网服务器等待 HTTP 请求的进程常称为 HTTP daemon,有的文献将它缩写为 HTTPD。

(5)HTTP daemon 在收到 HTTP 客户的请求后,把所需的文件返回给 HTTP 客户。   

 

2.3 HTTP消息格式

HTTP有2种消息:

Request(请求报文)——从客户向服务器发送请求报文。

Response(响应报文)——从服务器到客户的回答。

2.3.1 Request

先看Request 消息的结构,   Request 消息分为3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body. header和body之间有个空行, 结构如下图

 

TCP/IP笔记 四.应用层(3)——HTTP

 

第一行中的方法(Method)表示请求方法,比如"POST","GET",  URL表示请求的资源, Http/version-number 表示HTTP协议的版本号

当使用的是"GET" 方法的时候, body是为空的。

方法:

Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.

GET和POST的区别:

(1)GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.  POST方法是把提交的数据放在HTTP包的Body中.

(2)GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

(3)GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

(4)GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

2.3.2 Response

 

TCP/IP笔记 四.应用层(3)——HTTP

 

状态码:

1xx 表示通知信息的,如请求收到了或正在进行处理。

2xx 表示成功,如接受或知道了。

3xx 表示重定向,表示要完成请求还必须采取进一步的行动。

4xx 表示客户的差错,如请求中有错误的语法或不能完成。

5xx 表示服务器的差错,如服务器失效无法完成请求。