1.数据的封装与解封装
其顺序遵循osi七层参考模型
上三层产生数据
第四层:
封装源端口号,目的端口号,和TCP/UDP协议
(传输层数据分段最大段为1480字节)
第三层:
封装原IP和目的IP
第二层:
封装MAC地址和目的......
第一层:
传输电信号.......
解封装:先进行FCS校验,后来逐步解封装(CRC循环冗余校验,对暗号)
2.数据链路层与MAC地址
如果数据进行封装时,基于
E2或者
802.3标准,此时我们称之为一个以太网数据帧。
E2和802.3作用:定义帧头和帧尾的格式。
数据:对于下层的每个层级而言,上层所反馈或者传递给我的信息,下层认为皆是数据。
mac地址:物理地址:网卡地址。
每个设备出厂时,烧录进网卡芯片中。出厂自带
在一个以太网中,标识设备在链路上的什么位置
Ethernet_II:
D.MAC
|
S.MAC
|
Type
|
Date
|
FCS
|
FCS:帧校验序列--算法:CRC循环冗余校验(整体信息)
Type:类型
用于标识上层的协议
发送者动作:
由发送者填充预案mac信息,以及Type字段表示上层协议,以及CRC校验,数值填充至FCS,信息都填充完毕后,此时借助物理层,转变为二进制比特流,从链路中传递。
数据抵达接收端接口以后,接收者的动作:
1.首先看目的MAC,是否是自己的MAC,如果不是丢弃,如果是则进行下一步;
2.将数据也进行CRC校验,比对FCS字段,如果不同则丢弃,相同则进行下一步;
3.查看type字段,交由type字段标识的上层协议处理。
数据链路层工作结束。
E2无法记录私有化协议,
IEEE802.3:
D.MAC
|
S.MAC
|
Length
|
LLC
|
SNAP
|
Data
|
FCS
|
LLC主要用于处理上层协议问题
帧长度字段值:
Length/Type >=1536(0x0600) --
Ethernet_II
Length/Type <=1500(0x05DC
) -- IEEE802.3
![](https://i-blog.csdnimg.cn/blog_migrate/31b804932b23d85097a4e5d8db70e138.png)
MAC地址:
MAC地址独一无二,显示16进制
概念:
1.单播--通信形式上,点对点,单对单的通信
数据封装时,源MAC和目的mac都是单播mac,从高位到地位(从左到右)第8位为0
2.组播--通信形式上,点对多点,单对多的通信,类似于qq群聊
组播mac地址:从高位到低位(从左到右)第8位为1
数据封装时,因为组播代表的是一组的集合,面向一组的通信,此时组播mac不能成为数 据的源地址,仅能充当目的地址。
3.广播--通信形式上,点对所有,单对所有的通信。广而播之,强制的接收处理。
数据封装是。广播mac地址充当目的地址
广播mac地址:从高位到低位48位全部是1。
3.传输层三次握手四次挥手:
TCP是面向连接的协议,通过三次握手建立可靠连接。连接建立完毕之前不会传递数据(先建立连接,再传数据)。先由客户端发送连接请求 SYN,然后由服务器确认收到客户端的报文,并旦发送SYN表示也要和客户端建立连接,最后再由客户端确认连接(发送ACK)。所以是三次握手。
TCP关闭连接时需要四次握手,先由容户端发送断开请求FIN,主机在关闭连接之前,要确认收到来自对方的ACK,然后服务器向容户端发送FIN,最后容户端确认后再发送一个ACK,所以为四次挥手。总的来说因为当服务器收到客户端的SY连接请求报文后,可以直接发送SYN+ACK。其中ACK是用来应答的,SYN是用来同步的。但是关闭连接时,当服务器收到FIN时,并不会立即关闭,所以只能先回复一个ACK,告诉客户端,“你发的FIN我收到了”。只有等到我服务器所有的报文都发送完了,我才能发送FIN,因此不能一起发送。故需要四步握手。
TCP关闭连接时需要四次握手,先由容户端发送断开请求FIN,主机在关闭连接之前,要确认收到来自对方的ACK,然后服务器向容户端发送FIN,最后容户端确认后再发送一个ACK,所以为四次挥手。总的来说因为当服务器收到客户端的SY连接请求报文后,可以直接发送SYN+ACK。其中ACK是用来应答的,SYN是用来同步的。但是关闭连接时,当服务器收到FIN时,并不会立即关闭,所以只能先回复一个ACK,告诉客户端,“你发的FIN我收到了”。只有等到我服务器所有的报文都发送完了,我才能发送FIN,因此不能一起发送。故需要四步握手。
所以为什么要四次握手呢??
TCP连接是全双工的,因此每个方向都必须单独进行关闭:当一方完成它的数据发送任务后就发送一个FIN来终止这个方向的连接,对端收到后回复一个ACK报文,这样双向就需要四次交互。