HTTP协议

基本概念

  • HTTP协议(超文本传输协议 HyperText Transfer Protocol):是用于从WWW服务器传输超文本到本地浏览器的传送协议。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。
  • HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务模型。HTTP是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的。
  • 默认HTTP的端口为80;HTTPS的端口号为443。
  • HTTP协议永远是客户端发起请求,服务器回送响应。
  • FTP:文本传输协议。

HTTP事务工作过程

  • 一个HTTP操作称为一个事务,工作过程分为如下四步:
  1. 首先客户端与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
  2. 建立连接后,客户端发送一个请求给服务器。请求方式的格式为:统一资源标识符(URI)、协议版本号、MIME信息(包括请求修饰符、客户端信息和可能的内容)
  3. 服务器接到请求后,给予相应的响应信息。
  4. 客户端接收到服务器所返回的信息,通过浏览器显示在用户的显示屏上,然后客户端与服务器断开连接。

HTTP的优点

  • 简单快捷。HTTP协议简单、通信速度很快
  • 灵活。HTTP协议允许传输任意类型的数据
  • 短连接。HTTP协议限制每次连接只处理一个请求,服务器对客户端的请求作出响应后,马上断开连接。这种传输方式可以节省传输时间。

TCP连接——三次握手

  • 建立一个TCP连接需要经过“三次握手”。TCP三次握手具体过程如下:
  1. 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态。等待服务器确认。
  2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
  3. 第三次握手:客户端接收到服务器的SYN_ACK包,向服务器发送确认包ACK(ack=k+1),包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
  • **握手过程中,传送的包里不包含数据,三次握手完毕后,客户端与服务器正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”。**
  • **SYN(synchronous)是TCP建立连接时使用的握手信号;ACK(acknowledge)即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符,表示发来的数据已确认接收无误。**
  • 如果两次握手会怎么样呢?

理解题意:就是客户端为什么还要发送一次确认呢?

答:为了防止已经失效的连接请求报文又突然传送到了服务器,而产生错误。假设一种异常,客户端发出的请求由于网络阻塞没有及时到达服务器,后又重传请求,之后服务器相应了,切建立了连接,之后连接又释放了。此时假设客户端发出的第一个请求到达服务器,服务器误以为是客户端再次请求连接,服务器建立连接,如果采用两次握手,此时连接建立,而客户端又不发送数据,浪费了服务器的资源。

四次握手

  • 与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。
  1. 第一次握手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发送数据了。
  2. 第二次握手:被动关闭方接收到FIN包后,发送一个ACK给对方,确认序号为收到序列+1。
  3. 第三次握手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
  4. 第四次握手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序列为收到序列号+1。至此,完成四次握手。

HTTP请求方式

  • 常用的请求方式:GET/POST
  1. GET方式:是以实体的方式得到由请求URI所指定资源的信息。
  2. POST方式:用来向目的服务器发出请求,要求它接受被附在请求后的实体。

cookie、session异同

  • 相同点:它们都是为了用来保存状态信息,都是保存客户端状态的机制,都是为了解决HTTP无状态的问题。
  • 不同点:
  1. cookie将状态保存在客户端;session将状态保存在服务器;
  2. cookies是服务器在本地机器上存储的小段文本,并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文本,它会自动地将同一服务器的任何请求缚上这些cookies。session并没有字HTTP的协议中定义;
  3. session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID里区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器的。当用户禁用cookie时,这个值也可以设置为由get来返回给服务器。
  4. 对于安全性。在服务的的session机制更安全些。因为它不会任意读取客户存储的信息。

HTTPS

  • HTTPS:是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。

TCP/IP、HTTP的区别

  1. TCP/IP协议(Transmission Control Protocol/Internet Protocol):是传输层协议。主要解决数据如何在网络中传输。
  2. HTTP:是请求响应模式,是应用层协议。主要解决如何包装数据。
  3. Web使用HTTP协议作为应用层协议,以封装http文本信息,然后使用TCP/IP做传输层协议将它发送到网络上。HTTP是利用TCP在两台电脑(通常是web服务器和客户端)之间传输信息的协议。
  4. HTTP协议是建立在TCP协议基础之上的。当浏览器需要从服务器获取网页数据时,会发出一次HTTP请求。HTTP会通过TCP建立一个到服务器的连接通道,当本次请求需要的数据完毕后,HTTP会立即将TCP连接断开。
  5. HTTP连接最显著的特点是:客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程为“一次连接”。
  6. TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,是简单的传输。HTTP是用来收发数据的。
  7. TCP/IP协议是一个协议集合。TCP/IP协议按照层次分为以下四层:应用层、传输层、网络层、数据链路层。分层的目的是:一个层只负责一个层次的问题,只要维护好这个层次就可以了。

状态码

  • 1**类状态码:Information状态码,表示信息正在处理。
  • 2**类状态码:Success状态码,表示请求正常完成。
  • 3**类状态码:Redirection状态码,表示需要客户端进行附加操作(如跳转、重定向)。
  • 4**类状态码:Error状态码,通常是由于客户端的错误导致的。
  • 5**类状态码:SeverError状态码,通常是服务端的错误导致的。

**状态码分为客户端错误状态码、服务端错误状态码、成功状态码、重定向状态码等。**

本博客内容为原创,版权所有违者必究,转载请注明来源 http://www.cnblogs.com/sunshine-blog/

HTTP/TCP协议基础的更多相关文章

  1. TCP协议基础

    IP协议是Internet上使用的一个关键协议,它的全称是Internet  Protocol,即Internet协议,通常简称IP协议.通过使用IP协议,使Internet·成为一个允许连接不同类型 ...

  2. TCP协议基础知识及wireshark抓包分析实战

    TCP相关知识 应swoole长连接开发调研相关TCP知识并记录. 数据封包流程 如图,如果我需要发送一条数据给用户,实际的大小肯定是大于你发送的大小,在各个数据层都进行了数据的封包,以便你的数据能完 ...

  3. TCP协议基础(一)

    TCP为应用层提供的服务 提供进程和进程之间的通信 答: 怎么区分服务目的主机上的哪个进程呢? 通过提供端口号(well-known port), 如Telnet 23,DNS 53, HTTP 80 ...

  4. Http协议与TCP协议简单理解(转)

    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...

  5. Http协议与TCP协议简单理解

    TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...

  6. Http协议与TCP协议理解

    TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...

  7. HTTP协议 与 TCP协议 的区别

    TCP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据. TCP/IP和HTTP协议的关系,从本质上来说,二者没有可比性,我们在传输数据时,可以只使用(传输 ...

  8. iOS-----使用CFNetwork实现TCP协议的通信

    使用CFNetwork实现TCP协议的通信 TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个通信接口,从而在通信的两端之间形成网络虚拟链路.一旦建立了虚拟的网络链路,两端的程序就可以 ...

  9. <再看TCP/IP第一卷>TCP/IP协议族中的最压轴戏----TCP协议及细节

    题外话:刚刚过去的半个月实在是忙得我喘不过来气,虽然手里还压着几个项目得在期末考试之前做完,但是想想还是更新一下随笔,稍微换个心情.另外小吐槽一下那些在博客园里原封不动抄书当随笔的人,唉真是....算 ...

随机推荐

  1. 机器学习 Generative Learning Algorithm (A)

    引言 前面几讲,我们主要探讨了如何对 p(y|x;θ) (即y 相对于x的条件概率)进行建模的几种学习算法,比如,logistic regression 对 p(y|x;θ) 进行建模的假设函数为 h ...

  2. Statement

    题目大意 给定一棵基环外向树,和若干组询问,对于每次独立的询问都指定一些起点和一些终点,你删去一些边,使得从任意起点出发都无法到达终点,并让删去的边的编号的最小值最大,求这个最大的最小值. 题解 不难 ...

  3. 树套树Day1线段树套平衡树bzoj3196

    您需要写一种数据结构,来维护一个有序数列,其中需要提供以下操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)5.查 ...

  4. 恢复到特定点(时间点、scn、日志序列号),rman不完全恢复

    将数据库.表空间.数据文件等恢复至恢复备份集保存时间中的任何一个时间点/SCN/日志序列(一般是日志挖掘找到误操作点),但须谨慎,操作前一定需要做好备份,具备条件的情况下最好先恢复到异机,避免业务停机 ...

  5. [转]JS的内存泄露处理

    问题: 1.给DOM对象添加的属性是一个对象的引用.范例: var MyObject = {}; document.getElementByIdx_x('myDiv').myProp = MyObje ...

  6. C#中如何设置日期格式

    在C#中,ToShortDateString()是用于显示短日期格式的方法,如果使用下面的语句: Label1.Text = DateTime.Now.ToShortDateString(); 那么, ...

  7. Python模块-logging模块(二)

    logging模块记录日志有四个主要类:logger,handler,formatter,filter logger提供了应用程序可以直接使用的接口,每个程序在输出信息之前都要获得一个Logger h ...

  8. C++ 替换字符串内某个字符或子串

    1. 问题描述 string s="abc"; string tmp="1"; 2.解决方案 // tmp 必须为字符串 // 第一个 1 表示 s 中的位置 ...

  9. JavaScript设模式---单例模式

    单例模式也称为单体模式,其中: 1,单体模式用于创建命名空间,将系列关联的属性和方法组织成一个逻辑单元,减少全局变量. 逻辑单元中的代码通过单一的变量进行访问. 2,三个特点: ① 该类只有一个实例: ...

  10. XML解析代码课堂讲解实例

    //获取所有的子元素,不包括回车 package com.dom4jDemo; import java.io.File; import java.util.List; import org.dom4j ...