中和Osi和TCP/IP的优势,采用一种只有五层协议体系结构,自上而下分别是:浏览器
应用层:提供应用接口,为用户直接提供各类网络服务。缓存
常见协议有:域名系统DNS,支持万维网的http协议,支持电子邮件的SMTP协议安全
底层协议为tcp服务器
TCP协议能够对上层网络提供接口,使上层网络数据的传输创建在“无差异”的网络之上。cookie
TCP是底层通信协议,定义的是数据传输和链接方式的规范
HTTP是应用层协议,定义的是传输数据的内容的规范网络
http协议与tcp协议相互关系session
http是应用层,而tcp是传输层,http是基于tcp链接基础之上的。简而言之,tcp是单纯创建链接,不涉及请求的数据以及简单传输,而http是用来收发数据的。架构
1.客户端发送http请求给服务端,请求包括请求头,请求内容tcp
请求头包含:1.请求方法get/post,请求url,http版本post
2.请求的数据
3.是否有cookies以及缓存
请求体:即请求的内容
2.服务端收到http请求,返回http响应
响应头包含:cookies或sessions,状态码,内容大小等
3.客户端收到之后,由浏览器完成对数据的渲染,包括执行js脚本
传输层:定义传输数据的协议端口号,以及流控和差错校验。四层交换机
协议有 :TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层:为数据包选择路由,进行逻辑地址寻址,路由器
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层:传输有地址的帧以及错误检测功能,交换机,网卡
协议有:SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层:以二进制数据形式在物理媒体上传输数据,中继器
三次握手目的是双方确认各自数据发送与接收正常,创建可靠的通信
第一次握手,服务端可以确认C发送正常,本身接受正常
第二次握手,客户端确认本身发送,接收正常,S发送,接受正常;服务端可以确认C发送正常,本身接受正常
第三次握手,双方各自确认本身发送,接受正常,缺一不可
四次挥手
客户端:向服务端发送断开链接信息
服务端:收到客户端发出的断开链接信息,并响应,此时处于半关闭状态
服务端:向客户端发送断开链接信息
客户端:对服务端断开链接信息进行响应
TCP是面向链接的,经过校验和,序号标识,重发控制等进行可靠的传输,保证数据的完整性,而UDP不须要创建链接,不可以保证可靠交付。可是UDP具备实时性,工做过效率高,占用系统资源少,适应于对高速传输以及实时性有较高要求的广播通讯。
此外TCP链接是点到点的,而UDP支持一对多,多对多。
首先进行DNS解析
输入www.baidu.com,首先找本地hosts文件,查找是否有百度对应的ip地址,有即返回ip,而后经过80端口访问百度的服务器,若没有,则经过DNS服务器找对应的域名与ip的对应关系,即DNS解析过程。
而后创建TCP链接
发送http请求
服务器处理请求并返回http报文
浏览器解析渲染页面
链接结束
理解概述:
首先发给DNS服务器,进行域名解析,获得IP地址后生成针对目标Web服务器的HTTP请求报文,而后报文由TCP协议负责传输,为了方便通讯,HTTP请求报文被分为报文段,而后每一个报文段可靠的传输给对方,而后报文段由IP层负责一边中转一遍传送,服务器收到报文段后重组报文段,而后由应用层的HTTP协议处理请求的内容,请求的结果以 一样的方式进行回传。
http/1.0:默认使用短链接
客户端与服务器每进行一次http操做,就创建一次链接,任务结束就中断链接
http/1.1起:默认使用长链接,保持链接特性
当打开网页以后,客户端与服务端创建的tcp链接不会中断,当再次向服务器发送请求,会继续使用这条链接,固然也不会无限保持链接,有一个保持时间,能够设定在服务器软件中。
session机制能够保存用户状态,好比向购物车加入商品,系统并不知道是哪一个用户操做的,由于http是无状态的,服务端给特定的用户建立特定的session就能够标识这个用户并跟踪这个用户。(如何实现跟踪,在cookie中附加一个session ID)
Cookie被禁用怎么办?利用URL重写把session ID直接附加在url后面。
cookie保存用户信息,将数据保存在客户端,单个cookie不大于4k,cookie数量有限制,会话cookie与持久cookie,若是使用 Cookie 的一些敏感信息不要写入 Cookie 中,最好能将 Cookie 信息加密而后使用到的时候再去服务器端解密。
session记录用户状态,数据保存在服务器端,安全性更高,与服务器内存有关,session过多会增长服务器压力。
uri:统一资源标识符,能够惟一标识一个资源,身份证
url:统一资源定位符,能够提供该资源的路径,家庭住址
默认端口号不一样,http为80端口,https为443端口
http基于tcp,传输内容为明文,不安全
https是创建在ssl之上的http协议,所传输的内容都通过加密,但比http耗费更多的服务器资源,HTTPS链接缓存不如HTTP高效。同时ssl证书比较烧钱。握手阶段比较耗时,如非必要,没有理由牺牲用户体验。
https工做原理:
使用get请求时,参数在url中显示,而post不会
post数据传输量较大,可达到2M,而get因为url长度限制,只能传递1024字节
get方式请求的数据会被浏览器存入缓存,某种状况下会带来安全问题,而post相对会避免这种问题