软件测试~网络协议

网络协议

一、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张图片

1、客户端发送SYN包给服务端请求连接
2、服务端同意后发送SYN+ACK包
3、客户端收到后回复ACK包建立连接

四次挥手:
软件测试~网络协议_第2张图片

1、客户端发起关闭连接请求,发送FIN包,自己进入终止等待1状态;
2、服务端收到FIN包后发送一包ACK包,表示进入关闭等待状态,客户端进入终 止等待2状态;(服务端此时还可以发送未发送数据,客户端还可以接受数据)
3、服务端发送完数据后发送一包FIN包,进入最后确认状态;
4、客户端收到FIN包后回复ACK包,服务端收到ACK包后立即关闭连接,客户端 进入超时等待状态,经过超时时间后关闭连接。

三、计算机网络结构分层
软件测试~网络协议_第3张图片

你可能感兴趣的:(笔记,网络协议,http,tcpip)