目录
·当pc1欲断开tcp连接时,发送了FIN置位、ACK置位的请求。
·pc2继续将为传完的数据包,传完。回复FIN置位、ACK置位的包。
·pc1收到对端也可以断开的消息后,最后给pc2发送ack置位的确认消息。
5)标识符:用于标识同一个数据包的一组分片, 区别不同的数据包的分片。
6)flag标志位:(3bit)标识该数据包后面是否还有数据包。
7)片偏移量:该分片与第一个分片的距离,将数据包有序的组装。
8) TTL:生存时间,一定程度上起到防环作用(三层网络)。
TTL值每经过一台路由器(三层设备),TTL值-1,TTL值默认为255,当TTL值为0时,则丢弃该数据
一、传输层
1.TCP的关闭四次挥手
SYN置位:TCP建立连接
FIN置位:TCP断开连接
四次挥手的作用:做到妥善的tcp关闭(在收到对方要断开tcp连接的请求时,如果还有数据未传,会将自己目前传输的数据传完,再断开)
如图,
·当pc1欲断开tcp连接时,发送了FIN置位、ACK置位的请求。
“我想要断开连接啦~~”
·pc2收到请求后回馈,回复一个ACK置位的包。
“好的,我知道了,我看看还有没有没有传完的数据。。”
·pc2继续将为传完的数据包,传完。回复FIN置位、ACK置位的包。
“ok,我已经传完数据了,现在可以断开连接了”
·pc1收到对端也可以断开的消息后,最后给pc2发送ack置位的确认消息。
“收到,我已经断开tcp连接啦~~”
TCP完整的建立、传输、断开过程如图
二、网络层 (数据包)
1.网络层
2.ipv4报文格式
1)版本号:ipv4 或 ipv6
2)header:包头长度20-60字节
3)服务类型:各种服务
4)总长度:如下
5)标识符:用于标识同一个数据包的一组分片, 区别不同的数据包的分片。
例如,我同时下载qq、微信两个软件,用标识符来标识,哪些数据是qq的,哪些是微信的。
6)flag标志位:(3bit)标识该数据包后面是否还有数据包。
R:保留不用
DF:不分片位。当DF=1,不分片;当DF=0,分片;
MF:当MF=1,表示后面还有数据谣传
当MF=0,表示已经传完,该数据包是最后一个数据包,后面没有数据包了。
7)片偏移量:该分片与第一个分片的距离,将数据包有序的组装。
例如,我下载完一个qq软件,下载的数据包都是零零散散在我的电脑终端,在安装的时候,就需要一个组装顺序,排列起来,形成一个完整的软件,片偏移量就是这作用。(就像是玩乐高积木,有一个操作顺序,告诉你第一步,第二步、、、)
8) TTL:生存时间,一定程度上起到防环作用(三层网络)。
TTL值每经过一台路由器(三层设备),TTL值-1,TTL值默认为255,当TTL值为0时,则丢弃该数据
9)协议号:代表上层(传输层)的协议类型。
ICMP--1
IGMP--2
TCP--6
UDP--17
10)首部校验和:校验ip首部的完整性 (是否有损坏)
3.网络层协议工作过程
路由表: 每台路由器都有一张路由表,路由表就是它的地图,上面有的都能去。
路由器转发数据时,不关心源IP地址,只根据目的地址进行转发。
三、数据链路层 (数据帧)
1.数据链路层
2.MAC地址
MAC地址:全球唯一,刻在网卡里的
mac地址:48bit(6字节)
前24bit有国际组织分配厂商
后24bit由厂商自行分配
3.以太网帧格式
type代表上层用的是什么协议
例如:0x0806 ARP协议
0x0800 IP协议
用户数据=IP头部+传输层头部+原始数据PDU
每一层的PDU代表的意思是不一样的
单播
第八位为0
单播Mac地址:可以被用于源目Mac地址,用于一对一通信,第八个bit固定为0,则代表第二个16进制数字永远为偶数。
广播
全F,都为1
广播Mac地址:48bit全为1(FFF)代表该帧为广播帧,不能被用于源Mac地址
组播
第八位为1,也就是说第一个字节必为奇数(例如:01-80-C2-00-00-01)
组播地址:第八个bit固定为1,则代表第二个16进制数字永远为奇数
数据帧的目的mac地址要与IP地址对应,当DMAC地址与ip地址不一致时,则丢弃该数据帧