数据链路层:

Mac地址、Ip地址以及ARP协议:

Mac地址:

  • 当多个主机联系在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识符号,即数据库链路的地址

  • 在每个主机发送的帧中必须要携带标识发送主机和接受主机的地址。由于这类主机是用于媒体接入控制MAC(Media Access Control),因此被称为mac地址

image-20220223204638158

上图中D为目的地址,C为源地址,由发送主机往目的主机发送地址,判断是否符合

image-20220223204914786

一般情况下用户主机包含两个网络适配器:有线局域网适配器(无线网卡)和 无线网局域适配器(无线网卡)。每个适配器都有全球唯一的MAC地址。而交换机往往拥有更多的接口。因此MAC地址是对网络上个接口的唯一标识,而不是对网络设备的唯一标识

单播MAC地址举例:

image-20220223205949186

广播地址:

image-20220223211129873

image-20220223211316314

ip地址:

作用:

​ IP地址是因特网上的主机和路由使用的编号,用于标识两个部分‘

网络标号以及主机编号: 网络编个号

image-20220223211911748

从网络体系结构看IP地址与MAC地址

image-20220223212039833

image-20220223213259193

源ip地址和目的ip地址保持不变

数据包转发:数据包转发过程中源MAC地址和目的MAC地址逐个链路改变

image-20220223214336395

image-20220223215138265

网络层:

主要任务:

是实现网络互连,实现数据包各个网络之间的传输,实现主机与主机之间的通信,也叫点对点(end to end)通信

解决问题

  • 网络层向运输层提供怎样的服务(是可传输的还是不可传输的)

  • 网络寻址问题

路由选择问题:

  • 路由器收到数据包之后从哪个接口转发出去呢(数据包中的目的地址和路由器中的路由表)

​ 那么路由是如何进行选择的呢(路由选择协议 与人工设置问题)

image-20220301225601199

因特网(Internet)是目前全世界数量最多的互联网,使用TCP/IP 协议栈,四层模型

TCP/IP协议栈中的网络层使用的是网际协议IP 是整个协议栈的核心协议

image-20220301230627924

网际控制报文协议ICMP,网际组管理协议IGMP 地址解析协议

网络层提供的两种服务:

image-20220301231816542

IPv4地址概述:

IPv4地址就是因特网上的每一台主机或者路由器的每一个接口分配一个在全世界内的唯一32比特的标识符。主要禁经过了 以下三个阶段

image-20220409093013965

因为32位的IPv4地址不方便阅读、记录以及输入等,所以采用点分十进制表示方法以便用户使用。将八个比特分为一组

image-20220409095944439

总共大小为255

image-20220301232618183

分类编址的IPv4地址

最小网络号0,保留不指派

image-20220409100702062

image-20220409100719435

划分子网的IPv4的地址

为什么要划分子网?子网掩码的作用是什么?

子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分.

用来判断任意两台计算机的IP地址是否属于同一子网络的根据.

image-20220409092334712

运输层:

运输层概述:

运输层直接为应用进程间的逻辑通信提供服务, 就是负责向两台主机进程之间的通信提供通用的数据传输服务,所谓复⽤就是指多个应⽤层进程可同时使⽤下⾯运输层的服务,分⽤和复⽤相反, 是运输层把收到的信息分别交付上⾯应⽤层中的相应进程。

运输层主要使用以下两种协议:

传输控制协议TCP(Transmission Control Protocol): 提供面向连接的,可靠的数据传输服务

用户数据协议UDP(User Datagram Protocol):提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)

UDP支持单播、多播以及广播

TCP仅支持单播,因为需要三个握手建立连接,是TCP的

D

image-20220409115208037

image-20220409110554865

运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。沿着虚线进行数据船体

运输层端口号、复用与分用的概念

运行在计算机上的进程使用进程标识符PID来标志。

TCP的三次握手各字段(ack,seq,ACK,SYN)是什么意思?

情景模拟 1.0

发送方:老铁,可以听得到我说话吗,老铁。

接收方:可以听到,你听得到吗?

发送方:听到了,那我开始说正事了。

这个故事是用来模拟TCP三次握手的,也是在所有通俗解释三次握手的典型例子。

三次握手图示

img

三次握手过程解释
三次交换数据的过程细节先不看,从客户端、服务器状态进行解释。

状态变化:

  • 客户端和服务器同时属于closed状态,表示没有连接关系。
  • 客户端发送请求,客户端打开发送(SYN-sent)状态,同时服务器打开监听(Listen)状态;
  • 服务器在接收到客户端的请求时,服务器切换为回复(SYN-recvd)状态;
  • 客户端在接收到服务器的响应时,客户端切换为稳定连接(Estab-lished)状态的同时发送第二次数据包。
  • 服务器在接收到客户端的第二次数据时,服务器切换为稳定连接(Estab-lished)状态。
  • 双方建立稳定连接后,开始正常通信数据。
    重要字段
    过程了解之后,就应该知道其传输的字段是什么意思了。如下是其中重要的字段。

序号(sequence number):seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

确认号(acknowledgement number):ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。

标志位(Flags):共6个,即URG、ACK、PSH、RST、SYN、FIN等。具体含义如下:

URG:紧急指针(urgent pointer)有效。

ACK:确认序号有效。(为了与确认号ack区分开,我们用大写表示)

PSH:接收方应该尽快将这个报文交给应用层。

RST:重置连接。

SYN:发起一个新连接。

FIN:释放一个连接。

那么这些字段有什么作用呢?

seq序号、ack序号:用于确认数据是否准确,是否正常通信。

标志位:用于确认/更改连接状态。

简简单单的解释字段含义
通过上面的解释,大多数人(我才不会说我也是)并不能理解这些字段在其中到底存在什么意义,为什么一定要这么多数据进行交换,他们的意义又是什么,所以我把它转换成了正常人交流版。

三次握手图示

在这里插入图片描述

情景模拟 2.0

下述为各标签的作用,根据标点符号相互的对应。

第一次握手:你能和我建立连接吗,可以接受到我的数据吗。

SYN = 1 ,seq = x

第二次握手:可以建立连接,我接受到你的请求了,能接受到我的数据吗,你的数据是这个吗

SYN = 1 ,ACK = 1 ,seq = y ,ack = x + 1

第三次握手:我已经收到你的回复,这是我的数据,这是你的数据(用于再次核对)

ACK = 1 ,seq = x + 1 ,ack = y + 1

建立连接成功。

总结

就这样,把标签解释的很简单了,这样在回头去看字段的正常解释,就很简单理解啦~

各字段在TCP三次握手中的作用:

SYN:用于建立连接。

ACK:用于确定收到了请求。

seq:发送自己的数据。

ack:发送接收到的对方的数据。