你真的懂接口测试基础之TCPUDP和TCP/IP协议组吗?
Posted 软测小生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你真的懂接口测试基础之TCPUDP和TCP/IP协议组吗?相关的知识,希望对你有一定的参考价值。
Python接口自动化测试框架实战系列文章第2篇
基础知识篇
TCP与UDP的区别
TCP 是面向连接的,UDP 是面向无连接的
UDP程序结构较简单
TCP 是面向字节流的,UDP 是基于数据报的
TCP 保证数据正确性,UDP 可能丢包
TCP 保证数据顺序,UDP 不保证
TCP 为什么是可靠连接
通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
TCP 报文头里面的序号能使 TCP 的数据按序到达
报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
TCP 拥有流量控制及拥塞控制的机制
UDP 的主要应用场景
需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用,比如 DHCP 就是基于 UDP 协议的。
不需要一对一沟通,建立连接,而是可以广播的应用。因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议。
需要处理速度快,可以容忍丢包,但是即使网络拥塞,也毫不退缩,一往无前的时候
基于 UDP 的几个例子
-
直播。直播对实时性的要求比较高,宁可丢包,也不要卡顿的,所以很多直播应用都基于 UDP 实现了自己的视频传输协议 -
实时游戏。游戏的特点也是实时性比较高,在这种情况下,采用自定义的可靠的 UDP 协议,自定义重传策略,能够把产生的延迟降到最低,减少网络问题对游戏造成的影响 -
物联网。一方面,物联网领域中断资源少,很可能只是个很小的嵌入式系统,而维护 TCP 协议的代价太大了;另一方面,物联网对实时性的要求也特别高。比如 Google 旗下的 Nest 建立 Thread Group,推出了物联网通信协议 Thread,就是基于 UDP 协议的
运行在TCP协议上的协议:
-
HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。 -
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。 -
FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。 -
POP3(Post Office Protocol, version 3,邮局协议),收邮件用。 -
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。 -
TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。 -
SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
运行在UDP协议上的协议:
-
BOOTP(Boot Protocol,启动协议),应用于无盘设备。 -
NTP(Network Time Protocol,网络时间协议),用于网络同步。 -
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
TCP/IP 四层协议
1.四层协议
应用层
传输层
网络层
数据链路层
(物理层)
(1)将网络的通信过程划分为小一些、简单一些的部件,有助于各个部件的开发、设计和故障排除;
(2)通过网络组件的标准化,允许多个供应商开发,鼓励产业标准化;
(3)允许各种类型的网络硬件和软件相互通信;
(4)防止某一层的改动影响到其它层,有利于开发(主要)。
3.各层的主要协议:
应用层处理应用程序的逻辑,且应用层在用户空间。
(2)传输层: UDP(用户数据报协议), TCP(传输控制协议);
传输层采用端到端的通信方式,其中:
UDP:不可靠的,无连接的,基于数据报的协议;
TCP:可靠的,面向连接的,基于字节流的协议;
(3)网络层: IP(因特网协议), ICMP(控制报文协议), ARP(地址解析协议), RARP(反向地址转换协议);
网络层主要实现数据包的选路和转发。
(4)数据链路层: 传输单位是帧,分为逻辑链路控制子层(LLC),媒体访问控制子层(MAC);
数据链路层是网卡接口的驱动程序,处理数据在物理媒介的传输
(5)物理层: 传输单位是比特流
传输的主要介质:集线器、中继器、调制解调器、网线、双绞线、同轴电缆。
一次完整的HTTP请求与响应涉及了哪些知识?
答:包括TCP三次握手和TCP的四次挥手
TCP 三次握手 建立连接
TCP 的建立连接称为三次握手,可以简单理解为下面这种情况:
A:您好,我是 A
B:您好 A,我是 B
A:您好 B
对于 A 来说它发出请求,并收到了 B 的响应,对于 B 来说它响应了 A 的请求,并且也接收到了响应。
TCP 的三次握手除了建立连接外,主要还是为了沟通 TCP 包的序号问题。
状态变化时序图
TCP 四次挥(分)手 断开连接
A:B 啊,我不想玩了
B:哦,你不想玩了啊,我知道了
这个时候,只是 A 不想玩了,即不再发送数据,但是 B 可能还有未发送完的数据,所以需要等待 B 也主动关闭。
B:A 啊,好吧,我也不玩了,拜拜
A:好的,拜拜
解读:断开的时候,当 A 说不玩了,就进入 FIN_WAIT_1 的状态,B 收到 A 不玩了的消息后,进入 CLOSE_WAIT 的状态。
Appium往期推文:
送书活动:
留言+分享赠书
北大出版社《Python自动化测试实战》
(活动码004)
点击下图留言送书
文章合集
| | |
| | |
视频教程
| | |
微信群:
软件自动化测试交流群已创建,公号回复入群即可获取入群二维码。
以上是关于你真的懂接口测试基础之TCPUDP和TCP/IP协议组吗?的主要内容,如果未能解决你的问题,请参考以下文章