网络协议
一、Http网络协议介绍 Http协议: 超文本传输协议,主要用于浏览器和服务器之间交互数据,包含请求和响应两个部分,目前主流的一种网络协议。 https=http+ssl安全传输协议,需要到 CA(Certificate Authority,数字证书认证机构) 申请证书。
基于http协议发送请求: Url:链接,统一资源定位符,用于定位每一个指定的接口 请求下发的格式定义: 网络协议://IP:端口号/路径?参数1=xx&参数2=xx http默认端口80,https默认端口443 Http通信原理: 1、浏览器基于url的域名解析出IP地址(DNS解析), 2、基于ip地址和服务器进行连接, 3、客户端构造http请求到服务端对应接口, 4、接口生成响应结构基于http原路返回, 5、基于前端的渲染,将结果进行展示。 http请求是一种无状态的连接形式,每一次请求都是独立存在的个体,前一个请求和后一个请求不关联。(1、无事务处理记忆能力2、无上下文关系3、每次请求独立4、服务器不保存客户端状态) 在http请求中,每一次交互都生成一个tcp连接,用于后续http数据传输。
发送的请求包括header和body两部分组成,header定义传递规则,body用于传递数据内容。 1、get请求和post请求 -GET在浏览器回退时是无害的,而POST会再次提交请求(GET产生一个TCP数据包;POST产生两个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据); 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。)) GET产生的URL地址可以加入书签,而POST不可以 GET请求参数会被完整缓存到浏览器,而POST不会 GET参数通过URL传递(明文、长度受限),POST放在Request body中。
2、token、session、cookies: 由于http是无状态协议,为解决系统业务链需要,故使用鉴权机制。 Cookies:缓存保存在客户端本地的缓存机制,在本地加载缓存文件,将部分内容通过本地渲染的形式直接展示在界面中(缓存在浏览器,数量受限)。 Session:当出现交互时,需要交互的会话 Session叫做临时会话机制,保存在服务器 ,基于会话id来进行会话区分,客户端用cookies保存sessionid,请求时会把sessionid一起发给服务器,服务器到内存搜索对应的sessionid(数量多时影响服务器性能)。 Token:身份牌鉴权,将内容由服务器生成,保存在客户端,服务端保存在数据库中(节省服务器内存,数据签名防伪造攻击)
二、TCP和UDP TCP是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。(适用于传输文件、发送邮件、浏览网页等) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接, 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。(适用于直播视频、移动通信、隧道网络(VPN)) 区别: 1、TCP是面向连接的协议,而UDP是无连接的协议。 2、TCP更可靠、有序的,UDP尽最大努力交付,数据已任何可能的顺序到达。 3、UDP具有较好的实时性,工作效率比TCP高。(适用直播、视频、移动通信) 4、TCP首部开销20字节; UDP的首部开销只有8个字节 。 5、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的 。 6、TCP对系统资源要求较多,UDP对系统资源要求较少。 7、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信 。 8、UDP没有拥塞控制,无论丢包丢成啥样,该怎么发怎么发。
三次握手:
1、客户端发送SYN包给服务端请求连接 2、服务端同意后发送SYN+ACK包 3、客户端收到后回复ACK包建立连接
四次挥手:
1、客户端发起关闭连接请求,发送FIN包,自己进入终止等待1状态; 2、服务端收到FIN包后发送一包ACK包,表示进入关闭等待状态,客户端进入终 止等待2状态;(服务端此时还可以发送未发送数据,客户端还可以接受数据) 3、服务端发送完数据后发送一包FIN包,进入最后确认状态; 4、客户端收到FIN包后回复ACK包,服务端收到ACK包后立即关闭连接,客户端 进入超时等待状态,经过超时时间后关闭连接。
三、计算机网络结构分层
|