HTTP协议复习

HTTP请求/响应的步骤:

  1. 客户端连接到WEB服务器:浏览器与web服务器的HTTP端口建立一个TCP套接字连接,例如:http://www.baidu.com
  2. 发送HTTP请求:通过TCP套接字,客户端向WEB服务器发送一个文本的请求报文,请求报文=请求行+报文头+空行+请求数据;
  3. 服务器接受请求并返回HTTP响应:WEB服务器解析请求,定位请求资源。服务器将资源副本写到TCP套接字,由客户端读取,响应=状态行+响应头部+空行+响应数据;
  4. 释放TCP连接:若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection模式为keepalive,则该链接会保持一段时间,在该时间内可以继续接受请求;
  5. 浏览器解析HTML内容:客户端浏览器首先解析状态行查看表明请求是否成功的状态代码,然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。浏览器读取数据相应数据HTML根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;

2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;

3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;

4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;

5、释放TCP连接;

6、浏览器将该html文本解析并显示内容;

 

 

POST和GET的区别:

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上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码,而POST相对安全

 

猜你喜欢

转载自www.cnblogs.com/panweiwei/p/11909031.html