Python 接口测试全套教程-02-网络基础知识

如有任何学习问题,可以添加作者微信:lockingfree

目录

Python 接口测试全套教程-01-Python 基础
Python 接口测试全套教程-02-网络基础知识
Python 接口测试全套教程-03-HTTP 协议
Python 接口测试全套教程-04-接口及接口测试
Python 接口测试全套教程-05-抓包工具的使用
Python 接口测试全套教程-06-Postman 的使用
Python 接口测试全套教程-07-使用 Python 发送请求
Python 接口测试全套教程-08-JSON 类型解析
Python 接口测试全套教程-09-Requests 库详解
Python 接口测试全套教程-10-带安全认证的请求
Python 接口测试全套教程-11-Python 操作数据库
Python 接口测试全套教程-12-unittest 测试框架
Python 接口测试全套教程-13-接口测试框架实战
Python 接口测试全套教程-14-REST 及 RESTful API
Python 接口测试全套教程-15-SOAP 及 WebService
Python 接口测试全套教程-16-XML 解析
Python 接口测试全套教程-17-Mock Server
Python 接口测试全套教程-18-Git 及 Jenkins 持续集成

IP地址

就像每个人都有一个身份证号码
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址

ip地址

查看IP命令

  • Windows: ipconfig
  • Linux: ifconfig

Python练习:检查字符串是否ip

def is_ip(ip):
num_list = ip.split(".")
for num in num_list:
if not num.isdigit() or not 0 <= int(num) <=255:
return False
return True

print(is_ip(“101.1.0.201”))

使用map函数实现方法(参考)

def check_ipv4(str):
ip = str.strip().split(“.”)
return False if len(ip) != 4 or False in map(lambda x:True if x.isdigit() and 0<= int(x) <= 255 else False, ip) else True

### 端口
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。
如果把IP地址比作一间房子,端口就是出入这间房子的门。一个IP地址的端口可以有65536(即:2^16)个
**端口类型**
- 公认端口:从01023,紧密绑定于一些服务
- 注册端口:人102449151,许多服务绑定这些端口,这些端口同样用于许多其它目的。
- 动态或私有端口:从4915265535。理论上,不应为服务分配这此端口。实际上,机器通常从1024起分配动态端口。
**常见软件默认端口**
- Apache/Nginx(HTTP服务): 80
- Tomcat: 8080
- Oracle: 1521
- MySQL: 3306
- SQL Server: 1433
- PostgreSQL: 5432
- MongoDB: 27017
- Redis: 6379
- Memcached: 11211

**查看端口命令**
- Windows: netstat -ano
- Linux: netstat -ntlp

![端口查看](http://upload-images.jianshu.io/upload_images/7575721-81af81edd8b037ae.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> 解决端口占用问题
- Windows: netstat -ano | findstr "8080",找到占用端口的程序的PID -> 打开任务管理器 -> 设置显示PID -> 找到并结束对于程序
- Linux: netstat -ntlp | grep "8080", 找到对应的程序 -> ps -ef | grep "程序名" 找到对于的pid -> kill 相应的id

### 域名及DNS
由于IP地址不容易记忆,为IP地址赋予了一个利于记忆的别名,称为域名
如,百度的ip为: 61.135.169.125,对应的域名为 www.baidu.com

![域名及ip](http://upload-images.jianshu.io/upload_images/7575721-c5a41f36c802e4eb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

**如何查看域名所对于的ip**
- Windows/Linux: ping www.baidu.com

**DNS**
DNS即域名解析系统,域名和IP地址相互映射的一个分布式数据库,提供域名转到对应ip的服务
### OSI七层模型
OSI即开放系统互连参考模型,一种网络架构,分为7层。

![OSI网络模型](http://upload-images.jianshu.io/upload_images/7575721-d2ff3c16cacaa9a1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 上三层---应用层,控制软件方面
- 应用层:文件传输,电子邮件,文件服务,虚拟终端 TFTPHTTPSNMPFTPSMTPDNSTelnet
- 表示层:数据格式化,代码转换,数据加密
- 会话层:解除或建立与别的接点的联系(会话)
- 下四层---数据流层,用来管理硬件
- 传输层:提供端对端的接口 TCPUDP
- 网络层:为数据包选择路由 IPICMPRIPOSPFBGPIGMP
- 数据链路层 传输有地址的帧以及错误检测功能 SLIPCSLIPPPPARPRARPMTU
- 物理层 以二进制数据形式在物理媒体上传输数据 ISO2110IEEE802IEEE802.2
**OSI七层模型及各层协议**
### TCPUDP协议
TCPUDP都是传输层的协议
- TCP:传输控制协议
- UDP: 数据报文协议

**TCPUDP的区别**
- UDP的特点如下:
1. 无链接
2. UDP使用尽最大努力交付,不保证可靠性
3. UDP是面向报文的,UDP对应用层交付下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文
4. UDP没有拥塞控制
5. UDP支持一对一、一对多、多对一和多对多的交互通信
6. UDP的首部开销小,只有8字节

- TCP的特点:
1. TCP是面向连接的
2. 每条TCP连接只能用于两个断点,一对一
3. TCP提供可靠交付的服务:连接传输数据、无差错、不丢失、不重复、并且按序到达
4. TCP提供全双工通信
5. 面向字节流。TCP根据对方给出的窗口和当前网络拥塞的程度来决定一个报文应该包含多少个字节

>参考:[TCPUDP协议的对比](https://blog.csdn.net/yyf_it/article/details/52206715)