1,网络分层:
1)物理层
负责物理传输;把计算机连接起来的物理手段.
2)数据链路层
控制网络层与物理层之间的通信,在不可靠的物理线路上进行数据的可靠传递.
3)网络层
决定如何将数据从发送方路由到接收方.(选择最佳路径)
4)传输层
两台主机上的应用程序提供端到端的通信.主机到主机.主要有两个传输协议:TCP(传输控制协议)和UDP(用户数据报协议).TCP是一个可靠的面向连接的协议,UDP是不可靠的或者说无连接的协议.
5)应用层
应用程序接到传输层的数据之后就进行数据解读.应用层就是规定应用程序的数据格式的.
2.tcp的三次握手与四次挥手.
通常我们进行HTTP连接网络的时候会进行TCP的三次握手,然后传输数据,之后再释放连接..
第一次握手:建立连接
第二次握手:服务器接收到服务端的SYN报文段,对其进行确认,设置,同时自己还要发送SYN请求信息,将SYN设置为1,服务端将信息一并发送给客户端,并且改变状态.
第三次握手:客户端接收到服务端的报文段,然后设置ACK,向服务端发送ACK报文段,这个报文段发送完毕后,客户端和服务端都进入ESTTABLISHED(TCP连接成功)状态,完成TCP的三次握手.
当数据传送完毕之后,断开连接之后就需要进行TCP的四次挥手.
第一次挥手:客户端设置seq和ACK,向服务端发送一个FIN报文段.此时,客户端进入FIN_WAIT_1状态,表示客户端没有数据要发送给服务端了.
第二次挥手:服务端收到报文段,向客户端返回一个ACK报文段
第三次挥手:服务端向客户端发送报文段,请求关闭连接,同时服务端改变状态.
第四次挥手:客户端收到服务端的报文段,向服务端发送ACK报文段,然后客户端进入TIME_WAIT状态.服务端收到报文段之后就连接关闭,此时客户端等待2msl(最大报文段生存时间)后依然没有收到回复,则说明服务端已经正常关闭,这样客户端也可以关闭连接了.
如果有大量的连接,每次在连接,关闭的时候都要经历三次握手,四次挥手,这会造成性能地下,一次,HTTP有一种叫做keepalive connection的机制,它在传输数据后仍然保持连接,当客户端需要再次获取数据时,直接使用刚刚空闲下来的连接而无需再次握手
3HTTP协议原理
http是一个属于应用层的面向对象的协议,现在最新的HTTP版本是HTTP2,他是在2015年新发布的新版本,SPDY协议的主要特性也是在这个版本中.
http的主要特点有:
支持客户/服务器模式
简单快速.请求方法常用的有GET,HEAD,POST.http服务器的程序规模小,通信的速度很快.
灵活:HTTP允许传输任意类型的数据对象.正在传输类型由Content-Type加以标记
无连接:无连接的含义是限制每次连接只处理一个请求.
无状态:协议对事务处理没有记忆能力.
http有两种报文,分别是请求报文和响应报文.
请求报文:http报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.一般一个HTTP请求报文是由请求行,请求报头,空行和请求数据4个部分组成.
1,请求行:由请求方法,URL字段和HTTP协议的版本组成
HTTP请求方法一共有8中,对于移动开发用的最多的就是GET和POST.
GET:请求获取统一资源标识符所标识的资源
POST:在统一资源标识符所标识的资源后附加新的数据.
请求报头:
请求行后会有0个或者多个请求报头.
3请求数据
请求数据不在GET方法中使用,而是在POST方法中使用,POST方法适用于需要客户填写表单的场合,与请求数据有关的最常用的请求表头是Content-Type和Content-Length.
3HTTP响应报文
一般格式为状态行,响应报头,空行,响应正文.
状态行:服务HTTP协议的版本,服务器发回的响应状态码,状态码的文本描述.
响应的类型有5种可能取值
100~199:指示信息,收到请求,需要请求者继续执行操作.
200~299:请求成功,请求已被成功接收并处理.
300~399:重定向,要完成请求前必须进行更进一步的操作.
400~499:客户端错误,请求有语法错误或请求无法实现
500~599:服务器错误,服务器不能实现合法的请求
HTTP的消息报头
消息报头分为通用报头,请求报头,响应报头,实体报头等.消息报头由键值对组成,每行一对,关键字和值用英文冒号":"分割.
1,通用报头
它可以出现在请求报头,也可以出现在响应报头中
Date:表示消息产生的日期和时间
Connction:允许发送指定连接的选项.
Cache-Control:用于指定缓存指令,缓存指令是单向的,且是独立的.
2,请求报头
请求报头通知服务器关于客户端请求的信息.典型的请求报头
抓包
在window中推荐用fiddler来抓包.