网络基础(四)--- IPV4,OSI七层参考模型,TCP/IP参考模型,数据的封装与解封装

目录

1. 跨广播域的通信

2. IP地址(IPV4)

2.1 IP地址分类

2.2 特殊IP地址

2.3 子网划分/可变长子网掩码(VSLM)

2.4 无类域间路由(CIDR)

3. OSI七层参考模型

4.TCP/IP模型(协议簇)

5. 封装和解封装

5.1 应用层

5.2 传输层

5.2.1 TCP协议封装的数据结构

5.2.3 UDP数据结构

5.2.4 三次握手机制

5.2.5 四次挥手机制

5.2.4 TCP保证传输可靠性

5.3 网络层

5.4 数据链路层

5.5 解封装


1. 跨广播域的通信

30d45e328e3b4332ba6a36c8ea71b20f.png

       如果PC1要访问PC3,PC1和PC3在两个不同的网络,不同的广播域。三层的源IP地址是PC1的,目标IP地址是PC3的,二层源MAC地址是PC1,目标地MAC址未知。因为是跨广播域,需要找网关,所以数据需要先发送给路由器,为了找到左边网段网关(GE 0/0/0)接口的MAC地址,先用ARP协议通过网关的IP地址获取到网关的MAC地址。此时把目标MAC地址给GE 0/0/0的MAC地址,数据到达交换机,然后查MAC地址表,如果查到对应的记录则单播给GE 0/0/0,如果没有查到则广播,总之路由器就收到了来自PC1的数据。路由器收到数据后开始解封装数据,然后看到二层的目标MAC地址是自己,则继续看三层的目标IP地址不是自己,是自己GE0/0/1接口这个广播域的一台设备,然后转发,重新封装的数据:源MAC地址是路由器GE0/0/1的,目标MAC地址还是未知,但是此时满足ARP协议,则通过ARP协议获取一下PC3的MAC地址,然后此时知道目标MAC地址之后,数据发给交换机,然后查MAC地址表,如果查到对应的记录则单播给PC3,如果没有查到则广播。如此,就实现了跨广播域的通信。

2. IP地址(IPV4)

2.1 IP地址分类

A、B、 C、 D、 E五类:

  • A、B、C类是单播地址,用户可以使用的地址:既可以做源IP使用也可以做目标IP使用;
  • D类是组播地址,无掩码:只能作为目标IP使用;
  • E类保留地址,用于科研(美国军方)。

通信方式:

  • 单播:一对一的通信。
  • 组播:一对多的通信(一个通信组)。一个组播地址可以代表一个组内的多个设备
  • 广播:一对所有(一个广播域中的所有)

① A类地址:0XXX XXXX ---- 第一位二进制固定为0

        0000 0000 - 0111 1111 ----- 0-127之间,真正可用的地址1-126

        网络掩码固定为255.0.0.0 ---- 前8位为网络位,后24位为主机位

        A类地址里有2^(8-1)(2个不可用)个网段,一个网段内有2^24(2个不可用:主机位全为0+主机位全为1)个IP地址

        例:10.20.30.40 -- 255.0.0.0

② B类地址:10XX XXXX. ---- 前两位二进制固定10

        1000 0000 - 1011 1111 ----- 128-191之间

        网络掩码固定为255.255.0.0 --- 前16位为网络位,后16位为主机位

        B类地址里有2^(16-2)个网段,一个网段内有2^16(2个不可用:主机位全为0+主机位全为1)个IP地址

        例:172.1.1.1    255.255.0.0

③ C类地址:110X XXXX. ---- 前三位二进制固定110

        1100 0000 - 1101 1111 ----- 192-223之间

        网络掩码固定为255.255.255.0 ---- 前24位为网络位,后8位为主机位

        C类地址里有2^(24-3)个网段,一个网段内有2^8(2个不可用:主机位全为0+主机位全为1)个IP地址

        例:192.168.1.1    255.255.255.0

④ D类地址: 1110 XXXX. ---- 前四位二进制固定1110,无掩码

        1110 0000 - 1110 1111 ---- 224-239

⑤ E类地址: 1111 XXXX. ---- 前四位二进制固定1111,无掩码

        1111 0000 - 1111 1111 ---- 240-255

2.2 特殊IP地址

       1. 环回地址(本地机器测试):127.0.0.1 - 127.255.255.254;如果电脑无法上网时,可以通过ping命令查找到底是那出问题。先平自己的IP地址,未ping通自己的问题,ping通然后再ping网关的IP地址,未ping通则是可能是问题出在这个网关范围内,有可能是路由器有可能是交换机,ping通则可能是更大的范围。然后可以试试ping同一交换机上的其他设备,ping通则说明是在交换机到路由器这段出了问题,未ping通则说明是自己到交换机之间或者交换机出问题。

       2. 受限广播地址:255.255.255.255 ---- 受路由器的限制,只能做为目标IP使用;

       3. 直接(定向)广播地址:192.16.1.255/24 ---- 网络位不变,主机位全为1。 代表着该

(192.168.1.X/24)网段的所有用户,只能做为目标IP使用;    

       4. 网络号:192.168.1.0/24 ---- 网络位不变,主机位全为0的地址,描述一个网段,表示的是范围(192.168.1.X/24),而不是一个地址;

       5. 无效地址(保留地址):0.X.X.X 。0.0.0.0无效地址:①可以在没有地址时作为源IP地址使用(占位);②可以代表任意地址

       6. 本地链路地址/自动私有地址(link-local):169.254.0.0/24 ---- 当使用DHCP协议获取IP地址时未正常获取到,则自动分配一个自动私有地址。

2.3 子网划分/可变长子网掩码(VSLM)

192.168.1.0/24 --- 2个子网        借1位

192.168.1.0 0000000/25 --- 192.168.1.0/25(192.168.1.1 - 192.168.1.126)

192.168.1.1 0000000/25 --- 192.168.1.128/25(192.168.1.129 - 192.168.1.254)

172.16.0.0/16 --- 8个子网        借3位

1010 1100. 0001 0000. 0010 0000. 0000 0000

172.16.0.0/19                172.16.0.1 - 172.16.15.254

172.16.32.0/19              172.16.32.1 - 172.16.63.254

172.16.64.0/19              172.16.64.1 - 172.16.95.254

172.16.96.0/19              172.16.96.1 - 172.16.127.254

172.16.128.0/19            172.16.128.1 - 172.16.159.254

172.16.160.0/19            172.16.160.1 - 172.16.191.254

172.16.192.0/19            172.16.192.1 - 172.16.223.254

172.16.224.0/19            172.16.224.1 - 172.16.255.254

1111 1111. 1111 1111. 0000 0000. 0000 0000

2.4 无类域间路由(CIDR)

① 192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24

        192.168.00000000

        192.168.00000001

        192.168.00000010

        192.168.00000011

        192.168.0.0/22 ----- 超网

② 172.16.0.0/24、172.16.1.0/24、172.16.2.0/24、172.16.3.0/24

        172.16.0.0/22 ----- 子网汇总

3. OSI七层参考模型

OSI/RM ---- 开放式系统互联参考模型

       1977年,英国标准化协会向国际标准化组织
(ISO)提议要建立一个模型。1978年发布了这个临时版本,1979年稍作细化之后,成了最终的版本。

       OSI参考模型的核心思想是分层。属于同一层面的功能目的相同或者相似;属于不同层面的功能或目的具有明显的差别。每一层都在下层提供服务的基础上提供增值服务。

       分层的作用:①更利于标准化;②降低关联性;③便于学习和理解。

应用层、表示层、会话层;传输层、网络层、数据链路层、物理层。

  • 会话层:建立和维持网络应用和网络服务器之间的会话连续。
  • 传输层:实现端到端的传输。

       端口号(port ID):本质是由16位二进制组成,范围:0 - 65535,0作为保留端口,所以端口号的取值范围为1 - 65535。1 - 1023是知名端口号。端口号的作用:区分和标识不同的应用。

  • 数据链路层:逻辑链路控制层(LLC),介质访问控制层(MAC)

       介质访问控制层(MAC)使用FCS(帧校验序列)---- CRC循环冗余算法 ---- 保证数据的完整性(收到的和之前发的数据是一样的)

4.TCP/IP模型(协议簇)

TCP/IP模型:4层 ---- 应用层、传输层、网络层、网络接口层

                      5层 ---- 应用层、传输层、网络层、数据链路层、物理层

TCP/IP模型与OSI模型对比

0784802eb00d4bbe9102b8dc65fe5bbf.png

0cbf0e009bc64f1283b22d04fadfb877.png

2c703e97dd5d489caebbe5a4f29b5c67.png

PDU:协议数据单元

在OSI七层参考模型中:L1PDU、L2PDU……L7PDU

在TCP/IP模型中:

       应用层 ---- 报文;传输层 ---- 段;网络层 ---- 包;数据链路层 ---- 帧;物理层 ---- 比特流

5. 封装和解封装

5.1 应用层

  • HTTP ---- 超文本传输协议 ---- TCP 80端口
  • HTTPS ---- TCP 443端口
  • FTP ---- 文本传输协议 ---- TCP 20/21端口
  • TFTP ---- 简单文件传输协议 ---- UDP 69端口
  • TElNET ---- 远程控制协议 ---- TCP 23端口
  • SSH ---- 远程控制协议 ---- TCP 22端口
  • DNS ---- 域名解析协议 ---- UDP/TCP 53端口
  • DHCP ---- 动态主机配置协议 ---- UDP 67/6

5.2 传输层

封装端口号 ---- TCP(传输控制协议),UDP(用户数据报协议)

TCP和UDP的区别

  • TCP协议是面向连接的协议,UDP协议是无连接的协议;
  • TCP协议传输是可靠的,UDP协议传输“尽力而为”;
  • TCP可以实现流控,UDP不行;
  • TCP可以进行数据分段,UDP不行;
  • TCP消耗资源较大,传输速度较慢;UDP消耗资源较小,传输速度快;

TCP和UDP的使用场景:TCP更适合应用在对效率要求不高,但对准确性要求较高的场景;UDP更适合在对效率要求较高,但对准确性要求较低的场景。

面向连接:数据在传输数据之前,先使用预备的协议建立点到点的连接,之后再传输数据。会话是分方向的。

5.2.1 TCP协议封装的数据结构

TCP头部是可变长头部,因为有一个可选项。TCP头部最短20个字节

51758dc736234d9388c63e764663470b.png

       1. 端口号:源端口号(16位)、目标端口号(16位)

       2. 序号sequence number(32位):Seq序号,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。保证数据传输的有序性。

       3. 确认序号acknowledgement number(32位):Ack序号,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。作用:①确认作用;②表明我下一个想要的数据包的序号

       4. 首部长度(4位):头部有多长,TCP下面有一个选项,使用TCP头部是可变长头部。

       5. 保留(6位):不用管

       6. 标志位Flags(6位):6个,每个标记位只能置0/1

               URG紧急标志位:置1则紧急指针(16位)(urgent pointer)有效。如果有一些需要优先处理的数据,我们把紧急标准位置1,别人一看就知道这个数据是需要优先处理的数据,紧急指针激活相当于标尺,指明这个数据是从哪到哪。

                ACK确认标志位:置1则确认序号有效。

                PSH:置1则表示你的这个数据不需要在缓存区等待直接推给进程。

                RST:重置连接。网络管控、强制断开

                SYN同步请求标志位:置1则发起请求建立一个新连接。

                FIN断开标志位:置1释放一个连接。

       7. 窗口大小(16位)--- 流控机制、校验和(16位,伪头部校验)、紧急指针(16位)

伪头部校验:除了将传输层头部及数据部分的内容进行校验外,还会将网络层中的12个字节(32位源IP,32位目标IP,8位保留,8位的协议,16位的总长度)的数据进行校验 ---- 反码相加法。

5.2.3 UDP数据结构

69d0c3ce03904df0b2d5beb194154e38.png

TCP协议创建连接和断开连接分别是用三次握手机制和四次挥手机制。

5.2.4 三次握手机制

5c5eac4f0a3b4cb589319445644ae256.png

        发送数据前创建连接,由客户端向服务器发送第一个数据包:SYN = 1,seq = x(随机的a发出的),acknumber =0;服务器给客户端发送第二个数据包:ACK = 1,SYN = 1,acknumber = x+1,seq = y(随机值b发出的);客户端给服务器发第三个数据包:ACK = 1,seq = x+1,acknumber = y+1。

5.2.5 四次挥手机制

       数据发完后,客户端A向服务器B发送第一个数据包:FIN = 1,seq = u(数据量);服务器B收到之后数据之后,给客户端A发送第二个数据包:ACK = 1,acknumber = u + 1,此时A指向B的连接就断开了。因为此时B可能还有数据要发,所以B给A发的FIN数据包没有和ACK包一起发。当B的数据发完以后,B给A发第三个数据包:FIN = 1,seq = w;A收到数据之后,给B发出第四个数据包:ACK = 1,seq = u + 1,acknumber = w + 1,此时B指向A的连接就断开了。至此四次挥手就结束了。注:过程中的序号是包含数据量的。

5.2.4 TCP保证传输可靠性

确认机制ACK、重传输机制、排序机制、流控机制

       确认机制:在TCP的首部中有一个标志位——ACK,此标志位表示确认号是否有效。接收方对于按序到达的数据会进行确认,当标志位ACK=1时确认首部的确认字段有效。进行确认时,确认字段值表示这个值之前的数据都已经按序到达了。而发送方如果收到了已发送的数据的确认报文,则继续传输下一部分数据;而如果等待了一定时间还没有收到确认报文就会启动重传机制。

       重传输机制:当报文发出后在一定的时间内未收到接收方的确认,发送方就会进行重传,有一个数据存活最大时间MSL,当超过这个时间时就会重新发送。

       排序机制:TCP会话的每一端都包含一个32位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收,TCP将每个字节的数据都进行了编号。保证可靠性,保证数据的按序到达提高效率,可实现多次发送,一次确认去除重复数据。如图,A有一个1000个字节的数据要发给B,A首先对数据进行分段,首先传输第一段300字节:第一个字节的序号seq=x+2,发出的最后一字节的数据的seq=x+301。当B收到最后一个字节的数据,发出确认,acknumber=x+302;第二段300字节:第一个字节的序号seq=x+302,发出的最后一字节的数据的seq=x+601。当B收到最后一个字节的数据,发出确认,acknumber=x+602;最后一段400字节:第一个字节的序号seq=x+602,发出的最后一字节的数据的seq=x+1001,当B收到最后一个字节的数据,发出确认,acknumber=x+1002。最终通过序号把数据排序,拼成完整数据。

       流控机制(滑动窗口机制):和窗口大小有关。窗口大小表示可以同时发送数据包的数量,确认窗口值是表示能一次性收的数据包的数量。窗口值是一个动态的数据。TCP支持根据接收端的处理能力(窗口值),来决定发送端的发送速度,这个机制叫做流量控制。在TCP报文段首部中有一个16位窗口长度,当接收端接收到发送方的数据后,在应答报文ACK中就将自身缓冲区的剩余大小,放入16窗口大小中。这个大小随数据传输情况而变,窗口越大,网络吞吐量越高,而一旦接收方发现自身的缓冲区快满了,就将窗口设置为更小的值通知发送方。如果缓冲区满,就将窗口置为0,发送方收到后就不再发送数据,但是需要定期发送一个窗口探测数据段,使接收端把窗口大小告诉发送端。

5.3 网络层

IP地址(IP)头部数据结构:

  • 4位版本:指的是IP协议的版本是IPV4;
  • 4位首部长度:标明头部的长度,有选项(可选)所以和TCP头部一样是可变长头部;
  • 8位服务类型(TOS):如果数据包需要做特殊处理,可以把标记打在服务类型上;
  • 16位总长度(字节数):头部加数据的长度;
  • 16位标识(Identification):数据报的唯一标识,同一个数据报的所有分片中具有相同的标识,表示具有相同标识的分片都是同一个数据包的。
  • 3位标志(Flags):该字段长度为3位,它分为三分部分。① 保留位(reserved bit)为0;② 分片位(Don`t fragent)当为1时标识未分片,0则标识被分片;③ 更多位(more fragments)为0标识最后分段,为1标识更多分段。
  • 13位片偏移(Fragment Offset):用来排序,它标识分段在当前数据包的位置,单位为字节;此值 * 8 = 分片相对于原始IP数据报(数据部分)开始处的偏移。(每个分片的数据部分的长度都是8的整数倍)
  • 8位生存时间TTL(Time to Live):不是时间单位,和路由器的转发次数有关。数据包每经过一个路由器的转发,这个TTL值将减1,当这个TTL值为0时,则路由器将不再转发这个数据包,而是直接丢弃。
  • 8位协议:指的上层使用的协议类型,6--TCP,17--UDP,1--ICMP(网络消息控制协议)(ping)
  • 16位首部校验和:由发送端填充,接收端对其使用CRC算法校验IP数据报头部(仅校验头部)在传输过程中是否损坏。

分片:数据包过大时,可以分成几个片段。原因:① 大数据传输出错的话重传很麻烦,② 大数据太大容易造成网络拥堵。③ 数据链路层数据过大无法封装

MTU(以太网Ⅱ型帧):最大传输单元----数据链路层对最大可封装的数据的大小的限制

MSS(TCP):最大段长度。TCP分段时应保证数据部分内容小于最大段长度,理论值最大值为1460字节,这个值需要进行协商,在三次握手中的SYN包中进行协商,如果双方携带的MSS值不一样,则将按小的执行。

5.4 数据链路层

MAC地址 ---- 以太网协议:早期局域网的解决方案,现在在应用在广域网当中,可以理解为有交换机组成的二层网络。

a14d7e91d57d4cbc800a9736ca079f96.png

以太网Ⅱ型帧:封装的数据不能超过1500(默认,可修改)个字节

Preamble前导符:一个标记;Type:表示上层数据使用的协议类型

FCS(帧校验序列):CRC循环冗余算法 ---- 保证数据的完整性

物理层:电信号在传输介质中传播,不需要封装。

5.5 解封装

       物理层:将电信号转化为二进制数据,并将其送至数据链路层。数据链路层:查看MAC地址,地址是自己,就拆掉MAC头部,继续传输;地址不是自己,就丢弃数据。网络层:查看IP地址,地址是自己,就拆掉IP头部,继续传输;地址不是自己,就丢弃数据。传输层:查看TCP头部,判断应该传到哪里,然后重组数据,传输到应用层。应用层:二进制转化为原始数据。数据解封装的过程是数据封装的逆过程。

b0d8e562753f48fd860a587bbc277d9c.png

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Golang_HZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值