TCP/IP协议该如何学习?

说起网络协议,我相信N多N多测试小伙伴都hold不住它,也有很多学习软件测试的初学者,倒在了它的面前。如果你不是计算机科班出身,或者你是科班出身,但在大学里,没有好好学习,那么,你大概率会折戟沉沙……

在本期项目实战中,我将尽可能的、最大限度的、用通俗易懂的语言讲解网络协议;同时,我也会搭配上手操作,助你加深印象。

怎么说呢,骗个关注,不过分吧?

TCP/IP协议理论

1. TCP/IP协议是一大堆协议的集合

比如熟悉的TCP(传输控制协议)、IP(网际协议)、HTTP(超文本传输协议)、HTTPS(安全的 HTTP)、SSL(安全套接字层)、SMTP(简易邮件传输协议)、FTP(文件传输协议)、NTP(网络时间协议)等等。

只不过,因为TCP、IP协议是两个很重要的协议,故用他俩命名了。

2. TCP/IP协议分为四层

即,数据传输一次主要经历以下4个步骤,从上到下为:应用层,传输层,网络层,链路层。

还有一种是教科书里常见的的OSI七层模型

作为测试,无需过多关心七层OSI模型,掌握TCP/IP的四层即可。

TCP/IP协议实战

访问程序员小谭的官网http://testtalking.com,并用Wireshark软件(自行下载并安装)抓包。

看图,和下面的理论做对应理解。

1. 应用层

作用定义数据格式并按照对应的格式解读数据。

操作:选中Wireshark抓的包,展开Hypertext Transfer Protocol。我们能看到,应用层定义了HTTP协议来规范数据格式,定义了请求数据格式为Accept,当对方接收到请求后,就知道该用什么格式来解析和处理。

理解:你想白嫖程序员小谭的项目,我给了规则——必须关注我。那么,你就必须要关注我。

2、传输层

作用定义端口,标识应用程序身份,实现端口到端口的通信

操作:展开Transmission Control Protocol。我们可以看到,TCP协议定义了80端口,当数据包到达主机(testtalking服务器)以后,就可以根据端口号找到对应的应用。

理解:你要关注程序员小谭。但我有程序员小谭、小谭测试、测小谭试几个号,可不能关注错了。

另外,这里还涉及到一道高频面试题:TCP和UDP的区别。

他俩,最主要的区别就在传输层。UDP协议没有确认机制,数据包一旦发出,无法知道对方是否收到,可靠性差;TCP协议可以简单理解为有确认机制的UDP协议,即每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。

理解:UDP——你点了关注,但并不知道真的关注上了没;TCP——你点了关注,OK,小谭确认了你的眼神。

tips:请记住TCP的这个特点,下一篇文章会用到!

3、网络层

作用定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。

操作:展开Internet Protocol。这个简单,IP协议定义了地址,告诉你数据要传输到哪个目的地(IP为121.5.121.205的testtalking的服务器)。

理解:关注了程序员小谭,你和小谭勾搭上了。

4、链路层

作用对电信号进行分组并形成数据帧,并以广播的形式通过物理介质发送给接收方。

操作:展开Ethernet。我们可以看到,网卡Ethernet地址就是数据包的发送MAC地址(Src:本机电脑)和接收MAC地址(Dst:testtalking服务器)。

有了地址以后,以太网采用广播形式,把数据包发给接收方。接收方会读取目标MAC地址(Source),并和自己的MAC地址进行对比。如果相同就做下一步处理;如果不同,就丢弃这个包。

没了。

四层协议,就是这么简单!再附送一张让你脑壳疼的分层图。

tips:看看就好~

动图封面

三次握手和四次挥手理论

说起测试工程师的面试,有一道经典题——什么是(为什么要)三次握手和四次挥手。

曾几何时,我也为这道题折过腰。但时过境迁,现在再来讲解它,so easy~

首先,我们从现实生活中理解:

1、握手:同他人建立关系;

2、挥手:拜拜了,您勒。

其次,再从理论层面理解:

1、三次握手:建立可靠的连接。使双方能确认自己与对方的发送与接收功能正常。

2、四次挥手:断开连接。但是,握手了三次,为什么要挥手四次呢?这块搭配下面的实战更好理解,所以我先卖个关子,不跟大家讲太多。

三次握手实战

访问http://testtalking.com网站,用Wireshark抓首页的GET请求,然后点击鼠标右键,追踪TCP流。

筛选命令:http.request.method==GET && ip.dst==121.5.121.205
121.5.121.205 是 http://testtalking.com服务器的ip

追踪后,你可以对照着我的图片,查看到三次握手和四次挥手的记录。

①source指报文发起方
②121.5.121.205是 http://testtalking.com服务器的ip,打码的xxxx.238是我本机电脑的ip。

上文我们说道,TCP在收发数据前,必须和对方建立可靠的连接。建立稳定的TCP连接,需要三次握手,即,

  1. 读者:小谭,你听得到么?我想给你三连点赞。
  2. 小谭:我听到你的承诺了,说话算数!
  3. 读者:小谭,我要三连点赞了。

1、第一次握手

读者:小谭,你听得到么?我想给你三连点赞。

建立连接时,客户端(你的浏览器)发送 SYN 报文到服务器(testtalking),等待服务器确认。

SYN: 同步序列编号 Synchronize Sequence Numbers的简写

客户端向服务器发送连接请求包时:

①将SYN Set为1

②发送序号 Seq (Sequence number)为0

2、第二次握手

小谭:我听到你的承诺了,说话算数!

服务器收到客户端发过来的报文,并且因为SYN=1,服务器知道客户端想建立连接,于是开始处理:

①服务器设置确认序号ACK为1

ACK:确认序号 Acknowledgement Number的简写。
ACK是如何计算的?ACK = Seq(第一次握手的Seq值)+1 = 0+1 =1

②设置SYN为1

③将该TCP报文(发送序号Seq=0)发送给客户端。

3、第三次握手

读者:小谭,我要三连点赞了。

客户端收到服务器的SYN+ACK包,也会给服务器发送一个确认序号ACK,发送后,客户端和服务器TCP连接成功,完成三次握手。

ACK = 发送序号Seq(第二次握手的)+1 = 0+1 =1

综上所述

一个完整的三次握手为:客户端请求(SYN)-> 服务器应答(SYN+ACK)-> 客户端确认(SYN)。完成三次握手,客户端与服务器开始传送数据。

嗯嘛,你可以给本文点赞了~

此时,你再看这张网图,是不是能看懂了?

四次挥手实战

TCP建立连接要三次握手,但断开连接为什么要多一次呢?

说得简单点:告别是双向的,且谁都可以发起,并且对方要确认。A告诉B,B确认,B再告诉A,A确认,一共四次。

以本次实战举例,挥手阶段,服务器是首次发起方。即,

  1. 小谭:朋友们,下篇文章再见。
  2. 读者:好的。
  3. 读者:小谭,下篇文章我们继续点赞。
  4. 小谭:好的。

1、第一次挥手

小谭:朋友们,下篇文章再见。

服务器(testtalking)给客户端(你的浏览器)发送TCP包,用来关闭服务器到客户端的数据传送,即,

①将FINACK置为1

FIN:Finish的简称。代表要关闭连接。

②发送序号Seq为482(你的可能不是482,对照着看)

③确认序号Ack为803(同上)

2、第二次挥手

读者:好的。

客户端收到服务器的FIN后,会做确认:

①发回一个ACK,置为1

②发送序号Seq = 803(为收到的第一次挥手确认序号Ack)

③确认序号Ack= 483(为收到的第一次挥手发送序号+1=482+1=483)

3、第三次挥手

读者:小谭,下篇文章我们继续点赞。

客户端(你的浏览器)给服务器(testtalking)发送TCP包,用来关闭客户端到服务器的数据传送。

①发送一个FINACK,置为1

②发送序号Seq = 803(你的可能不是803,对照着看)

③确认序号Ack = 483(为收到第一次挥手发送序号+1=482+1=483)

4、第四次挥手

小谭:好的。

服务器收到客户端发送的FIN之后,

①发回一个ACK,置为1

②发送序号Seq = 483 (为收到的第一次挥手发送序号Seq+1=482+1=483)

③确认序号Ack=804(为收到的第三次挥手的发送序号Seq+1=803+1=804)

综上所述

一个完整的四次握手为:A请求断开(FIN+ACK)-> B应答(ACK)-> B请求断开(FIN+ACK)-> A应答(ACK)。完成四次挥手后,客户端与服务器断开连接。

此时,你再看这张网图,是不是能看懂了?

三次握手和四次挥手总结

TCP为什么要三次握手和四次挥手?

标准答案:TCP是面向连接的通信方式, 采取此方式能大大提高数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了连接, 为数据正式传输打下了可靠的基础。

个人理解答案:

三次握手:A说我来了。B说你来吧。A说那我来了。

四次挥手:A说我走了。B说你走吧。B说我也走了,A说你走吧。

HTTP和HTTPS

原计划,我本来打算写写HTTP和HTTPS,但后面我发现没多大必要。

一是因为HTTP的知识点比较简单,你去网上随便搜一两篇文章就能入个门;二是这块不好写实操教程,要掌握它们,就一条路:

  1. 先自己看知识点
  2. 跟着知识点,访问一个http://的网页和一个https://的网页,研究研究
  3. 再回去看一遍知识点

所以,掌握HTTP和HTTPS的关键便成了——去哪儿看知识点,看什么样的知识点。

 题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:新职业在线学习平台发展报告

  • 2023届全国高校毕业生预计达到1158万人,就业形势严峻;
  • 《新职业在线学习平台发展报告》 ,显示国内Python人才缺口高达40万,而人工智能人才目前缺口超过500万。

Python的优点:

易于学习:简单、易学、对新手极度友好。

免费开源:Python的所有内容都是免费开源的,不需要花一分钱就可以免费使用Python,并且可以自由地发布这个软件的拷贝、阅读其源代码、对其做改动、把其一部分用于新的自由软件中;
可扩展:Python除了使用Python本身编写外,还可以混合使用像C语言、Java语言等编写;

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。

  • 一方面是学习时间相对较短,学习内容更全面更集中。
  • 二方面是可以找到适合自己的学习方案

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。


👉100道Python练习题👈

检查学习结果。

在这里插入图片描述


👉面试刷题👈

在这里插入图片描述

 👉python副业兼职与全职路线👈

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码 即可领取↓↓↓在这里插入图片描述

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值