zoukankan      html  css  js  c++  java
  • 网络基础

    ip地址

      IP协议提供的一种统一的地址格式,ip地址是标识网络中唯一的一台设备

    ip地址的表现形式

      IPV4:以点分隔十进制数据

      IPV6:以冒号分隔十六进制数据

    查看电脑的网卡信息

      windows使用:ipconfig

      mac / linux使用:ifconfig、ip addr

    本机ip地址

      127.0.0.1本机域名: localhost

    IP地址的作用

      通过ip地址能够在网络中找到对应的网络设备。

    端口

      端口是传输数据的通道,好比教室的门,是数据传输的必经之路

      每一个端口都会有一个对应的端口号,好比每个教室的门都有一个门牌号,想要找到端口通过端口号即可。

    端口号

      就是对端口进行了编号,用来区分和管理不同端口的,通过端口号能找到唯的一个端口。好比门牌号,其实就是一个数字。

      数据通信的流程:通过ip地址找到对应的设备,通过端口号找到对应的端口,然后通过端口把数据传输给应用程序。

      端口号总共有65536个。

    端口和端口号的关系

      端口号可以标识唯一的一个端口。

    ip+端口号通信流程

      1、通过ip地址能够找到网络中对应的设备

      2、通过端口号能够找到对应的端口,通过该端口给对应的程序发送数据。

      说明:通过端口号就是用来查找对应运行的应用程序的。

    端口号的分类

    知名端口(Well-Known Ports)

       知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。

     动态端口(Dynamic Ports)

       动态端口的范围从1024到65535,一般程序员开发应用程序使用的端口号。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

    说明:程序运行结束端口号就会被释放掉

    tcp传输协议

      tcp是传输控制协议,它是面向连接、可靠、基于字节流的传输协议,能够保证数据是可靠的,不会导致数据错乱和丢失。

      提示:想要保证数据按照指定规则进行传输,必须要选择某种传输协议,比如: tcp、udp

    tcp的通信流程

      1.创建连接
      2.数据通信
      3.关闭连接

    tcp的特点

      面向连接:在数据通信之间先建立好连接,当数据通信完毕,则断开连接

      可靠的

       1.错误校验
       2.应答机制
       3.超时重传
       4.流量控制和阻塞管理

    tcp的使用场景

      要求的是数据必须可靠,比如:下载文件,浏览网页等都是基于tcp传输协议的。

    udp传输协议

      它是一种不面向连接,不能保证数据可靠性的传输协议,但是传输速度比tcp要快。

    udp的使用场景

      比如:发送广播、收音机、视频传输等都是基于udp来完成的。

    http协议

      是一个超文本传输协议,它是基于tcp协议来进行数据传输的,目前http协议可以发送和接收任意类型的数据,原来主要用于网页数据的传输

    http协议作用

      规定了浏览器和web服务器传输数据的格式

      刘览器必须要发送http请求报文数据

      web服务器必须要发送http响应报文数据。

    https协议

      https是对http协议进行数据加密的,也就是说http协议是明文传输的,https协议是加密传输的,能够保证数据的安全性。

      https进行数据加密是通过SSL(安全套接字层)进行加密的。

    http和https的对比

      1.安全性不同

       http是明文传输的

       https是基于http进行加密传输的,https的安全性更高

      2.端口号不同

       http默认使用端口号:80

       https默认使用端口号:443

      3.https这个协议需要购买CA证书

      4.传输速度不同

       http由于在传输数据的时候不需要加密,则传输速度比https要快。

       https由于在传输数据的时候需要加密,则传输速度没有http快,但是数据更加安全。

    使用谷歌浏览器的开发者工具查看http协议的通信过程

      1、打开谷歌浏览器

      2、在空白地方右击选择检查

      3、选择Network页签

      4、输入想要访问网址

      network里面的每一条记录都是请求+响应的一次过程

    主要的页签:

      request headers:请求头信息

      response headers:响应头信息

      response:响应体信息, web服务器给浏览器的数据。

    开发者工具的标签选项说明:

      元素(Elements) :用于查看或修改HTML标签;

      网络(Network) :查看http协议的通信过程

    http请求报文

      get请求报文

      post请求报文

    get请求报文

      1、请求行

       get请求方法 请求的资源路径 协议版本,比如: GET /HTTP/1.1

      2、请求头

       host:请求主机地址

       accept:告诉web服务器客户端接受数据的类型

       user-agent:告诉服务器客户端的名称

       cookie: pgv_pvi=1246921728; 登录用户的身份标识

      3、空行

    get原始报文

    -- 请求行
    GET / HTTP/1.1
    
    -- 请求头
    Host: www.baidu.com
    
    Connection: keep-alive
    
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
    
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    
    Cookie: BIDUPSID=8004359AF4B9299670C277F85B3786E3; 
    
    -- 自定义请求头
    token:xxx
    
    -- 空行
    
     (请求头信息后面还有一个单独的‘
    ’不能省略)
    

      如果不使用浏览器发送请求数据,则必须把全部请求报文数据发送给后台程序,比如:使用Python程序发送请求数据,如果使用浏览器的话则不需要自己发送请求报文数据,浏览器已经帮你封装完毕了。

      提示:每项数据之间使用 进行分割,http协议中规定的。

    post请求

    1、请求行

      post请求方法 请求资源路径 协议版本,比如: post N2/api/?login HTTP/1.1

    2、请求头

      host

      user-agent

      content-type:表示请求参数的类型(form表单, json数据),主要是是请求体的参数

    3、空行

    4、请求体

    post原始报文

    -- 请求行
    POST /v2/api/?login HTTP/1.1
    
    -- 请求头
    Host: passport.baidu.com
    
    Connection: keep-alive
    
    Origin: https://www.baidu.com
    
    Content-Type: application/x-www-form-urlencoded
    
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
    
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    
    Cookie: BIDUPSID=8004359AF4B9299670C277F85B3786E3; 
    
    -- 空行
    
     (请求头信息后面还有一个单独的‘
    ’不能省略)
    -- 请求体
    username=lyang&pass=123456
    
    

    get和post报文格式的对比

      get请求:请求行、请求头、空行
      post请求:请求行、请求头、空行、请求体

    http响应报文组成

    1、响应行

      http协议版本 状态码 状态描述,比如: HTTP/1.1 200 OK

    2、响应头

      Server:服务器名字
      Data:服务器处理时间
      Content-Type:服务器告诉客户端内容的类型,比如:Content-Type: text/html;charset=utf-8

    3、空行

    4、响应体

      客户端使用的数据在响应体里面,比如:返回的html数据或者json数据

    http响应报文

    -- 响应行/状态行
    HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述
    -- 响应头
    Connection: keep-alive # 和客户端保持长连接
    Content-Type: text/html;charset=utf-8	# 内容类型
    Date: Sun, 27 Jun 2021 10:52:40 GMT # 服务器的响应时间
    Transfer-Encoding: chunked # 发送给客户端内容不确定内容长度,发送结束的标记是
    ,Content-Length表示服务端确定发送给客户端的内容大小,但二者只能用其一
    Server: BWS # 服务器名称
    -- 空行
    
    
    -- 响应体
    <!DOCTYPE html><html lang=“en”> … </html>	# 响应给客户端的数据
    

    http常见的状态码

    • 200 表示请求成功
    • 307 表示重定向
    • 400 表示请求参数有问题
    • 404 表示请求资源服务器不存在
    • 500 表示服务器内部代码问题

    http状态码的分类

    • 1xx: 表示请求已经收到,可以继续再发送请求
    • 2xx: 表示操作成功
    • 3xx: 表示重定向
    • 4xx: 表示客户端错误
    • 5xx: 表示服务端程序错误

    响应报文中的Content-Type

    Content-Type 表示告诉客户端内容类型

    • 表现形式
      • text/html 表示服务器给客户端是网页或者文本数据, 完整格式: Content-Type: text/html
      • application/json 表示服务器给客户端是json数据,完整格式: Content-Type: application/json

    请求报文中的Content-Type

    在post请求报文中,会有Content-Type,Content-Type 表示告诉服务端内容类型

    • 表现形式
      • application/x-www-form-urlencoded 表示以表单形式提交数据给web服务器端, 具体格式:Content-Type: application/x-www-form-urlencoded
      • application/json 表示以json格式的数据提交给web服务器端, 具体格式: Content-Type: application/json

    Content-Type 最常见的数据格式

    web服务器给客户端数据的时候使用的Content-Type

    • text/html 一般服务器响应给客户端网页数据的时候会使用该格式
    • image/jpeg 一般服务器响应给客户端是jpeg格式图片的时候会使用该格式
    • image/png 一般服务器响应给客户端是png格式图片的时候会使用该格式
    • application/json 一般服务器响应给客户端是json数据的时候会使用该格式

    客户端web服务器数据的时候使用的Content-Type

    • application/json 表示客户端以json形式提交数据给web服务器
    • application/x-www-form-urlencoded : 表示客户端以form表单形式提交数据给web服务器
    • multipart/form-data 表示客户端上传文件数据给web服务器使用该格式

    http的请求方法

    1. get 获取服务器数据
    2. post 向服务器提交数据
    3. head 获取响应头信息
    4. put 修改数据
    5. delete 删除数据

    get请求方法

    1. get请求表示获取服务器的数据,本质是 “得” 数据

    2. 请求参数的表现形式

      1. http://www.baidu.com?参数名1=值1&参数名2=值2, 比如: http://www.baidu.com?username=zhangsan&password=zhang

        1. 提示: url中不能出现中文或者空格,如果有中文或者空格需要进行url的编码
        2. 提示: get参数需要放到请求地址的后面,使用 ? 进行追加, 多个参数之间使用 & 拼接

    post请求方法

    1. post方法表示给服务器提交数据的,本质是 “给” 数据
    2. 请求参数的表现形式
      1. 参数都会以请求体的方式进行提交,在url地址里面看不到提交的参数
        1. 如果请求体里面有多个参数,以表单形式提交的话,多个参数使用 & 拼接, 比如: username=hello&pw=abc
        2. 如果请求体里面有多个参数,以json形式提交的话,多个参数使用 ,分割,比如: {"username":"hello","pw":"abc"}
      2. 特殊说明: 请求参数的类型需要根据接口文档指定
        1. 比如:如果后台程序需要的是json数据格式,那么我们需要指定请求头里面Content-Type: application/json
        2. 提示:如果在请求头里面没有指定Content-Type,默认是以表单形式提交,格式:Content-Type: application/x-www-form-urlencoded

    get和post请求的区别

    1. get本质是从服务器获取数据
    2. post本质是给服务器提交数据
    3. get没有请求体
    4. post有请求体
    5. get请求的参数都会暴露在url中,相对来说不安全
    6. post请求的参数都会在请求体里面,相对来说更安全
    7. get请求默认会对页面数据进行缓存
    8. post请求默认不会对页面数据进行缓存
    9. get请求回退无害,不需要再次提交
    10. post请求回退会重新发起请求,需要再次提交数据
    11. get请求有长度限制,但是http协议中没有要求长度限制,但是get请求一般都受浏览器本身的限制。
    12. post请求没有长度限制。
    13. get请求的执行速度比post请求要快。

    接口介绍

      接口就是客户端和服务端进行数据交互的通道,客户端通过接口可以把数据提交给服务端,服务端把处理好的数据通过接口发给客户端。通俗理解接口就是一个url,比如: http://127.0.0.1:8080/product

    接口测试介绍

      接口测试不关注界面功能,关注的是url接口是否能够满足指定功能,比如: http://127.0.0.1:8080/product 这个接口是一个添加商品的接口,则测试该接口是否能够完成添加商品的操作。

    接口测试的原理

      模拟客户端向web服务器端发送http请求报文数据以及获取http响应报文,并验证响应报文的数据和预期结果是否一致。

    接口测试的测试点(关注点):

    • 关注url的地址和请求方法是否正确
    • 验证请求回来的数据和预期结果是否一致
    • 隐私参数是否能够保证安全,比如:密码不能在url地址中出现,密码是否进行加密
    • 接口是否能够支持n多个用户同时访问,并能正常提供响应数据的能力。

    RESTful风格

      只是接口地址的一种表现形式,RESTful风格接口设计更加简洁。

      提示:不管是传统接口还是RESTful风格接口,对应我们测试而言都是一样的,正常根据接口文档进行测试即可。

    json的介绍

      json是JavaScript对象的字符串,它其实就是一个数据格式,目前主要使用web前端和后台程序之间的数据通信上。

    json的格式

    • 对象格式 表示一个数据,比如一个学生信息,一个老师信息。

      • 对象格式: 使用 {}, 比如: {"name":"李四","age":20}
    • 数组格式 表示一个集合,这个集合里面可以包含多个数据。

      • 数组格式: 使用 [] , 比如: [{"name":"张三","age":20},{"name":"李四","age":30}]

      提示:json数据中的引号必须使用双引号。

    json数据的使用场景

      json数据主要使用在前端程序和后台程序的数据交互上。

      例如: 前端程序一般需要把数据准备成json格式发送给后台程序,后台程序接收到数据后进行相关的处理,再把处理好的数据以json格式方式返回给前端程序。

      提示:前台和后台json数据都是需要包装成http协议的数据进行传输, 请求的json数据会放到请求体里面,响应的json数据会放到响应体里面。

    接口测试流程

    1. 需求分析
    2. 接口文档分析
      1. 请求数据

          请求的url是否正确
          请求的方法是否正确
          请求的参数是否正确

      2. 响应数据

          响应的内容是否和预期结果一致
          响应头信息是否明确
          响应的状态码是否正确
          响应的参数是否有说明
            响应体的参数要有说明
            响应头的参数也要有说明

    3. 设计和编写测试用例
    4. 执行用例
    5. 跟踪和管理缺陷(禅道)
    6. 测试完成以后,需要编写测试报告
  • 相关阅读:
    tomcat容器启动的启动过程(三)
    tomcat源码分析(二)启动过程
    tomcat源码分析(一)
    spring 整合redis
    redis win版安装
    java虚拟机存储区
    java代码块 静态、非静态
    Vulkan Tutorial 08 交换链
    Vulkan Tutorial 07 Window surface
    Vulkan Tutorial 06 逻辑设备与队列
  • 原文地址:https://www.cnblogs.com/lyang-a/p/14949300.html
Copyright © 2011-2022 走看看