软件测试之网络基础知识

网络基础知识初认识

OSI七层模型及数据传输过程

  • 是ISO组织在1985年研究的网络互连模型。其目的就是推荐所有公司使用这个规范来控制网络,这样所有公司都有相同的规范,就能互联了。–互联网
    OSI参考模型及各层的解释
  1. 物理层 ,实现两台机器互联,机器和机器之间怎么通信?提供互联的物理链路,物理介质,网线(双绞线),光纤,无线电波——基本连接。形式存在?0101二进制,电信号,发送(数据格式:比特流)。
  2. 0101比特流其实是没什么意思的数据,变成有意义的数据流? 数据链路层 1.对比特流进行分组处理,8位一组–一个字节,依次按顺序发送数据,2.怎么确认收到的该数据是发送给我的,定义MAC地址,–网卡独有地址即网卡“身份证”,以太网、适配器、WLAN无线网卡的标识唯一的物理地址,寄件人+地址(源MAC地址),收件人+地址(目的地址);数据格式:帧,字节流。
  3. 网络层 主机A-B,C-D-E-主机F,非直接连接/距离远、路径多条最近的路的主机该如何实现通信?如何知道对方的MAC地址?1.定义ARP协议(address resolutin Protocol)通过IP地址知晓MAC,2.不在一个子网如何通信,判断两者是否在一个子网,–IP协议来判断;3.怎么选择最优路径?–一组协议,路由协议,静态路由,动态路由协议多种(RIP老、OSPF、BGP)
  4. 发送数据多、数据包大需要很长时间?中间网络中断,重传实现?如何确定数据包完整和正确?传输层1.对发送的数据进行封装,TCP/UDP协议,2.定义端口概念,寻找对应程序,实现数据处理;
  5. 会话层实现断点续传 功能,1.可以从校验点恢复数据进行重传–大文件;2.自动收发包和自动寻址的功能
  6. Windows10,MAC,Linux各种操作系统语法不一样 表示层 不同系统间要进行通信,如何实现?“翻译”:提供一种公共语言,使不同操作系统间进行通信;
  7. 字节流格式不好识别也不好操作 应用层 定义了各种应用协议规范数据格式,HTTP协议(页面),HTTPS协议(加密),FTP(文件传输协议),DNS(解析域名),TFTP,SMTP协议;
    在这里插入图片描述

TCP/IP四层模型 vs ISO七层模型

在这里插入图片描述

网络数据封装传输过程

  • 问题:在浏览器输入百度网址,浏览器返回了百度页面,这是如何实现的?
  • 在这里插入图片描述
  • HTTPS网址(基于TCP协议而非UDP)从应用层一路向下传输,到传输层封装一个TCP协议头部(端口443:为了发给百度服务器,判断用哪个应用程序进行处理);到网络层封装IP头部(源IP、目的IP(目的寻找对方主机IP地址):主机IP地址),也可判读是否在一个子网、寻址、做一个路由转发,DNS域名解析;到数据链路层,封装一个MAC地址(源、目的MAC地址):为了给对方的网卡发送数据以及为了让对方的网卡回数据;到物理层,转换为比特流,进行数据传输。
  • 百度服务器在物理层收到数据,一路向上进行寻找。对比特流进行重组,重组之后以以太帧的形式就能到数据链路层,进行有意义的识别,查看MAC地址是我的地址,拆开信封看到IP头部传给网络层,网络层拆掉IP头部看到TCP头部传给传输层,传输层看到发现是TCP头部发现是443端口交给上层应用协议,应用层发现是HTTPS百度请求消息,会给相应的响应消息(百度页面)。
  • 再通过一路封装传给主机A,主机A再通过一路解封装得到响应页面。

网络层重要协议

ARP协议工作原理

  • IP/域名方便记忆,但为了数据链路层的封装必须要知道MAC地址。

  • ARP–地址解析协议(Address Resolution Protocol),实现通过对方的IP地址(域名)寻找对方的MAC地址。

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

  • Wireshark抓包
    在这里插入图片描述
    在这里插入图片描述

  • 通过协议名称过滤

  • 在这里插入图片描述

  • 源MAC(该台电脑)和目的地址MAC

  • 在这里插入图片描述
    在这里插入图片描述

  • 全f的为广播消息,request:谁有他的MAC地址发给我

  • MAC全0填充不知道,只知道IP地址

  • 在这里插入图片描述

  • reply
    在这里插入图片描述

IP协议

  • 192.168.1.87 255.255.255.0–机器1
    192.168.2.77 255.255.255.0–机器2
    机器1和机器2他们能直接通信?
    1.确定主机是否同一个子网?因为只有在同一个子网的主机才能直接通信——在同一个网段,网络号相同子网同一个。192.168.0.1没有办法进行判断,子网掩码
    2.网络地址不一样==不在一个子网,不能直接通信;255.255.0.0,可以通信
  • IP(Inter Protocol),分配给用户上网使用国际协议的设备的数字标签,分为两大类:IVP4和IPV6
    IPV4:32位。二进制:11000000.10101000.00000001.00000001十进制:192.168.1.1–4个部分。子网划分
    IPV6:弥补IPV4地址池不够、数量很有限。128位–更多IP地址。十六进制:::(表省略若干个零)2001::ffdd:abcd;dcdf–了解
  • IP地址组成
    IP地址由32bit组成,分成4端并用“.”分割:192.168.0.1
    结构:IP地址=网络+主机号
    网络号;网络号标识的是一个子网,主机号表示的是子网中的某台主机。
  • 子网掩码
    作用:用来标识子网,必须跟IP地址一起存在。
    组成:子网掩码跟IP地址一样,也是由连续的1和0组成,连续的1表示网络地址,连续的0表示主机地址。只有网络地址相同的主机在同一个子网,才能直接通信。
    表示方式:255.255.255.0,或者/24
    11111111.11111111.11111111.00000000
    192.168.0.1

路由协议及路由表

  • 问:不在一个子网,如何通信?及最优路径
    答:路由协议
  • 路由协议–查找路由表,怎样转发数据包
    路由协议(Roting protocol)指定数据包转送方式的网上协议。
    一组协议 路由协议。
    静态路由:目的地址–指定下一跳 --默认路由0.0.0.0 0.0.0.0通配配(主机–默认网关,做详细的路由选择)
    动态路由协议(RIP v1和v2,OSPF,BGP)。配置之后,动态学习路由条目 --路由表
  • route print路由表打印
    在这里插入图片描述
    主机路由:怎样看数据转发
    224.0.0.0组播地址,2552.255.255.255广播地址
    网关:下一跳去往地址要找谁,帮助转发这个动作的设备
    接口:当前设备从哪个接口转发出去
    跃点数:路由转发优先级,越小代表优先级越高
    在链路上:直连的

传输层协议

TCP协议概述

  • TCP(Transmission Control Protocol)传输控制协议,顾名思义,就是要对数据的传输进行一定的控制。

在这里插入图片描述

  • TCP头部内容
    定义了两个端口:源端口和目的端口,寻找相应的应用层协议,应用程序处理数据包。
    序号:TCP数据包的编号,TCP数据包过大时,分段(10段 1.2.3…10)–依次按顺序重组,seq==1
    确认号:acknowledge number。服务器能够回应?–存在于确认消息里。与序号的关系:依据序号来编,ack(确认号)==1+1=2 seq+1表示服务器期望收到你下一个包的序号。
    状态控制码(code control flag):标志位,—信号灯 1–亮 0–灭 ——表示数据包类型
    六个标志位
  • TCP协议的实现原理
    HTTP和HTTPS协议:基于TCP协议:client–百度服务器:TCP协议–完成交互和连接,才能进行具体应用HTTP和HTTPS的协议交互,前提和基础。
  • TCP协议连接?TCP建立连接请求:TCP三次握手,四次挥手–断开连接
  • 在这里插入图片描述
  • 状态控制码:标志位,表示数据包类型。
    ACK(acknowledge):确认位。=1,表示这个消息是一个确认消息。
    RST(REST):重置。=1,表示这个消息要被释放连接,TCP连接出现了错误。主机服务器崩溃,断开了连接。请重新建立连接。
    SYN(synchronous):同步。=1,表示这个消息是:1.一个发起连接的消息;2.确认接受连接。
    FIN-Final:正值。=1,表示发送报文结束了完毕了,释放这个连接。–TCP四次挥手。
  • 三次握手:请求连接消息,确认消息(包自己的序号为k),确认消息(非SYN包,不置位)
    后续:数据发送报文。
    还表示了服务器和客户端三次握手的状态,closed(关闭),syn_sent(把syn发完的状态),listening(监听状态),syn_Revd(收到syn包),estabished(连接建立好)
  • 四次挥手:释放连接请求,确认消息,释放连接,确认消息
    状态:estabished(连接建立状态),FIN_wait_1(客户端发送之后进入等待),Closed_wait_1(服务端发送确认后,这个连接会被关闭,等待关闭状态),FIN_wait_2(服务器收到断开连接包,等待sever发FIN包),Last_wait_2(客户端发FIN包,最后等待连接,客户端确认包),TIME_wait(发送ack包,进行等待一段时间就关闭),Closed(一旦收到客户端ack,立马进入关闭状态),Closed(客户端确认sever已关闭,再关闭)
    连接成功被释放

Wireshark 进行TCP三次握手

  • 抓包
  • 在这里插入图片描述
    在这里插入图片描述
  • 右击,追踪流,这一个链接,TCP的报文
    在这里插入图片描述
  • 看到详细报文显示,MAC,IPV4:源网卡IP,目得服务器IP地址
    第四层传输层,源端口,目的端口
    在这里插入图片描述
    Sequence number:序号,Acknowledge number:确认号,Flags:标志位
  • 在这里插入图片描述
    ack=0,第一个包不是确认包,reset位=0没有重置,syn=1发起连接请求或确认连接请求,FIN:断开时才置1
  • 客户端给服务器返回的确认消息
    在这里插入图片描述
    Sequence number:0,Acknowledge number:0+1=1
    ack置1(set,打标签),syn(确认连接消息)置1,端口也转换过来了
  • 在这里插入图片描述
    在这里插入图片描述
    seq=1(等于上一个确认号),Acknowledge number:0+1=1
    在这里插入图片描述
    在这里插入图片描述

wireshark详解四次挥手

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • FIN置位,ack位被置位(TCP每发一个数据包都要对上一个数据报文确认,四次挥手不关心)
  • 服务器的回应消息
    在这里插入图片描述
  • ack=seq+1
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ack位被标记
  • sever端发ack
    在这里插入图片描述
    seq=ack(期待下一个发过来的序号)
  • sever端再次发FIN,还是一个sever发的,序号和确认号还是一样的,但是确认要释放连接的请求
    在这里插入图片描述
    FIN置1
  • client发确认消息,确认号ack加一
  • 在这里插入图片描述
  • FIN-ACK-FIN-ACK
  • HTTPS加密过程
  • 在这里插入图片描述
  • 在这里插入图片描述

UDP协议概述

  • UDP协议头部结构
    在这里插入图片描述
  • UDP(User Datagram Protocol) 用户数据报协议
    原端口和目的端口,给应用层寻找对应应用程序进行处理,长度,校验和,数据部分
    无序号和标志位,怎么建立连接?
    UDP协议与TCP不同的是,不会先去建立连接,无连接传输协议,不可靠协议。用其处理数据可能会发生丢包或传输错误(在UDP中是允许的),在TCP中没收到对方确认号,会进行重传。而对于UDP,不会发确认,也没有连接就是不可靠。
  • 在什么场景会使用?例如HTTP、HTTPS不会使用UDP。
    1.一些应用、场景不需要可靠机制,而只要求传输速度快。优点是速度很快。
    2.如流媒体、多媒体游戏、IP电话–UDP协议封装(音频视频)
    3.资源消耗特别小
    (TCP完整且可靠)相反UDP协议:DNS(可用TCP也可UDP,默认UDP)、SNMP(简单网络管理协议)、DHCP(静态配置反义词、动态获取IP地址)、RIP(路由协议)
    哪些应用基于TCP协议:HTTP/HTTPS、FTP(文件传输协议)

Wireshark详解UDP协议

  • 以DNS为例,访问一个域名,做域名解析。
    在这里插入图片描述
  • 在这里插入图片描述
  • 协议具体内容,首先发域名请求,其次这是一个网关承载着域名解析的作用。
  • 在这里插入图片描述
  • 原目端口,数据长度,校验码,时间戳。53是DNS端口
  • 域名系统,发起域名请求。
    在这里插入图片描述
  • 网关回复,域名解析
    原目端口
    在这里插入图片描述
  • 内容,Response被标记了,表示我是一个响应消息。
    在这里插入图片描述
  • Answers,答案,一级一级查找,最终把IP返回客户端
    在这里插入图片描述
    在这里插入图片描述
  • ping都是跟IP地址进行交互
    在这里插入图片描述

TCP和UDP协议的区别

  • 1.TCP是面向连接的,所有TCP三次握手和四次挥手过程,UDP无连接协议;
    2.TCP因为有可靠的连接机制可靠协议;UDP没有连接和确认机制会丢包,会出错,不可靠协议;
    3.TCP协议:如果数据量很大,防止丢包,保证正确重传;对数据准确性很关心;UDP:量小
    4.速度:TCP协议速度很慢,传输效率很低;UDP:速度很快,传输效率很高。
    在这里插入图片描述

应用层重点协议

HTTP协议之请求报文

  • HTTP(Hyper Text Transfer Protocol)超文本传输协议
    HTTP协议是基于TCP协议,默认是80端口。—可靠的协议
    功能:用来规定客户端和服务端的数据传输格式。
    特点:基于请求与响应模式的、无状态、无连接的应用层协议。
    在这里插入图片描述
  • 访问论坛页面,抓包
    在这里插入图片描述
  • 追踪某一流,过滤HTTP,显示报文内容
  • 粉色:客户端发的请求
    在这里插入图片描述
  • 一般包括四个部分。
    1.请求行:请求方法+URL(统一资源定位符)+HTTP的版本信息:1.0–老,1.1–最常用,2.0–推广
    GET(获取信息和资源)/POST(发送提交数据)
    在这里插入图片描述
    2.请求头部信息
    User-Agent :Windows,浏览器版本(内核),反爬虫机制(不带可能会被认为是爬虫)
    Host:论坛主机客户端信息
    Accept:识别的数据类型
    Author:安全方面
    Cookie:保持会话–无状态特点
    Referer:防止盗链
    content-type:HTTP接口
    Cache、Pragma:缓存机制,不no chach再重复发送
    在这里插入图片描述
    做测试时,和开发确认需求要包括哪些头部字段。
    空一行,格式要求,表示请求头部结束。
    GET请求一般没有请求体

HTTP响应报文

  • 蓝色:响应消息
    在这里插入图片描述
  • 1.响应行:HTTP版本信息,HTTP/1.1 +200:(HTTP状态码)+OK:状态码原因描述
    状态码:1xx-接受的请求正在被处理
    2xx-请求正常处理完毕
    3xx-重定向(访问一个页面,重定向另一个URL上面)302,304(缓存)–没有改动,不处理
    4xx-客户端的问题导致的错误,网址错误-404,403,401
    5xx-服务器的问题导致的错误,503
    2.响应头部
    在这里插入图片描述
  • 响应正文,服务器真正要返回的页面内容
  • 查看页面源代码,与其相同。
    在这里插入图片描述
    3.空一行,响应结束

HTTP无连接特点及其解决方案

  • HTTP:无连接应用协议(不会保持连接)
    1.限制每次连接只处理一个请求
    2.服务器处理完客户的请求,并收到客户的应答,即断开连接。
    初衷:给服务器处理用户量(十万、上百万)页面请求,单个用户间歇性比较大(突发性、瞬时性),数据没有关联性—资源浪费。=设计释放连接。
    问题:网页越来越复杂,–图片—效率很低===connection:keep-alive。
  • Keep-Alive设置:
    1.开启:Connection:keep-alive,会发起Keep-Alive的连接请求+长连接。HTTP1.1(默认打开的)。
    — 不需要重新建立连接。
    2.关闭:在http头中设置Connection:close,即可关闭。
    3.设置连接时间:
    在http header中设置Keep-Alive:timeout=5,max=1000
    timeout是超时时间,单位秒,超过这个时间后就断开连接。–释放
    max是最多的连接次数,若超过这个次数就强制断开连接。

HTTP无状态应用协议

  • 对事物处理没有记忆能力,服务器不知道客户端是什么状态;给服务器发送HTTP请求之后,服务器回应之后,不会有任何记录;
    每个请求都是独立的。
    服务期处理后续请求,需要用到前面请求的信息 --数据重传
    优点:释放了服务器压力
    缺点:重传–重复消息内容,增大数据量—资源浪费
    动态交互:淘宝:购物车 —商品信息;login–后续操作(充值)—cookies,session。
  • Cookies:将前面请求信息保存成一个临时文件 —cookies值。—存放在浏览器里
    淘宝购物车:不同商品信息写进入cookies;
    登录:充值:login–>充值。(获取登录信息后充值)。可以把登陆的账号信息—cookies值。
    简化登陆手续。
    关闭浏览器;被删除,清除历史。
  • Session:永久的cookies值(不会被轻易删除)。session ID(会话编号)—保存服务器上,–传递给客户端,保存在内存里。
  • 问题:资源占用。session超时时间。清除session ID。

HTTPS协议详解

  • 问题:HTTP协议问题:抓包时,发送数据都是明文的无加密;可能有第三者进行窃听,截取数据包,伪装客户端跟服务器进行交互。–没有任何机制确定双方身份;进行篡改数据,服务器也是不知道的。缺点:存在安全隐患。
    — HTTPS协议
  • HTTPS(Hypertext Transfer Protocol Secure),超文本传输安全协议,是以安全为目标的HTTP通道,简单讲师HTTP的安全版。它加密数据并确保其机密性(–1.加密,数据密文),可保护用户在与网站交互时免于窃取个人信息和计费数据。–2.身份认证;3.防止信息被篡改,保证信息完整性。三个安全保障
  • 报文结构区别
    在这里插入图片描述
  • 披着SSL的外壳的HTTP协议:HTTP+加密+身份认证+完整性保护=HTTPS
  • 过程与原理
    在这里插入图片描述
  • 证书由权威机构颁发,客户端在本地生成了个秘钥(加密数据),并且把秘钥发送给服务器
  • SSL建立好的安全通道基础上再进行HTTP报文发送
  • 具体过程:
  • Handshake hello,Certificate证书,浏览器:客户端。
    在这里插入图片描述
    在这里插入图片描述

Wireshark详解HTTPS协议

  • 访问腾讯课堂,https
    -在这里插入图片描述
  • 过滤,追踪TLS流
    在这里插入图片描述
  • 四层协议,原目端口,目的端口:443
    TLS协议,握手协议,Client Hello,支持版本:TLS 1.0(SSL协议版本)
    在这里插入图片描述
  • SSL协议版本:SSLv3、TLS1.0,TLS1.2(用的多)
    客户端把支持的版本都列在这里
    所有支持的加密套件
    在这里插入图片描述
  • Server回复Server Hello
    选择共同支持的加密套件版本,握手类型
    在这里插入图片描述
    在这里插入图片描述
  • Server发布所有证书消息发送给客户端
    在这里插入图片描述
  • 客户端拿到后做一个验证后,生成本地随机密码,通过Client key Exchange告诉服务器后面报文要进行加密了
    在这里插入图片描述
  • 客户端发送Client key Exchange、加密报文类型,加密密钥、摘要信息
    在这里插入图片描述
  • 握手结束,开始发送数据(HTTP数据包),内容保密
    在这里插入图片描述

HTTPS协议安全性总结

  • SSL协议:握手过程
  • 加密–秘钥;身份认证–证书(申请)==双向认证(按照需求);完整性保护:哈希算法–计算一个哈希值,验证消息的完整性。摘要信息的对比,服务端自己计算的摘要信息是否与客户端发过来的摘要信息是否相同,来保证数据是否被篡改。
    在这里插入图片描述

HTTP和HTTPS协议对比

  • 特点及优缺点
    HTTPS:TCP握手+http请求响应+SSL握手==速度慢很多,对服务器性能要求特别高,CPU内存–计算;
    证书:权威机构颁发–收费;年费=1000左右
    私人信息,敏感信息–不是很在意
    在这里插入图片描述
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值