TCP/IP(二)- 通识

如果你喜欢小编往期内容,关注一下小编公众号 - 无线技术栈,或者私信回复"802.11"获取Wi-Fi学习方法和资料,也可以和小编交流一下经验~

作为一名Wi-Fi研发工程师,断网断流问题的拆解可谓是家常便饭,那么如何练就一身手到擒来的操刀本领呢,跟着小编一点点解开它的面纱,我计划将从协议基础知识、协议规范、协议栈源码分析、debug手段、日志分析…一点点开搞~

序言

本文旨在介绍一下TCP/IP涉及的所有基础知识,为大家从宏观上俯瞰TCP/IP提供一个基石,文档属于《TCP/IP图解(第五版)》的精简版本。

专业术语

缩写

全称

WAN

Wide area network广域网

LAN

Local area network局域网

TCP

Transmission controll protocol传输控制协议

IP

Internet Protocol

ISP

Internet Service Provider

IX

Internet Exchange

NOC

Network Operation Center

一 基础知识

提到通信网络,不得不想到TCP/IP七层架构,如下图:

图片

1.1 网络出现的背景

网络设备的广泛使用,处在现在的科技时代,智能设备已经不再讲究单打独斗,而是倾向于“万物互联”的生态理念,身边的电脑、手表、笔记本、电视、汽车...都离不开网络;

网络模式的切换,计算机诞生之初,每一台机器都是一个独立的设备,之间不能互相通信,如下图计算机1-3之间没有任何关联,用户如果想切换计算机只能移动实现,想到新中国成立之初,我们在研发核弹、核潜艇...是需要经过大量的计算从而得到科学的结果,但是那个时候国内计算机屈指可数,科研人员想要计算数据时只能来回奔波;

独立模式:

图片

互联模式:

这种模式下不同的计算机之间可以进行信息共享;

图片

通信方式的转变,最初的计算机通信是基于有线方式,比如将相同业务的计算机通过有线连接在一起,从而实现信息共享,形成一个局域网,而在新型的网络通信中,不再有此局限,用户可以访问到任何计算机的信息,就像我们坐在家里就可以访问到国务院下发的最新资讯;

有了网络之后,万物互联将不再是口号,而是做到了真真正正的信息共享,全球”一家“,巴以冲突的最新战况我们动动手指就能看到;

计算机网络规模分为两种:

1.WAN(wide area network)广域网

广域网是由多个局域网组成,就像我们几个人可以组队和其他城市的队伍竞技;

2.LAN(local area network)局域网

顾名思义,局域网就是一个特定区域或者网域环境,可以由交换机、路由器、计算机组合,就像我们几个人在一个网吧玩红警;

1.2 协议必要性

协议为多设备之间提供了一种规范,要求所有的设备都必须按照固定的规范执行,这样高度一致性,不管是什么厂商、平台…都可以正常通信;

1.3 OSI七层架构及作用

应用层:主要有各应用主导开发,例如邮件协议、文件传输协议;

表示层:负责将应用信息转化为可以利用网络传输的格式,例如在双端之间传输声音、视频等信息;

会话层:通信管理协议,负责建立和断开通信连接;

传输层:负责端到端的数据传输,TCP/UDP是典型代表;

网络层:主要负责地址管理域路由选择,IP是典型代表;

数据链路层:双端直接传输的数据,负责将数据转换为比特,802.11是典型代表;

物理层:负责将数字信号转化为电信号/光信号并进行传输;

1.4 网络的构成要素

一个完整的网络至少需要包含以下几个要素:

网卡:是计算机联网的设备;

中继器:从物理层上延长网络的设备,可以对信号进行放大和传输;

网桥/2层交换机:从数据链路层上延长的设备;

路由器/3层交换机:通过网络层转发分组数据的设备;

4~7层交换机:处理传输层以上各层网络传输的设备;

网关:转换协议的设备;

1.5 传输数据和吞吐量

传输速率:(bps)

在数据传输过程中,端到端之间数据流动的物理速率就是传输速率,传输速率高不是指单位时间流动的数据速率有多快,而是指单位时间数据的传输量有多少,举个例子,低速率就好比日常生活中车道少的公路,汽车通路的时间就比较久,而高速率就好比车道多的公路,汽车通过就比较快,那传输速率就好比这一段时间通过的车辆;

传输速率就可以说是带宽,带宽越大,传输速率越大;

那对wifi而言,影响数据传输数量的因子有哪些呢,如下表格,列出来所有的因子,我们在拆解一个吞吐问题时,首先就需要check这些硬性条件是否满足(带宽、空间流、调制解调方式、GI等等):

图片

吞吐量:

端到端之间实际的传输速率被称为吞吐量,影响吞吐量的因素有这么几个:

(1)带宽;

(2)CPU处理能力;

(3)网络的拥堵程度;

(4)报文中数据字段的占比(不含报文头,只计算数据段本身);

…这几个因素也将作为后续排查网络断流问题的外部因素;

2 TCP/IP基础知识

TCP/IP更广义的定义并不是单单指TCP/IP两种协议(当然就是这么说也没毛病),但是他们往往是指一个协议家族:

图片

定义协议的组织被称为是RFC,如何从网络中获取协议文档参考链接如下:

RFC协议获取指导

2.1 新协议标准化流程

图片

2.2 TCP/IP通信流程
2.2.1 数据"身份证"

根据OSI七层架构来看,每一个数据包从应用发送给接收端,都需要经过每一层协议栈层层包装,如下图:

图片

每一层都会对所发送的数据进行封装处理,添加一个首部,这个首部通常包含该层必要的信息,比如发送的目标地址以及协议的相关信息,数据包 = 协议头 + 数据;(上一层的整个包都会被下一层视为其数据包)

图片

这里我们可以抓一份数据报文来看:

图片

2.2.2 发送数据包

我们举个例子,我们通过飞书给某位同事发送一个文件压缩包/语音/文字,看看各层都做了什么:

(1)应用程序处理

在文本框编辑好文字之后,从点击发送图标开始,应用程序开始建立TCP连接,当然,他首先会对要发送的内容进行编码;

(2)传输层

这里的传输层也可以理解为TCP协议,传输层负责建立、断开TCP连接以及发送数据;

TCP收到应用发来的数据后,会做以下事情:

为数据添加TCP包头,包头中将包含以下内容:

图片

将封装好的数据发送给IP;

(3)网络层

这里可以理解为是IP协议,IP负责以下内容:

将收到的TCP包整体当作数据包并添加IP包头,这里将会包含源/目标MAC地址,如果不知道MAC地址,将会通过ARP协议进行寻址,包头内容如下:

图片

将封装好的数据发送给驱动程序,也称为数据链路层,这里才开始真正的数据发送;

Mark:这里值得注意的是IP包头中的TTL字段,他表示这个字段在穿过多少个路由之后被抛弃,当IP没穿过一个路由器就会-1,当他变成0之后就会被自动抛弃;

(4)数据链路层

这里基本是驱动程序,像802.11、以太网、数据网协议都在这一层,拿802.11举例,驱动程序在拿到数据包之后,负责以下事情:

给网络层数据包加上802.11协议包头以及标志802.11的协议,截图如下:

图片

将封装好的数据包交给物理层传输给数据端;

数据包从应用出来后,经过每一层,都会添加一个包头,802.11包头、IP包头、TCP包头以及应用自己的包头,在链路层还会添加一个包尾;每个包头中至少包含两个信息:

(1)发送端和接收端的地址,数据链路层是MAC地址,网络层是IP地址,传输层是端口号;

(2)上一层协议的类型;

图片

Mark:传输层和数据链路层都有校验数据完整性的功能;
2.2.3 接收数据包

数据接收过程与发送过程相反,下边简单描述下各层协议的任务;

(1)数据链路层

从802.11数据包中找到MAC,判断是否是发给自己的,如果不是就直接丢弃;

查找包头中类型域,确认包类型交给上一层对应的协议处理;

(2)网络层

从IP包头里解析IP地址确认是否是发给自己的包,如果不是直接丢弃;

查找包头中类型域,确认包类型交给上一层对应的协议处理;

在有路由转发的情况下,接收端地址往往是路由设备的地址,此时需要根据路由控制表转发给对应的终端;

(3)传输层

计算校验和,确认数据是否被损坏;

检查接收数据序号、检查端口号,确定具体的应用;

传输给对应的应用,注意数据校验完之后会发送一个ACK确认,如果这个ack没有到达,就会重传;

技术很枯燥,一口吃不成大胖子,读到这里不妨先停下来消化一下,下文更精彩,稍后呈现~

如果读到这里,你觉得有所收获,就关注下小编的公众号,未来一起进步~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值