学习HTTP之前,很必要了解一下关于Web网络基础。

TCP/IP协议族

1、应用层:应用层决定了向用户提供应用 服务时的通信活动,比如FTP(文件传输协议)、DNS(域名系统)、HTTP(超文本传输协议)

应用层就像目的地

2、传输层:传输层对上层应用层提供处理网络连接中的两台计算机之间的数据传输,有两个协议TCP(传输控制协议)、UDP(用户数据协议)

传输层就像是马路上的规则

在TCP协议中要通过三次握手才能建立可靠连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED状态,完成三次握手。

UDP和TCP的区别

最本质的区别就是TCP是面向连接的,而UDP是非面向连接的。

什么叫面向连接呢?事先为所发送的数据开辟出连接好的通道,然后再进行数据发送,像打电话,只能两人打,第三人打就显示占线

非面向连接:是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输,就像写信,不管对方有多忙,把信放到邮筒,就与自己无关系了。

TCP支持的服务有FTP、SMTP等,而UDP支持的服务有DNS、SNMP、QQ等

3、网络层:网络层用来处理在网络上流动的数据包。包括IP协议。

网络层就像马路上的车,规定了数据传输的路线

IP地址指明了节点被分配的地址,MAC地址是指网卡所有的固有地址,通俗的理解IP地址就像快递的终点地址,而MAC地址就像快递到终点地址之间的间歇地址。

4、链路层:一些硬件部分,包括驱动、网卡和光纤等

链路层就像是马路

各协议的职责

DNS是为了域名解析。

HTTP是为了生成针对目标Web服务器的HTTP请求报文(用HTTP交互的信息),并判断是哪个报文

TCP是为了方便通信,将HTTP请求报文割成报文段,把每个报文段可靠传给对方,又按照顺序重组接收的报文段。

IP是为了搜索对方地址,一边中转一边传送。

告知服务器意图的HTTP方法

GET:获取资源

POST:传输实体主题

PUT:传输文件

HEAD:获得报文首部

DELETE:删除文件

OPTIONS:询问支持的方法

TRACE:追踪路径

CONNECT:要求用隧道协议链接代理

详细例子可参考http://www.cnblogs.com/six-moon/p/5151562.html

持久连接节省通讯量,持久连接就是只要任意一方没有提出断开连接,就一直连接。持久连接使得多数请求以管线化的方式发送可能,管线化就是从发送请求后需要等待并收到响应,才能发送下一个请求。

HTTP为无状态协议,需要Cookie进行状态管理,比如自己的登陆状态,可以利用cookie控制自己的客户端状态

HTTP编码

有时候我们用百度云下载文件时,给的链接有时候是编码的有时候是未经编码的,编码可提升传输速率。

HTTP常见状态码

HTTP通信数据转发程序

代理:接收由客户端发送的请求并转发给服务器

网关:保证通信安全性

隧道:保证客户端和服务器安全通信

安全的HTTPS

HTTP缺点:通信不加密内容会被窃听

不验证通信方的身份,遭遇伪装

无法证明报名完整性,可能回被篡改

所以引入HTTPS

HTTP+加密+认证+完整性保护=HTTPS

加密:通过SSL(安全套接层)或TLS(安全传输协议)组合使用,加密HTTP的通信内容

HTTPS是采用混合加密机制,共享秘钥+公开秘钥的方式实现加密

认证:

基于HTTP功能的追加协议

什么是HTTP的瓶颈:更新的内容只能显示在客户端

解决方法:AJAX和SPYD

但是SPYD也无法真正消除瓶颈,因为计算机的一些硬件问题的存在,如网卡和CPU等

彻底解决问题的方法是:WebSocket,即web浏览器和web服务器之间全双工通信标准。

优点是,直接发送数据,不用等待客户端请求,一直保持连接状态,且首部信息量少,通信量减少。

使用Cookie来管理Session

客户端把用户IE和密码等登录信息放入报文的实体部分,以POST方式发送给服务器。

服务器进行身份认证,产生SessionID,加入到Set-Cookie内,返回给客户端。

客户端接收到SessionID后,将其加入Cookie,下次请求时,浏览器会自动发送Cookie。

 

具体内容大家可以看下《图解HTTP》这本书,讲的真心不错。

《图解HTTP》学习笔记之入门的更多相关文章

  1. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  2. WebSocket学习笔记——无痛入门

    WebSocket学习笔记——无痛入门 标签: websocket 2014-04-09 22:05 4987人阅读 评论(1) 收藏 举报  分类: 物联网学习笔记(37)  版权声明:本文为博主原 ...

  3. Java学习笔记之---入门

    Java学习笔记之---入门 一. 为什么要在众多的编程语言中选择Java? java是一种纯面向对象的编程语言 java学习起来比较简单,适合初学者使用 java可以跨平台,即在Windows操作系 ...

  4. DBFlow框架的学习笔记之入门

    什么是DBFlow? dbflow是一款android高性的ORM数据库.可以使用在进行项目中有关数据库的操作.github下载源码 1.环境配置 先导入 apt plugin库到你的classpat ...

  5. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  6. 学习笔记_J2EE_SpringMVC_01_入门

    1.    概述 笔者作为一个不太正经的不专业佛教信仰者,习惯了解事物的因果关系,所以概述就有点BBB...了.如果不喜欢这些的,请自行跳过概述章节,直接进入第二章的操作实践:2 入门示例. 1.1. ...

  7. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  8. SpringBoot学习笔记<一>入门与基本配置

    毕业实习项目技术学习笔记 参考文献 学习视频 2小时学会Spring Boot:https://www.imooc.com/learn/767 学习资料 SpringBoot入门:https://bl ...

  9. 图解HTTP学习笔记——简单的HTTP协议

    简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地 ...

  10. [学习笔记]SiftGPU入门

    当有读者看到我这篇SiftGPU入门的学习笔记时,相信你已经读过了高博那篇<SLAM拾萃:SiftGPU>,那篇文章写于16年,已经过去两年的时间.在我尝试配置SiftGPU的环境时,遇到 ...

随机推荐

  1. 9. Technical Overview 技术概述

    9.1 Runtime Environment 运行环境 Spring Security 3.0需要Java 5.0运行时环境或更高版本.由于Spring Security的目标是以独立的方式运行,所 ...

  2. Android app启动出现白屏闪屏

    出现白屏闪屏原因: 进入到AppStartActivity,但是未加载到布局文件,就先显示了窗口的背景,白屏就是显示的windows的背景,即所设置的theme. onCreate()中的setCon ...

  3. SpringMVC 注解方式进行配置页面跳转

    @ 目录 修改IndexController 修改springmvc-servlet.xml 效果 修改IndexController 在类前面加上@Controller 表示该类是一个控制器 在方法 ...

  4. 鼠标放上时显示隐藏的div或者其他代码的“jquery”的三种写法和“JavaScript”的一种写法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. .net core 中的经典设计模式的应用

    .net core 中的经典设计模式的应用 Intro 前段时间我们介绍了23种设计模式,今天来分享一下 asp.net core 种我觉得比较典型的设计模式的应用 实例 责任链模式 asp.net ...

  6. Java14版本特性【一文了解】

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  7. Kubernetes K8S之资源控制器RC、RS、Deployment详解

    Kubernetes的资源控制器ReplicationController(RC).ReplicaSet(RS).Deployment(Deploy)详解与示例 主机配置规划 服务器名称(hostna ...

  8. shell 三剑客之 grep

    grep 的全称是 Globally search a Regular Expression and Print,是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹 ...

  9. Java 接口简述

    Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并 ...

  10. vue 里bus的使用

    兄弟组件之间进行传值(非父子组件): 安装:npm install vue-bus 在main.js中引入vue-bus import Vue from 'vue'; import VueBus fr ...