中和Osi和TCP/IP的优点,采用一种只有五层协议体系结构,自上而下分别是:
应用层:提供应用接口,为用户直接提供各种网络服务。
? 常见协议有:域名系统DNS,支持万维网的http协议,支持电子邮件的SMTP协议
底层协议为tcp
TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。
TCP是底层通讯协议,定义的是数据传输和连接方式的规范
HTTP是应用层协议,定义的是传输数据的内容的规范
http协议与tcp协议相互关系
? http是应用层,而tcp是传输层,http是基于tcp连接基础之上的。简而言之,tcp是单纯建立连接,不涉及请求的数据以及简单传输,而http是用来收发数据的。
1.客户端发送http请求给服务端,请求包括请求头,请求内容
? 请求头包含:1.请求方法get/post,请求url,http版本
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相对会避免这种问题
?
原文:https://www.cnblogs.com/mll-yf/p/11357360.html